ejb@glassfish.java.net

Re[2]: Connecting to Glassfish from remote web container

From: AKostylev <akostylev_at_ipian.kazan.ru>
Date: Wed, 9 Aug 2006 10:29:36 +0400


I've done what you had written. So now in my resin.conf is:

               <jndi-link>

                 <jndi-name>java:comp/env/ejb</jndi-name>

                 <factory>com.sun.enterprise.naming.SerialInitContextFactory</factory>

                 <init-param org.omg.CORBA.ORBInitialHost="localhost"/>

                 <init-param org.omg.CORBA.ORBInitialPort="3700"/>

                         <init-param java.naming.factory.url.pkgs="com.sun.enterprise.naming"/>

                          <init-param java.naming.factory.state="com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"/>

               </jndi-link>

But I get the same exception when making:

                       Context ic = (Context)new InitialContext().lookup("java:comp/env/ejb");

                       Object object = ic.lookup(Converter.class.getName());


Exception is:


java.lang.NullPointerException

       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

       at java.lang.reflect.Method.invoke(Method.java:585)

       at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:305)

       at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:61)

       at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)

       at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:314)

       at _jsp._test__jsp._jspService(test.jsp:30)

       at com.caucho.jsp.JavaPage.service(JavaPage.java:60)

       at com.caucho.jsp.Page.pageservice(Page.java:570)

       at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:175)

       at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)

       at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)

       at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)

       at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)

       at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)

       at com.caucho.util.ThreadPool.run(ThreadPool.java:433)

       at java.lang.Thread.run(Thread.java:595)




>

AKostylev wrote:


Thank you for your answer. It helped a lot. So I've done all that is written in the paghttp://www.caucho.com/resin-3.0/ejb/corba-client.xtp. To make it work I needed: appserv-deployment-client.jar appserv-launch.jar appserv-rt.jar j2ee.jar javaee.jar. I put                <jndi-link>                  <jndi-name>java:comp/env/ejb</jndi-name>                  <factory>com.sun.enterprise.naming.SerialInitContextFactory</factory>                  <init-param org.omg.CORBA.ORBInitialHost="localhost"/>                  <init-param org.omg.CORBA.ORBInitialPort="3700"/>             

To bootstrap the appserver's naming service this way you'll need to ensure that all the properties that are contained within our jndi.properties file are set in your InitialContext.  Here's what our jndi.properties looks like :


---------

java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory

java.naming.factory.url.pkgs=com.sun.enterprise.naming

# Required to add a javax.naming.spi.StateFactory for CosNaming that

# supports dynamic RMI-IIOP.

java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactor

yImpl

---------


You've already got the SerialInitContextFactory set, so try adding :


  <init-param java.naming.factory.url.pkgs="com.sun.enterprise.naming"/>

  <init-param java.naming.factory.state="com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"/>


in resin.conf. And then I created a context: Context ic = (Context)new InitialContext().lookup("java:comp/env/ejb"); So when I made <%        NamingEnumeration<NameClassPair> values = ic.list("");        while (values.hasMore())        {                %>                <%=values.next().getName()%>                <%        } %> I got: "ejb env ru.amfitel.j2ee5.ejbtest.Converter ru.amfitel.j2ee5.ejbtest.Converter#ru.amfitel.j2ee5.ejbtest.Converter UserTransaction __SYSTEM jdbc ru.amfitel.j2ee5.ejbtest.Converter__3_x_Internal_RemoteBusinessHome__" So ru.amfitel.j2ee5.ejbtest.Converter was what I need. But when I made Object object = ic.lookup(Converter.class.getName()); I got such exception: java.lang.NullPointerException        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)        at java.lang.reflect.Method.invoke(Method.java:585)        at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:305)        at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:61)        at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:314)        at _jsp._test__jsp._jspService(test.jsp:30)        at com.caucho.jsp.JavaPage.service(JavaPage.java:60)        at com.caucho.jsp.Page.pageservice(Page.java:570)        at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:175)        at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)        at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)        at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)        at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)        at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)        at com.caucho.util.ThreadPool.run(ThreadPool.java:433)        at java.lang.Thread.run(Thread.java:595)

Hi,   

  

Recently I saw something on the Resin website concerning J2EE Reference implementation from Sun and I believe it works fine to do the same with glassfish. The fact that it does not work from within glassfish is probably that Resin itself also has its JNDI properties loaded. So it does the lookup in its own JNDI server, not the one from glassfish

  

Anyway I searched the url and here it is using corba for communication:   

  

http://www.caucho.com/resin-3.0/ejb/corba-client.xtp   

  

Correct me if it should be done in a different way (knowing Resin also has its own stuff via JNDI, so that has precedence I suppose if you give no properties to the InitialContext constructor).  

  

Just let me know if this solved your problem.   

  

Best regards,   

  

Christof   

 

AKostylev wrote:   

I put appserv-rt.jar at web-inf/lib and there is no other appserv-rt.jar at web server. So problem is that when using: Context ic = (Context)new InitialContext(); Object object = ic.lookup(Converter.class.getName()); object is null referenc

      Hello, Is appserv-rt.jar still in your classpath? The no-arg constructor for InitialContext works because of a jndi.properties file within appserv-rt.jar, do you possible have another one that is getting picked up? Not sure what would happen if that's the case. What is the stack trace your are getting? -Chase AKostylev wrote: Hello, Kenneth. Thank you for your answer. I'm trying to connect to Session bean placed at Glassfish from Resin. So those stand-alone client steps fro FAQ are working for console application, but not for web application placed at Resin web container. So what I'm trying to do: Context ic = (Context)new InitialContext(); Object object = ic.lookup(Converter.class.getName()); So as I said, this code is working when launching at standalone console application but not at jsp page at Resin web container. What should I do AKostylev wrote:     Hello. How should I connect to Session bean at Glasshfish from remote web container (for example. Resin)? Methods for standalone client are not workin for this case. Do you mean you tried the stand-alone client steps outlined in the EJB FAQ and encountered an error? If so, can you post the details. Thanks.     --ken       mailto:akostylev@ipian.kazan.ru --------------------------------------------------------------------- To unsubscribe, e-maiejb-unsubscribe@glassfish.dev.java.net For additional commands, e-mail:ejb-help@glassfish.dev.java.net      

 

--------------------------------------------------------------------- To unsubscribe, e-mail:ejb-unsubscribe@glassfish.dev.java.net For additional commands, e-mail:ejb-help@glassfish.dev.java.net   







-- 

С уважением,

 AKostylev                          mailto:akostylev@ipian.kazan.ru