JNDI Lookup broken error
joshdee Oct 14, 2002 11:19 PMHello all, I downloaded the JBoss 3.0 Getting Started Guide and its companion templates and example files. Using ant, I was able to build the template/ project and successfully deploy under the JBoss 3.0/Tomcat 4.0.5 pre-integrated bundle. When viewing the logs upon start up, nothing appears out of the ordinary. No errors, warnings, or anything. It's only when I execute the client that things take a turn for the worse. It seems that the client has no problem looking up the TestSession home interface in JNDI. However, once getNewEntityId() is invoked on TestSession, a couple of EJBExceptions are thrown and the stack trace below is dumped. Also below are snippets from ejb-jar.xml, jboss.xml, and jndi.properties. Any insight to why I'm getting this error would do much for the headache I've had since encountering this problem. Using JDK 1.4 on Red Hat, btw. Thanks in advance!
Stack Trace:
18:56:03,863 INFO [Server] JBoss (MX MicroKernel) [3.0.3 Date:200209301503] Started in 1m:2s:503ms
18:56:28,176 INFO [STDOUT] TestSessionBean.ejbCreate()
18:56:28,623 ERROR [LogInterceptor] TransactionRolledbackException, causedBy:
javax.ejb.EJBException: JNDI Lookup broken
at test.entity.TestEntityBean.ejbCreate(TestEntityBean.java:477)
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:324)
at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:221)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:270)
at org.jboss.ejb.EntityContainer.createHome(EntityContainer.java:731)
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:324)
at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1119)
at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:73)
at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:209)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:215)
at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:73)
at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:88)
at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:79)
at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:44)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:111)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178)
at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:52)
at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:105)
at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:1
29)
at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:487)
at org.jboss.ejb.Container.invoke(Container.java:730)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1058)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:198)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
at $Proxy32.create(Unknown Source)
at test.session.TestSessionBean.getNewEntityId(TestSessionBean.java:90)
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:324)
at org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(StatefulSessionContainer.java:817)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:266)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:203)
at org.jboss.ejb.StatefulSessionContainer.invoke(StatefulSessionContainer.java:380)
at org.jboss.ejb.Container.invoke(Container.java:712)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:381)
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:324)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
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:536)
18:56:28,642 ERROR [LogInterceptor] EJBException:
javax.ejb.EJBException: Remote exception occured while removing generator session bean: JNDI Lookup broken; nested exception is:
javax.ejb.EJBException: JNDI Lookup broken
at test.session.TestSessionBean.getNewEntityId(TestSessionBean.java:108)
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:324)
at org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(StatefulSessionContainer.java:817)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:266)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:203)
at org.jboss.ejb.StatefulSessionContainer.invoke(StatefulSessionContainer.java:380)
at org.jboss.ejb.Container.invoke(Container.java:712)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:381)
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:324)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
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:536)
ejb-test.jar/META-INF/jboss.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar >
No Description.
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<!-- Session Beans -->
<![CDATA[Encapsulates the retrival of DB data]]>
<display-name>Generates unique Identifier for an Entity</display-name>
<ejb-name>test/SequenceGenerator</ejb-name>
test.interfaces.SequenceGeneratorHome
test.interfaces.SequenceGenerator
<ejb-class>test.session.SequenceGeneratorBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<env-entry>
<env-entry-name>DataSource_Name</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>DefaultDS</env-entry-value>
</env-entry>
<![CDATA[Session Bean Template ATTENTION: Some of the XDoclet tags are hidden from XDoclet by adding a "--" between @ and the namespace.]]>
<display-name>Bug TestSession Bean</display-name>
<ejb-name>test/TestSession</ejb-name>
test.interfaces.TestSessionHome
test.interfaces.TestSession
<ejb-class>test.session.TestSessionBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref >
<ejb-ref-name>ejb/mytest/TestEntity</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
test.interfaces.TestEntityHome
test.interfaces.TestEntity
<ejb-link>test/TestEntity</ejb-link>
</ejb-ref>
<resource-ref>
<res-ref-name>test/Mail</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<!--
To add session beans that you have deployment descriptor info for, add
a file to your merge directory called session-beans.xml that contains
the markup for those beans.
-->
<!-- Entity Beans -->
<![CDATA[The Entity bean represents a TestEntity with BMP]]>
<display-name>TestEntity working on projects to support clients (BMP)</display-name>
<ejb-name>test/TestBMPEntity</ejb-name>
test.interfaces.TestBMPEntityHome
test.interfaces.TestBMPEntity
<ejb-class>test.entity.TestBMPEntityBMP</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>test.interfaces.TestBMPEntityPK</prim-key-class>
False
<env-entry>
<env-entry-name>SequenceName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>TestEntity</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>DataSourceName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>java:/DefaultDS</env-entry-value>
</env-entry>
<![CDATA[The Entity bean represents a TestEntity]]>
<display-name>TestEntity working on projects to support clients</display-name>
<ejb-name>test/TestEntity</ejb-name>
test.interfaces.TestEntityHome
test.interfaces.TestEntity
<ejb-class>test.entity.TestEntityCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>test.interfaces.TestEntityPK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>test/TestEntity</abstract-schema-name>
<cmp-field >
<![CDATA[Retrieve the TestEntity's id.]]>
<field-name>id</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Retrieve the TestEntity's FirstName.]]>
<field-name>firstName</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Retrieve the TestEntity's LastName.]]>
<field-name>lastName</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Retrieve the TestEntity's Password.]]>
<field-name>password</field-name>
</cmp-field>
<cmp-field >
<![CDATA[Retrieve the TestEntity's Email.]]>
<field-name>email</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>address</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>city</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>zIP</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>state</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>country</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>creationDate</field-name>
</cmp-field>
<cmp-field >
<![CDATA[]]>
<field-name>modificationDate</field-name>
</cmp-field>
<env-entry>
<env-entry-name>SequenceName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>TestEntity</env-entry-value>
</env-entry>
<ejb-ref >
<ejb-ref-name>ejb/test/SequenceGenerator</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
test.interfaces.SequenceGeneratorHome
test.interfaces.SequenceGenerator
<ejb-link>test/SequenceGenerator</ejb-link>
</ejb-ref>
<!--
To add entity beans that you have deployment descriptor info for, add
a file to your merge directory called entity-beans.xml that contains
the markup for those beans.
-->
<!--
Removed for brevity...
-->
</enterprise-beans>
<!-- Relationships -->
</ejb-jar>
ejb-test.jar/META-INF/jboss.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS//EN" "http://www.jboss.org/j2ee/dtd/jboss.dtd">
<enterprise-beans>
<ejb-name>test/TestBMPEntity</ejb-name>
<jndi-name>ejb/test/TestBMPEntity</jndi-name>
<ejb-name>test/TestEntity</ejb-name>
<jndi-name>ejb/test/TestEntity</jndi-name>
<ejb-name>test/SequenceGenerator</ejb-name>
<jndi-name>ejb/test/SequenceGenerator</jndi-name>
<ejb-name>test/TestSession</ejb-name>
<jndi-name>ejb/test/TestSession</jndi-name>
<message-driven>
<ejb-name>test/TestMessage</ejb-name>
<destination-jndi-name>queue/testQueue</destination-jndi-name>
</message-driven>
</enterprise-beans>
<resource-managers>
<resource-manager res-class="javax.mail.Session">
<res-name>test/Mail</res-name>
<res-jndi-name>java:Mail</res-jndi-name>
</resource-manager>
</resource-managers>
jboss-3.0.3_tomcat-4.0.5/server/default/conf/jndi.properties:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost