Bonjour
J'ai besoin de votre aide svp
Ca fait plusieurs jours que j'essaie de créer ma première application j2ee ejb3
Mais je n'arrive pas à deployer mon stateless (je ne le vois pas dans JNDIview)
J'ai installé mysql et Jboss 4.0.5 GA (avec le jar)
Voici le code de mon application
AddUserServler.java
UserBean.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package servlet; import java.io.IOException; import java.io.*; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServlet; import javax.naming.InitialContext; import javax.naming.Context; import java.util.Properties; import java.util.*; import ejb.User; import ejb.UserBean; import ejb.UserLocal; public class AddUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // get parameters UserLocal userLocal;int i=0; RequestDispatcher rd = null; try{ final Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); env.put(Context.PROVIDER_URL, "localhost:1099"); Context ctx = new InitialContext(env); userLocal = (UserLocal)ctx.lookup("UserBean/local"); User user = new User(); user.setNom(request.getParameter("nom")); User newUser = userLocal.createUser(user); i=newUser.getId(); if(i > 0) { rd = request.getRequestDispatcher("userAdded.jsp"); } else { rd = request.getRequestDispatcher("userNotAdded.jsp"); } }catch(Exception e){rd = request.getRequestDispatcher("erreur.jsp");e.printStackTrace();} rd.forward(request, response); } }
UserLocal.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package ejb; import javax.persistence.EntityManager; import javax.ejb.Stateless; import javax.persistence.PersistenceContext; @Stateless public class UserBean implements UserRemote, UserLocal{ @PersistenceContext (unitName = "UserDS") protected EntityManager em; public User createUser(User user){ em.persist(user); return user; } }
UserRemote.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 package ejb; import javax.ejb.Local; @Local public interface UserLocal{ User createUser(User user); }
User.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 package ejb; import javax.ejb.Remote; @Remote public interface UserRemote{ User createUser(User user); }
persistence.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package ejb; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Id; import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @Entity @Table(name = "t_user") public class User{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @Column(nullable = false, length = 45) private String nom; public User(){} public int getId(){ return id; } public String getNom(){ return nom; } public void setId(int id){ this.id = id; } public void setNom(String nom){ this.nom = nom; } }
User-ds.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 < xml version="1.0" encoding="UTF-8"?> <persistence version="1.0"> <persistence-unit name="UserDS"> <jta-data-source>java:/UserDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="create-drop"/> </properties> </persistence-unit> </persistence>
La structure de mon ear :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?xml version="1.0" encoding="UTF-8"?> <!-- $Id: mysql-ds.xml 41016 2006-02-07 14:23:00Z acoliver $ --> <!-- Datasource config for MySQL using 3.0.9 available from: http://www.mysql.com/downloads/api-jdbc-stable.html --> <datasources> <local-tx-datasource> <jndi-name>UserDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/test1</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>password</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <!-- should only be used on drivers after 3.22.1 with "ping" support <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name> --> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> --> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
+-hellouser.ear
| +-lib
| | +-ejb.jar
| | +-ejb
| | | +-User.class
| | | +-UserBean.class
| | | +-UserLocal.class
| | | +-UserRemote.class
| | +-META-INF
| | | +-ejb-jar.xml
| +-helloear.war
| | +-WEB-INF
| | | +-classes
| | | | +-servlet
| | | | | +-AddUserServlet.class
| | | +-web.xml
| | +-*.jsp
| +-META-INF
| | +-application.xml
En fait, j'ai l'erreur a l'exécution :
javax.naming.NameNotFoundException: UserBean not Bound
Je ne vois même pas UserBean dans le JNDI View
Vous pouvez m'aider svp car je vais finir par m'arracher les cheveux
Merci de me lire





Répondre avec citation




Partager