Hi Laszlo,
Currently, i don't know if it's a bug or not.
But, i think this issue is raised because of the jndi template you are
using.
Your template is ejblocal:{...}
But when your are trying to lookup, ejblocal: is treated as a prefix.
OpenEJB only knows about java: and openejb: prefixes.
I will try to have a look deeper, but if you can try with another jndi
template it would be great.
Hope it helps.
Jean-Louis
Laszlo Szabo wrote:
>
> I am attempting to use an embedded OpenEJB container (Apache OpenEJB 3.1.1
> build: 20090530-06:18) from inside my JUnit test invoked via the
> maven-surefire-plugin. I initialise the container in the setUp method
> (JUnit
> 3.8) and it appears to populate correctly by finding all the relevant EJB
> jars in the classpath as for example I get the following outputs in the
> output log (the other EJBs also show as being loaded successfully in a
> similar way):
> Assembling app: C:\wsad\was5\player-ejb\target\classes
> INFO (startup:70) - PersistenceUnit(name=esd-jpa,
> provider=org.apache.openjpa.persistence.PersistenceProviderImpl)
> INFO (options:70) - Using
> 'openejb.jndiname.format=ejblocal:{interfaceClass}'
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.account.ejb.AccountHistoryHome)
> --> Ejb(deployment-id=AccountHistoryHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.account.ejb.AcmeAccountHome)
> --> Ejb(deployment-id=AcmeAccountHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.account.ejb.AcmeTransferHome)
> --> Ejb(deployment-id=AcmeTransferHomeBean)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.account.ejb.InsertRetailLogicRef) -->
> Ejb(deployment-id=InsertRetailLogicRefBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.account.ejb.PaymentCardHome)
> --> Ejb(deployment-id=PaymentCardHomeBean)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.account.ejb.RetailLogicReconciliation) -->
> Ejb(deployment-id=RetailLogicReconciliationBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.account.ejb.TokenHome) -->
> Ejb(deployment-id=TokenHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.account.ejb.WalletItemHome)
> -->
> Ejb(deployment-id=WalletItemHomeBean)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.game.draw.reconciliation.Reconciliation) -->
> Ejb(deployment-id=ReconciliationBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.game.ejb.GamePlaySL) -->
> Ejb(deployment-id=GamePlaySLEJB)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.subs.ejb.SubscriptionDrawHome)
> --> Ejb(deployment-id=SubscriptionDrawHomeBean)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.subs.ejb.SubscriptionSecuritySL) -->
> Ejb(deployment-id=SubscriptionSecuritySLEJB)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.system.ejb.AcmeEJBCommandServer) -->
> Ejb(deployment-id=AcmeEJBCommandServerBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.system.ejb.AcmeLog) -->
> Ejb(deployment-id=AcmeLogBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.user.ejb.AddressHome) -->
> Ejb(deployment-id=AddressHomeBean)
> INFO (startup:70) -
> Jndi(name=ejblocal:acme.user.ejb.AcmeProfileLocalHome)
> --> Ejb(deployment-id=AcmeProfileLocalHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.user.ejb.AcmeUserLocalHome)
> -->
> Ejb(deployment-id=AcmeUserLocalHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.user.ejb.LightWeightLoginSL)
> --> Ejb(deployment-id=LightWeightLoginSLEJB)
> INFO (startup:70) - Jndi(name=ejblocal:acme.user.ejb.LoadWalletSL) -->
> Ejb(deployment-id=LoadWalletSLEJB)
> INFO (startup:70) - Jndi(name=ejblocal:acme.user.ejb.SavedBoardLocalHome)
> --> Ejb(deployment-id=SavedBoardLocalHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:acme.user.ejb.SecurityHome) -->
> Ejb(deployment-id=SecurityHomeBean)
> INFO (startup:70) - Jndi(name=ejblocal:com.gtech.commerce.UidBlockPool)
> -->
> Ejb(deployment-id=UidBlockPoolBean)
> INFO (startup:70) - Created
> Ejb(deployment-id=RetailLogicReconciliationBean,
> ejb-name=RetailLogicReconciliationBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AccountHistoryHomeBean,
> ejb-name=AccountHistoryHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=InsertRetailLogicRefBean,
> ejb-name=InsertRetailLogicRefBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AcmeUserLocalHomeBean,
> ejb-name=AcmeUserLocalHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AcmeAccountHomeBean,
> ejb-name=AcmeAccountHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=SecurityHomeBean,
> ejb-name=SecurityHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=LoadWalletSLEJB,
> ejb-name=LoadWalletSLEJB, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=PaymentCardHomeBean,
> ejb-name=PaymentCardHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AcmeLogBean,
> ejb-name=AcmeLogBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=LightWeightLoginSLEJB,
> ejb-name=LightWeightLoginSLEJB, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AcmeEJBCommandServerBean,
> ejb-name=AcmeEJBCommandServerBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AcmeTransferHomeBean,
> ejb-name=AcmeTransferHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AddressHomeBean,
> ejb-name=AddressHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=SubscriptionSecuritySLEJB,
> ejb-name=SubscriptionSecuritySLEJB, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=ReconciliationBean,
> ejb-name=ReconciliationBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=SavedBoardLocalHomeBean,
> ejb-name=SavedBoardLocalHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=GamePlaySLEJB,
> ejb-name=GamePlaySLEJB, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=WalletItemHomeBean,
> ejb-name=WalletItemHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=TokenHomeBean,
> ejb-name=TokenHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=AcmeProfileLocalHomeBean,
> ejb-name=AcmeProfileLocalHomeBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=UidBlockPoolBean,
> ejb-name=UidBlockPoolBean, container=My Stateless Container)
> INFO (startup:70) - Created Ejb(deployment-id=SubscriptionDrawHomeBean,
> ejb-name=SubscriptionDrawHomeBean, container=My Stateless Container)
> INFO (startup:70) - Deployed
> Application(path=C:\wsad\was5\player-ejb\target\classes)
>
>
> The following OpenEJB properties are defined as System Properties in the
> maven-surefire-plugin:
> <property>
> <name>openejb.deployments.classpath.include</name>
> <value>.*(commerce-ejb|command-ejb|player-ejb).*</value>
> </property>
> <property>
> <name>openejb.deployments.classpath.ear</name>
> <value>false</value>
> </property>
> <property>
> <name>openejb.jndiname.format</name>
> <value>ejblocal:{interfaceClass}</value>
> </property>
> <property>
> <name>java.naming.factory.initial</name>
> <value>org.apache.openejb.client.LocalInitialContextFactory</value>
> </property>
> <property>
> <name>java.naming.factory.url.pkgs</name>
> <value>org.apache.openejb.core.ivm.naming</value>
> </property>
>
> However I find that I get a stack overflow error at the point I attempt to
> perform a lookup of the first EJB encountered from my ServiceLocator
> class:
>
> java.lang.StackOverflowError
> at
> com.sun.naming.internal.VersionHelper12$6.run(VersionHelper12.java:165)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> com.sun.naming.internal.VersionHelper12.getContextClassLoader(VersionHelper12.java:162)
> at
> com.sun.naming.internal.ResourceManager.getFactory(ResourceManager.java:339)
> at
> javax.naming.spi.NamingManager.getURLObject(NamingManager.java:575)
> at
> javax.naming.spi.NamingManager.getURLContext(NamingManager.java:533)
> at
> javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:320)
> at javax.naming.InitialContext.lookup(InitialContext.java:392)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:133)
> at
> org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
> at javax.naming.InitialContext.lookup(InitialContext.java:392)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:133)
> at
> org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
> at javax.naming.InitialContext.lookup(InitialContext.java:392)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:133)
> at
> org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
> ....(repeated hundreds of times)
>
> I have been pulling my hair out why this is not working and have
> experimented by modifying/adding/removing the system properties but to no
> avail. Any suggestions appreciated!
>
>
--
View this message in context:
http://www.nabble.com/StackOverflowError-when-using-embedded-EJB3-container-in-Maven-test-tp25047069p25075770.html
Sent from the OpenEJB User mailing list archive at Nabble.com.