Erreur de configuration JSF ejb3 et richFaces
bonjour, je dois réaliser un site web en J2EE dans le cadre de mes études.
J'ai choisit d'utiliser Seam-gen afin de me créer un projet eclipse qui me permet d'utiliser le framework JBosse Seam avec JSF, EJB3 et la persistence avec JPA.
J'utilise une base de donnée MySQL 5.0.
J'ai réussi à créer le projet sans difficulté. Lorsque que je lance le serveur JBoss, aucun problème, mon projet fonctionne puisque je peux voir une page de présentation sur le navigateur.
http://localhost:8080/reference/home.seam
Lorsque je décide de développer mon site je rencontre des erreurs de config (enfin je pense) dont je suis incapable de résoudre.
J'ai commence par créer le login :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
package session;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.log.Log;
import org.jboss.seam.security.Identity;
@Name("authenticator")
@Stateless
public class Authenticator implements Iauthenticator
{
@SuppressWarnings("unused")
@PersistenceContext(unitName="reference")
protected EntityManager em;
@Logger Log log;
@In Identity identity;
public boolean authenticate()
{System.out.println("je suis dans la methode authenticator");
log.info("authenticating #0", identity.getUsername());
/*
List results = em.createQuery("select u from utilisateur u where u.username=#{identity.username} and u.password=#{identity.password}")
.getResultList();
if ( results.size()==0 )
{
return false;
}
else
{
user = (Utilisateur) results.get(0);
return true;
}*/
identity.addRole("admin");
return true;
}
} |
avec l'entity utilisateur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
package entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import org.hibernate.validator.Length;
import org.hibernate.validator.Pattern;
import org.jboss.seam.annotations.Name;
import com.sun.istack.internal.NotNull;
@Entity
@Name("user")
@Table(name = "UTILISATEUR")
public class Utilisateur implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String iduser;
private String password;
private String role;
public Utilisateur() {
super();
}
public Utilisateur(String id, String pass, String role){
super();
this.setIduser(id);
this.setPassword(pass);
this.setRole(role);
}
@Id
@Length(min=4, max=15)
@Pattern(regex="^\\w*$", message="not a valid username")
@Column(name="iduser")
public String getIduser() {
return this.iduser;
}
public void setIduser(String iduser) {
this.iduser = iduser;
}
@NotNull
@Length(min=5, max=15)
@Column(name="PASSWORD")
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
@NotNull
@Column(name="ROLE")
public String getRole() {
return this.role;
}
public void setRole(String role) {
this.role = role;
}
} |
et voici la page JSF
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component"
template="layout/template.xhtml">
<ui:define name="body">
<h:messages styleClass="message"/>
<ice:form id="loginFormId">
<ice:panelGroup id="loginPanelGroupId" styleClass="formBorderHighlight">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="iceDatTblColHdr2">
<ice:outputText id="loginTextId" value="Login"/>
</td>
</tr>
</table>
<p>Please login using any username and password</p>
<div class="dialog">
<h:panelGrid id="loginPanelGridId" columns="2" rowClasses="prop" columnClasses="name,value">
<h:outputLabel for="username">Username</h:outputLabel>
<h:inputText id="username"
value="#{identity.username}"/>
<h:outputLabel for="password">Password</h:outputLabel>
<h:inputSecret id="password"
value="#{identity.password}"/>
<h:outputLabel for="rememberMe">Remember me</h:outputLabel>
<h:selectBooleanCheckbox id="rememberMe"
value="#{identity.rememberMe}"/>
</h:panelGrid>
</div>
</ice:panelGroup>
<div class="actionButtons">
<h:commandButton id="loginButtonId" value="Login" action="#{identity.login}"/>
</div>
</ice:form>
</ui:define>
</ui:composition> |
Voici alors les messages d'erreurs que j'obtiens lorsque je veux déployer le projet ::
Citation:
ObjectName: jboss.j2ee:jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJ
B3
State: FAILED
Reason: java.lang.NullPointerException
ObjectName: jboss.j2ee:ear=reference.ear,jar=jboss-seam.jar,name=TimerServiceDis
patcher,service=EJB3
State: FAILED
Reason: java.lang.NullPointerException
ObjectName: jboss.j2ee:ear=reference.ear,jar=reference.jar,name=Authenticator,se
rvice=EJB3
State: FAILED
Reason: java.lang.NullPointerException
I Depend On:
persistence.units:ear=reference.ear,jar=reference.jar,unitName=reference
--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.jca:service=DataSourceBinding,name=DefaultDS
State: NOTYETINSTALLED
Depends On Me:
jboss.ejb:service=EJBTimerService,persistencePolicy=database
jboss:service=KeyGeneratorFactory,type=HiLo
jboss.mq:service=StateManager
jboss.mq:service=PersistenceManager
ObjectName: jboss.j2ee:ear=reference.ear,jar=jboss-seam.jar,name=TimerServiceDis
patcher,service=EJB3
State: FAILED
Reason: java.lang.NullPointerException
ObjectName: jboss.j2ee:ear=reference.ear,jar=reference.jar,name=Authenticator,se
rvice=EJB3
State: FAILED
Reason: java.lang.NullPointerException
I Depend On:
persistence.units:ear=reference.ear,jar=reference.jar,unitName=reference
ObjectName: jboss.j2ee:jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJ
B3
State: FAILED
Reason: java.lang.NullPointerException
je ne vois pas trop le problème. Je n'ai pas touché les fichiers de configuration (Web.xml ....) puisque tout est bien configuré en utilisant seam-gen (mais bon biensur rien n'est sur...).
WEB.XML ::
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Seam (using Icefaces) generated project-->
<!-- listeners required for this application -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<listener>
<listener-class>com.icesoft.faces.util.event.servlet.ContextEventRepeater</listener-class>
</listener>
<!-- filters -->
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<!-- Facelets development mode (disable in production) -->
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.actionURLSuffix</param-name>
<param-value>.seam</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.synchronousUpdate</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.doJSFStateManagement</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.icesoft.examples.serverClock</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.standardRequestScope</param-name>
<param-value>true</param-value>
</context-param>
<!-- servlets -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>Persistent Faces Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<servlet>
<servlet-name>Blocking Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>/xmlhttp/*</url-pattern>
</servlet-mapping>
<!-- Blocking Servlet Mapping -->
<servlet-mapping>
<servlet-name>Blocking Servlet</servlet-name>
<url-pattern>/block/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>
<security-constraint>
<display-name>Restrict raw XHTML Documents</display-name>
<web-resource-collection>
<web-resource-name>XHTML</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>NONE</role-name>
</auth-constraint>
</security-constraint>
</web-app> |
persistence.xml ::
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="reference">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/referenceDatasource</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/referenceEntityManagerFactory"/>
</properties>
</persistence-unit>
</persistence> |