08. marts 2003 - 19:11Der er
29 kommentarer og 1 løsning
JBoss/Tomcat i JBuilder 8 (JNDI lookup)
Jeg har et problem med min JNDI lookup fra min servlet på Webserver (Tomcat 4.0). Den skal lookup en bean på appServer (JBoss 3.2.0 RC2). Den kaster følgende exception:
javax.naming.CommunicationException. Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments;
Du kan enten lave en: WEB-INF/classes/jndi.properties med de 3 linier eller hardcode med: System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces"); System.setProperty("java.naming.provider.url", "localhost:1099");
Det foregår på den måde at Tomcat indeholder html sider og en jsp side. Fra html siden kaldes til servletten. Der senere skal dirigere videre til en jsp side som klient får tilbage på sit request.
Jeg kører html siden inde fra JBuilder og sender mit request, der går den ned under init() metoden i servletten. som sagt JNDI lookup!
hm - bare lige en strøtanke - implementerer bønnen Serializable-interfacet? Det er jo en "java.rmi.UnmarshalException: error unmarshalling arguments", så noget kunne tyde på at den ikke kan lave objekterne om.
ok - den eneste grund til at jeg nævner det er at jeg på et tidspunkt også fik en unmarshalException og der var det pga jeg prøvede at overføre objekter som ikke implementerede Serializable-interfacet - men det var under WebLogic (erfaringen siger mig at jeg ikke bør drage Arnes indlæg i tvivl, til trods for Descartes dicto om at man bør tvivle om alt :-) ).
Hvis vi deler en EJB interaktion op i 3 dele: home = JNDI lookup bean = home.create/find bean.xxxx så er manglende serializable også en glimrende forklaring, hvis man får fejlen på en af de sidste to operationer.
public class ControllerServlet extends HttpServlet { private CustomerRemoteHome home = null; private String jndiName = "ejb/CustomerRemote";
//Initialize global variables public void init() throws ServletException { try { //get naming context Context context = new InitialContext(); System.out.println("Context ok!");
//look up jndi name Object ref = context.lookup(jndiName); System.out.println("Lookup ok!");
//look up jndi name and cast to Home interface home = (CustomerRemoteHome) PortableRemoteObject.narrow(ref, CustomerRemoteHome.class); System.out.println("JNDI Ok!"); } catch (Exception e) { System.out.println("Catched Exception"); e.printStackTrace(); } }
Hvis du stadig er interesseret i at hjælpe mig: må du gerne maile mig: postmaster@theemann.dk
Men ellers får du her dine velfotjente points...! :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.