Je suis entrain d'apprendre à programmer des ejbs et plus particulièrement des EJB entity CMP 2.x avec websphere 6. et pour l'instant je me casse la tête dessus sans trouver de solution. J'ai suivi toutes les instructions pour créer une tel ejb. (j'utilise éclipse J2EE).
je dispose de 4 classes :
mon EJB doit accéder à une base de données MySQL qui possède un nom JNDI dans mon serveur : jdbc/mysqlNico
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 User UserHome UserBeam UserPK
voici le contenu de mon ejb-jar.xml :
tout ceci est contenu dans une archive JAR pour ejb que j'ai déployé dans mon application, websphere.
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 <?xml version="1.0" encoding="UTF-8"?> <ejb-jar id="ejb-jar_ID" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1"> <description>Mon premier EJB simple</description> <display-name>AzurMenuiserieEJB</display-name> <enterprise-beans> <entity id="ContainerManagedEntity_1"> <description>User CMP 2.0</description> <display-name>User1 access CMP 2.0</display-name> <ejb-name>User1</ejb-name> <local-home>com.nico.user2x.UserHome</local-home> <local>com.nico.user2x.User</local> <ejb-class>com.nico.user2x.UserBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>com.nico.user2x.UserPK</prim-key-class> <reentrant>false</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>user1</abstract-schema-name> <cmp-field> <field-name>userid</field-name> </cmp-field> <cmp-field> <field-name>firstname</field-name> </cmp-field> <cmp-field> <field-name>lastname</field-name> </cmp-field> <cmp-field> <field-name>login</field-name> </cmp-field> <cmp-field> <field-name>password</field-name> </cmp-field> </entity> </enterprise-beans> <assembly-descriptor> <method-permission> <description>User1 permissions</description> <unchecked/> <method> <ejb-name>User1</ejb-name> <method-name>*</method-name> </method> </method-permission> </assembly-descriptor> </ejb-jar>
J'essaye d'accéder à cet ejb via un JSP contenu dans un module Web.
voici son web.xml :
pour accèder à mon ejb, je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_ID" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>NicoWeb</display-name> <welcome-file-list> ... </welcome-file-list> <ejb-local-ref id="EjbRef_1126088135893"> <ejb-ref-name>User1</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <local-home>com.nico.user2x.UserHome</local-home> <local>com.nico.user2x.User</local> </ejb-local-ref> </web-app>
Et là, ça plante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Context ctxt=new InitialContext(); Object objref=ctxt.lookup("User1");
bref, il n'a pas l'air de trouver mon EJB alors qu'il est bien présent dans la liste de mes ejb dans ma console d'admin avec le nom : User1EJB error : Context: geoNode01Cell/nodes/geoNode01/servers/server1, name: User1: First component in name User1 not found.
com.ibm.ws.naming.jndicos.CNContextImpl.processNotFoundException(CNContextImpl.java:4394)
com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1784)
com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1737)
com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1444)
com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1324)
com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:144)
javax.naming.InitialContext.lookup(InitialContext.java:361)
com.ibm._jsp._test._jspService(_test.java:94)
com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:88)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:117)
com.ibm.ws.jsp.webcontainerext.JSPExtensionServletWrapper.handleRequest(JSPExtensionServletWrapper.java:171)
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
J'ai testé plein de possibilités : rien ne marche. Je ne sais plus quoi faire. Est-ce que quelqu'un saurait-il s'il me manque qqc?
Merci pour tous conseils?
Majenior
[Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java
Partager