4 Replies Latest reply on Jan 22, 2013 10:54 AM by jnjnc

    EJB3 jndi lookup failed on JBOSS EAP only due to ProxyFactory not bound

    kevin.yuan

      Hi,

       

      My tests don't have problem with JBOSS 5.1.0 GA community version, it only happens on ENTERPRISE APPLICATION PLATFORM, tests failed during ejb3 sessionbean JNDI lookup, see message below:

       

      <error message="Could not dereference object" type="javax.naming.NamingException">javax.naming.NamingException: Could not dereference object [Root exception is java.lang.RuntimeException: Exception while trying to locate proxy factory in JNDI, at key ProxyFactory/eclipselink-advanced-field-access-model/TestRunner/TestRunner]
      at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1504)
      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:822)
      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
      at javax.naming.InitialContext.lookup(InitialContext.java:392)
      at org.eclipse.persistence.testing.framework.junit.JUnitTestCase.runBareClient(JUnitTestCase.java:480)
      at org.eclipse.persistence.testing.framework.junit.JUnitTestCase.runBare(JUnitTestCase.java:455)
      Caused by: java.lang.RuntimeException: Exception while trying to locate proxy factory in JNDI, at key ProxyFactory/eclipselink-advanced-field-access-model/TestRunner/TestRunner
      at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getProxyFactoryFromJNDI(ProxyObjectFactory.java:235)
      at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:153)
      at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
      at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1479)
      at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1496)
      Caused by: javax.naming.NameNotFoundException: ProxyFactory not bound
      at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
      at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
      at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
      at org.jnp.server.NamingServer.lookup(NamingServer.java:396)
      at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
      at sun.rmi.transport.Transport$1.run(Transport.java:159)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)
      at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
      at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
      at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
      at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726)
      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
      at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getProxyFactoryFromJNDI(ProxyObjectFactory.java:226)
      </error>

       

      So does anyone know what's the real problem? Is there any special configuration for EAP version?

       

      Thanks.

        • 1. Re: EJB3 jndi lookup failed on JBOSS EAP only due to ProxyFactory not bound
          wolfc

          Hi Kevin,

           

          Any questions regarding Enterprise Application Platform should be filed through our customer support portal. Your EAP subscription entitles you to full support of all technologies included.

           

          Please file your issue there. You can find the customer support portal here: https://www.redhat.com/apps/support/.

           

          Thanks,

           

          Carlo

          • 2. Re: EJB3 jndi lookup failed on JBOSS EAP only due to ProxyFactory not bound
            mfobrien

            Issue resolved,

             

            >Use a 3-part (app_name/bean_name/remote) or (app_name/remote-bean_name/qualified_bean_name) EJB JNDI lookup instead of a 2 part (without the app_name prefix)

             

            >The JBoss EAP server registers the following name
            2010-03-22 11:07:33,326 INFO  [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (HDScanner) Binding the following Entries in Global JNDI:

            TestRunner - EJB3.x Default Remote Business Interface
            eclipselink-advanced-field-access-model/TestRunner/remote-org.eclipse.persistence.testing.framework.server.TestRunner - EJB3.x Remote Business Interface

            2010-03-22 11:07:39,797 INFO  [STDOUT] (WorkerThread#0[127.0.0.1:62483]) [EL Info]: 2010-03-22 11:07:39.797--ServerSession(4488512)--EclipseLink, version: Eclipse Persistence Services - 2.1.0.qualifier

             

            >Use the name "eclipselink-advanced-field-access-model/TestRunner/remote-org.eclipse.persistence.testing.framework.server.TestRunner" in the JNDI context lookup to get an EJB @Remote @Stateless session bean $Proxy.

             

            >Note: the name can also be "eclipselink-advanced-field-access-model/TestRunner/remote" if @Remote on the remote interface and @Stateless defaults are used without overrides.


            >see

            http://wiki.eclipse.org/EclipseLink/Bugs/305331

             

             

            thank you
            /michael
            http://www.eclipselink.org

            • 3. Re: EJB3 jndi lookup failed on JBOSS EAP only due to ProxyFactory not bound
              kyuan

              Already work now. Thanks for help.

              • 4. Re: EJB3 jndi lookup failed on JBOSS EAP only due to ProxyFactory not bound
                jnjnc

                Hi,

                 

                I have to deploy an application within various application server environments depending on customer environment. I successfully deploy the application in jBoss 4.2.3, 5.1 and 7.1 final.

                I would like to have some "unit-integration" tests to valid my deployment  as fast as I can and test remote EJB invocation and JMS deployment.

                 

                I got same issue when trying to invoke a remote EJB deployed within a ear file in JBoss 5.1 from a junit test.

                It doesn't matter which  3-part pattern I use (app_name/bean_name/remote) or (app_name/remote-bean_name/qualified_bean_name).

                 

                Please note this test is working fine when I deploy this EAR file in jBoss 4.2.3.

                I didn't try with jBoss 7.1 yet.

                 

                jvax.naming.NamingException: Could not dereference object [Root exception is java.lang.RuntimeException: Exception while trying to locate proxy factory in JNDI, at key ProxyFactory/MY_EAR/MyBean/MY_EAR/MyBean/remote]

                ...

                Caused by: java.lang.RuntimeException: Exception while trying to locate proxy factory in JNDI, at key ProxyFactory/MY_EAR/MyBean/MY_EAR/MyBean/remote

                ...

                at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getProxyFactoryFromJNDI(ProxyObjectFactory.java:249)
                at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:157)
                at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
                at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1479)
                at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1496)
                ... 28 more
                Caused by: javax.naming.NameNotFoundException: ProxyFactory not bound
                at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
                at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
                at org.jnp.server.NamingServer.getObject(NamingServer.java:785)

                 

                I thought about a classloading issue regarding jboss client jar but it doesn't seems to be the case as I got same issue when changing my test to follow Carlo's classloading tip.

                 

                http://wolf-71.blogspot.fr/2010/02/et-phone-home.html

                 

                If I change my test to use this classloading mechanism I got an extra exception

                 

                java.lang.ClassCastException: org.jboss.jms.client.JBossConnectionFactory cannot be cast to javax.jms.ConnectionFactory
                at JBossServerTest.testCALLATJMSCall(JBossServerTest.java:206)
                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:597)

                 

                Any suggestion would be appreciated.

                Cheers