[jboss-user] [JNDI/Naming/Network] - New EJB causes JNDI failure on existing EJB?

hmccartney do-not-reply at jboss.com
Mon Dec 10 11:42:09 EST 2007


Hi,

We have an existing JEE application with components on 2 JBoss servers (machine 1 and machine 2). The application on machine 1 uses JNDI to access the application on machine 2. This has been working with no problems for about a year now.

Recently we tried to add a second application to the same 2 JBoss servers. This time machine 2 uses JNDI to access machine 1. 

When we tried to deploy the second application, it worked fine, but it caused JNDI in the first application to stop working with javax.naming.NameNotFoundException (stack trace below). However the session bean in question was logged as bound on startup and appeared in the list in the JMX console. 

The names of the ears in the second application come before those in the first application alphabetically, so I guess the classes in the second application are loaded first and this might be confusing the first application somehow? We are using org.jboss.deployment.scanner.PrefixDeploymentSorter and have not yet attempted to isolate the ears from each other in any way.

The problem went away when we removed the second application on machine 2. However I don't understand why there was a problem in the first place, because the 2 applications on machine 2 do not share any of the same classes. Application 2 on machine 2 does have a jndi.properties referencing machine 1. Is there any way that this could be interfering with the code that makes the first application available to JNDI?

We are using jboss-4.0.4.GA on Red Hat.

The code in application 1 on machine 1 to do the JNDI lookup is:
Hashtable<String,String> env=new Hashtable<String,String>();
  | env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
  | env.put(InitialContext.PROVIDER_URL,"jnp://machine2.mycompany.com:1099");
  | env.put(InitialContext.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
  | 
  | InitialContext context = new InitialContext(env);
  | MyWorker myWorker = (MyWorker) context.lookup("MyWorkerBean/remote");

Stack trace is:
javax.naming.NameNotFoundException: MyWorkerBean not bound
  | 	at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
  | 	at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
  | 	at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
  | 	at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
  | 	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 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
  | 	at sun.rmi.transport.Transport$1.run(Transport.java:153)
  | 	at java.security.AccessController.doPrivileged(Native Method)
  | 	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
  | 	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
  | 	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
  | 	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
  | 	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
  | 	at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
  | 	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
  | 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
  | 	at com.mycompany.client.MyWorkerBeanDelegate.<init>(MyWorkerBeanDelegate.java:43)
  | 	at com.mycompany.client.Controller.doMyWorkerAction(Controller.java:289)
  | 	at com.mycompany.client.Controller.doWorkPackage(Controller.java:167)
  | 	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 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
  | 	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
  | 	at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
  | 	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
  | 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 	at org.jboss.ejb3.mdb.ConsumerContainer.dynamicInvoke(ConsumerContainer.java:885)
  | 	at org.jboss.ejb3.mdb.ConsumerContainer$MessageListenerImpl.onMessage(ConsumerContainer.java:1091)
  | 	at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:266)
  | 	at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:902)
  | 	at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
  | 	at org.jboss.mq.SpySession.run(SpySession.java:323)
  | 	at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:194)
  | 	at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
  | 	at java.lang.Thread.run(Thread.java:595) 

Many thanks in advance for your help.

Heather

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4111685#4111685

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4111685



More information about the jboss-user mailing list