Communication à partir d'une Servlet
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):
Code:
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();
} |
Ca bug au niveau de la ligne verte...
Voici l'interface de mon bean présent sur les 2 machines:
Code:
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
} |
Mais quand j'exècute ma servlet j'ai une exception que je ne comprends pas du tout:
Code:
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) |
Par ailleurs, est ce que je dois définir quelquechose dans le web.xml??
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.