I have a ear with ejb's in an ejb jar file.
I also have an ejb jar file deployed seperate but on the same box as the ear.
When I try to call an ejb on the seperate ejb jar file from the
ejb in the ear file I get the Cannot narrow remote object class cast exception.
If I put the seperate ejb jar file on a seperate server it works great.
If I print out class loader info I get for he seperat ejb jar file.
JNDI returned com.blah.blah.blahHomeImpl_812_WLStub
From loader weblogic.utils.classloaders.GenericClassLoader@1669521 finder:
annotation: UtilityEJB@
The class loader for the ear file says.
** Trying to cast into loader weblogic.utils.classloaders.GenericClassLoader@56acfa
finder
annotation: APP@
It seems to me it want to cast from UtilityEJB@class to APP@class how do I fix
it or get it
working.
I have already read a bunch of post's and info but still I cannot fine a solution.
You mean same box and same server instance here, right?
> When I try to call an ejb on the seperate ejb jar file from the
> ejb in the ear file I get the Cannot narrow remote object class cast exception.
>
Interesting (and thanks for searching and printing out the debug info.
Very helpful.)
Can you add this code in right before you lookup the EJB home and show
me the output:
System.out.println("Before JNDI lookup, we believe current application
name is "+
weblogic.j2ee.J2EEApplicationService.getCurrentApplicationName());
-- Rob
Before JNDI lookup, we believe current application name is null.
This was place just before Object object = context.lookup(ejbName);
And yes same box and same server instance. if I put that
ejb jar in the ear and deploy it with that appication it works fine so
I can get it to run on the same box. I just did not want to deploy
that set of ejbs with every application that was going to be using them.
-- Rob
If it's not an EJB, can you show me the call stack that got you there?
Actually, it would be very helpful, if you could call Thread.dumpStack
right before you do the lookup and show me that output.
EJB that I cannot narrow. I'll post stack as soon as I can configure the server
and
set up the project again.
Here is the stack trace.
Dumping Stack
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1071)
at com.ngit.ciras.care.services.RemoteServiceLocator.getEjbHome(RemoteSe
rviceLocator.java:44)
at com.ngit.ciras.care.lotusnotes.delegate.DocumentTransferDelegate.init
(DocumentTransferDelegate.java:71)
at com.ngit.ciras.care.lotusnotes.NotesMessageBean.init(NotesMessageBean
.java:55)
at com.ngit.ciras.care.lotusnotes.NotesMessageBean.setMessageDrivenConte
xt(NotesMessageBean.java:100)
at weblogic.ejb20.internal.MessageDrivenEJBHome.createBean(MessageDriven
EJBHome.java:225)
at weblogic.ejb20.pool.MessageDrivenPool.createBean(MessageDrivenPool.ja
va:116)
at weblogic.ejb20.pool.Pool.createInitialBeans(Pool.java:254)
at weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.start(MessageDr
ivenBeanPoolInfoImpl.java:239)
at weblogic.ejb20.deployer.EJBDeployer.deployMessageDrivenBeans(EJBDeplo
yer.java:1583)
at weblogic.ejb20.deployer.EJBDeployer.start(EJBDeployer.java:1411)
at weblogic.ejb20.deployer.EJBModule.start(EJBModule.java:668)
at weblogic.j2ee.J2EEApplicationContainer.start(J2EEApplicationContainer
.java:2022)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContai
ner.java:2063)
at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.
activateContainer(SlaveDeployer.java:2592)
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.doCommit(
SlaveDeployer.java:2515)
at weblogic.management.deploy.slave.SlaveDeployer$Task.commit(SlaveDeplo
yer.java:2317)
at weblogic.management.deploy.slave.SlaveDeployer$Task.checkAutoCommit(S
laveDeployer.java:2399)
at weblogic.management.deploy.slave.SlaveDeployer$Task.prepare(SlaveDepl
oyer.java:2311)
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(S
laveDeployer.java:2479)
at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(Sla
veDeployer.java:798)
at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDepl
oyer.java:507)
at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDep
loyer.java:465)
at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHan
dler.java:25)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
Before JNDI lookup, we believe current application name is null
JNDI returned com.ngc.it.ciras.ejb.crypto.RWareCryptoEJB_nnbc6i_HomeImpl_812_WLS
tub
From loader weblogic.utils.classloaders.GenericClassLoader@3ca56f finder: weblog
ic.utils.classloaders.MultiClassFinder@e69696 annotation: Ciras_UtilityEJB@
** Trying to cast into loader weblogic.utils.classloaders.GenericClassLoader@72b
784 finder: weblogic.utils.classloaders.MultiClassFinder@aaa1c3 annotation: Feed
BackQuestions@
Check your weblogic-ejb-jar.xml. Do you set initial-beans-in-free-pool?
If so, can you try setting it to 0 and letting me know if this fixes
your issue?
Dumping Stack
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1071)
at com.ngit.ciras.care.services.RemoteServiceLocator.getEjbHome(RemoteSe
rviceLocator.java:44)
at com.ngit.ciras.care.lotusnotes.delegate.DocumentTransferDelegate.init
(DocumentTransferDelegate.java:72)
at com.ngit.ciras.care.lotusnotes.NotesMessageBean.init(NotesMessageBean
.java:55)
at com.ngit.ciras.care.lotusnotes.NotesMessageBean.setMessageDrivenConte
xt(NotesMessageBean.java:100)
at weblogic.ejb20.internal.MessageDrivenEJBHome.createBean(MessageDriven
EJBHome.java:225)
at weblogic.ejb20.pool.MessageDrivenPool.createBean(MessageDrivenPool.ja
va:116)
at weblogic.ejb20.pool.MessageDrivenPool.getBean(MessageDrivenPool.java:
67)
at weblogic.ejb20.internal.MDListener.execute(MDListener.java:362)
at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.
java:316)
at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
Before JNDI lookup, we believe current application name is null
JNDI returned com.ngc.it.ciras.ejb.crypto.RWareCryptoEJB_nnbc6i_HomeImpl_812_WLS
tub
From loader weblogic.utils.classloaders.GenericClassLoader@6bbb36 finder: weblog
ic.utils.classloaders.MultiClassFinder@17d26fc annotation: Ciras_UtilityEJB@
** Trying to cast into loader weblogic.utils.classloaders.GenericClassLoader@137
008a finder: weblogic.utils.classloaders.MultiClassFinder@1e335d7 annotation:
Fe
edBackQuestions@
java.lang.ClassCastException: Cannot narrow remote object to com.ngc.it.ciras.ejb.crypto.RWareCryptoEJBHome
at weblogic.iiop.PortableRemoteObjectDelegateImpl.narrow(PortableRemoteObjectDelegateImpl.java:242)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:134)
at com.ngit.ciras.care.services.RemoteServiceLocator.getEjbHome(RemoteServiceLocator.java:57)
at com.ngit.ciras.care.lotusnotes.delegate.DocumentTransferDelegate.init(DocumentTransferDelegate.java:72)
at com.ngit.ciras.care.lotusnotes.NotesMessageBean.init(NotesMessageBean.java:55)
at com.ngit.ciras.care.lotusnotes.NotesMessageBean.setMessageDrivenContext(NotesMessageBean.java:100)
at weblogic.ejb20.internal.MessageDrivenEJBHome.createBean(MessageDrivenEJBHome.java:225)
at weblogic.ejb20.pool.MessageDrivenPool.createBean(MessageDrivenPool.java:116)
at weblogic.ejb20.pool.MessageDrivenPool.getBean(MessageDrivenPool.java:67)
at weblogic.ejb20.internal.MDListener.execute(MDListener.java:362)
at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)