Bonjour à tous, voici mon premier Post ici.
Enfin bref, je suis en train de faire un projet de site commercial en ligne.
J'ai décidé d'organiser mon appli comme ceci:
_ Une machine serveur avec mon conteneur EJB3 (Jonas+EasyBeans) ainsi que ma BDD mysql
_ une machine avec mon serveur Tomcat contenant les servlets appelées par les JSP, et devant appeler des méthodes de mes EJB distantes.
Le soucis est que je n'arrive à connecté ma servlet aux EJB distantes.
Je ne sais pas trop comment procéder, donc je tripatouille un peu comme je peux à partir diffèrentes sources rencontrées.
Voici comment je procéde:
dans ma servlet voici le bout de code censé faire la connexion à mon serveur Jonas (obit est le nom de ma machine sur lequel est mon serveur Jonas):
Ca bug au niveau de la ligne verte...
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 Properties ppt = null; Context ctx = null; EcomAdminRemote remote = null; try { ppt = new Properties(); ppt.put(Context.INITIAL_CONTEXT_FACTORY, "org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory"); ppt.put(Context.PROVIDER_URL, "rmi://obit:1099"); ctx = new InitialContext(ppt); ctx.lookup("javax.transaction.UserTransaction"); remote = (EcomAdminRemote) ctx .lookup("ecom.beans.EcomAdminBean_" + EcomAdminRemote.class.getName() + "@Remote"); remote.createAccount( "Lulu", 100.00); } catch (Exception e) { e.printStackTrace(); }
Voici l'interface de mon bean présent sur les 2 machines:
Mais quand j'exècute ma servlet j'ai une exception que je ne comprends pas du tout:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 package ecom.beans; import java.rmi.Remote; public interface EcomAdminRemote extends Remote{ void createAccount( String accountOwner, double balance); void createProductStore(int productStoreId, String city, int productStoreAccountId, String productStoreName); void createProduct(int productId, String productName, double productPrice, int productStoreId, String city); // to be completed as needed }
Par ailleurs, est ce que je dois définir quelquechose dans le web.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 java.lang.ClassCastException: javax.naming.Reference cannot be cast to ecom.beans.EcomAdminRemote at ecom.compte.ServletInscription.doPost(ServletInscription.java:52) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja va:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
Je me doute que c'est vraiment mal fait, donc j'espère que vous pourriez me remettre sur la bonne voie!
Merci d'avance.
Partager