2 Replies Latest reply on Jun 21, 2012 9:16 AM by kyuan

    JPA tests failed on JBOSS EAP due to javax.naming.NameNotFoundException: ProxyFactory not bound

    kevin.yuan

      Hi,

       

      We have JPA tests, there is EJB3 sessionbean "TestRunner", during the testing, it will lookup the sessionbean and run tests from it. All tests worked with JBOSS Application Server 5.1.0 GA, but failed with JBOSS Enterprise Application Platform 5.0.0 GA during JNDI lookup for the sessionbean, the error message is:

       

      <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)

       

      So I am wondering if I need to do any special thing for JBOSS EAP version? I also tried to add META-INF/jboss.xml to specify <invoker-proxy-bindings>, but that doesn't help too, my jboss.xml is like:

       

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE jboss PUBLIC
                "-//JBoss//DTD JBOSS 3.2//EN"
                "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
      <jboss>
          <enterprise-beans>
              <session>
                  <ejb-name>TestRunner</ejb-name>
                  <jndi-name>TestRunner</jndi-name>
                  <invoker-bindings>
                      <invoker>
                          <invoker-proxy-binding-name>
                              stateless-http-invoker
                          </invoker-proxy-binding-name>
                      </invoker>
                  </invoker-bindings>
              </session>
          </enterprise-beans>
          <invoker-proxy-bindings>
              <!-- A custom invoker for RMI/HTTP -->
              <invoker-proxy-binding>
                  <name>stateless-http-invoker</name>
                  <invoker-mbean>jboss:service=invoker,type=http</invoker-mbean>
                  <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory>
                  <proxy-factory-config>
                      <client-interceptors>
                          <home>
                              <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor>
                              <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
                              <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor>
                              <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
                          </home>
                          <bean>
                              <interceptor>
                                  org.jboss.proxy.ejb.StatelessSessionInterceptor
                              </interceptor>
                              <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
                              <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor>
                              <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
                          </bean>
                      </client-interceptors>
                  </proxy-factory-config>
              </invoker-proxy-binding>
          </invoker-proxy-bindings>
      </jboss>