How To Call Stateless EJB Deployed On Weblogic From Glassfis

Can somebody please help me with step by step guide of how to call EJB deployed on Weblogic from application deployed on glassfish server.

I have been looking for answers in different forums and never got an satisfactory solutions. All the solutions I tried created new alien problem for me.

Thanks in advance.
sandip-mehta83Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

a_bCommented:
Can you share with us what is it that you tried?
0
a_bCommented:
This is a small code snippet that will help, always works like a charm (but make sure your that your properties are set according to your specs) -

Properties properties = new Properties();
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","=org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url","localhost:1099");

Context context;
try
{
context = new InitialContext();
TestBeanRemote beanRemote = (TestBeanRemote)                                    context.lookup(TestBean.RemoteJNDIName);
beanRemote.test();
} catch (NamingException e)
{
      e.printStackTrace();
}
0
sandip-mehta83Author Commented:
Thanks for looking into this. I will post the lookup code shortly.
0
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

sandip-mehta83Author Commented:
Code that you have mentioned is only for looking up EJB on JBOSS server. Is this correct? If yes I need to lookup the EJB on Weblogic server from glassfish web application. Now Glassfish isn't the only server application needs to support. Webapp can be deployed on other web server such as Liferay and so on...so i am looking for portable code that can be used irrespective of web server to look up the EJB on weblogic.
0
a_bCommented:
I donot know if a portable code exists, as far as I know only the bean is portable. The client has to write the code based on the server.

Here is what you need for the weblogic -

java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=iiop://localhost:7011
0
a_bCommented:
Also,

java.naming.factory.url.pkgs=weblogic.jndi.factories
0
sandip-mehta83Author Commented:
What jar file do i need to put in WEB-INF/lib for aforementioned context factory?
0
sandip-mehta83Author Commented:
I tried adding weblogic.jar in server classpath and got following exception.


[#|2009-07-13T08:45:28.708+0530|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=Thread-80;|<Jul 13, 2009 8:45:28 AM IST> <Error> <IIOP> <BEA-002015> <Using javax.rmi.CORBA.UtilClass com.sun.corba.ee.impl.javax.rmi.CORBA.Util; The IIOP subsystem requires a WebLogic Server-compatible UtilClass.>
|#]

[#|2009-07-13T08:45:28.708+0530|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=Thread-80;|<Jul 13, 2009 8:45:28 AM IST> <Error> <IIOP> <BEA-002016> <Using javax.rmi.CORBA.PortableRemoteObjectClass com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject, the IIOP subsystem requires a WebLogic Server-compatible PortableRemoteObjectClass.>
|#]

[#|2009-07-13T08:45:30.885+0530|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=Thread-80;|[2009 Jul 13 08:45:30] DEBUG (com.cvg.icoms.ejb.helpers.ServiceLocator:getWorkshopAPIBean:78) - "Message: Successfully Look Up WS API Home Object...."
|#]

[#|2009-07-13T08:45:33.642+0530|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=Thread-80;|[2009 Jul 13 08:45:33] DEBUG (com.cvg.icoms.ejb.helpers.ServiceLocator:getWorkshopAPIBean:135) - "Message: Successfully Got The WS API Remote Bean Object...."
|#]

[#|2009-07-13T08:45:34.127+0530|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=17;_ThreadName=Thread-80;_RequestID=050f2fcd-658f-436b-bdf0-ace3a2ab5a05;|java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
      java.rmi.RemoteException: EJB Exception: ; nested exception is:
      java.lang.NullPointerException
      at weblogic.iiop.InboundResponseImpl.unmarshalReturn(InboundResponseImpl.java:103)
      at weblogic.iiop.IIOPRemoteRef.invokeInternal(IIOPRemoteRef.java:232)
      at weblogic.iiop.IIOPRemoteRef.invoke(IIOPRemoteRef.java:161)
      at com.ceon.pcc.workshop.WorkshopControllerRemote_IIOP_WLStub.searchCSDs(Unknown Source)
      at com.cvg.icoms.ejb.helpers.WSApiDelegate.searchCSDs(WSApiDelegate.java:634)
      at com.cvg.icoms.ejb.helpers.WSApiHelper.searchCSDs(WSApiHelper.java:227)
      at com.cvg.icoms.entity.processor.RMAndFeatProcessor.processIncrementalSyncEntities(RMAndFeatProcessor.java:195)
      at com.cvg.icoms.entity.processor.RMAndFeatProcessor.processEntities(RMAndFeatProcessor.java:233)
      at com.cvg.icoms.adapters.incrementalsync.IncrementalSyncAdapterImpl.startIncrementalSync(IncrementalSyncAdapterImpl.java:50)
      at com.cvg.icoms.adapters.incrementalsync.SocketMsgProcessor.processMsg(SocketMsgProcessor.java:78)
      at com.cvg.icoms.adapters.incrementalsync.SocketMsgProcessor.run(SocketMsgProcessor.java:378)
      at java.lang.Thread.run(Unknown Source)
Caused by: java.rmi.RemoteException: EJB Exception: ; nested exception is:
      java.lang.NullPointerException
      at weblogic.ejb.container.internal.EJBRuntimeUtils.throwRemoteException(EJBRuntimeUtils.java:95)
      at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:713)
      at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:681)
      at weblogic.ejb.container.internal.BaseEJBObject.postInvoke1(BaseEJBObject.java:447)
      at weblogic.ejb.container.internal.BaseEJBObject.postInvokeTxRetry(BaseEJBObject.java:374)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl.searchCSDs(WorkshopControllerBean_imz2jq_EOImpl.java:5396)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke3(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke2(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke1(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.invoke(Unknown Source)
      at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
      at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:440)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
      at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:436)
      at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:58)
      at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:975)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: java.lang.NullPointerException
      at java.io.ObjectOutputStream$BlockDataOutputStream.getUTFLength(ObjectOutputStream.java)
      at java.io.ObjectOutputStream.writeString(ObjectOutputStream.java:1187)
      at java.io.ObjectOutputStream.writeEnum(ObjectOutputStream.java:1268)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1077)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
      at java.util.ArrayList.writeObject(ArrayList.java:569)
      at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
      at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
      at weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:614)
      at weblogic.rjvm.MsgAbbrevOutputStream.writeObjectWL(MsgAbbrevOutputStream.java:605)
      at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:38)
      at weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java:87)
      at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:332)
      at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
      at com.ceon.pcc.cm.CMControllerBean_d804x8_EOImpl_922_WLStub.searchCSDs(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean.searchCSDs(WorkshopControllerBean.java:2169)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl.searchCSDs(WorkshopControllerBean_imz2jq_EOImpl.java:5382)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke3(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke2(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke1(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.invoke(Unknown Source)
      at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
|#]

[#|2009-07-13T08:45:34.143+0530|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=17;_ThreadName=Thread-80;|[2009 Jul 13 08:45:34] ERROR (com.cvg.icoms.ejb.helpers.WSApiDelegate:searchCSDs:640) - "Message: Exception Occurred While Searching CSD : SS1-000"
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
      java.rmi.RemoteException: EJB Exception: ; nested exception is:
      java.lang.NullPointerException
      at weblogic.iiop.InboundResponseImpl.unmarshalReturn(InboundResponseImpl.java:103)
      at weblogic.iiop.IIOPRemoteRef.invokeInternal(IIOPRemoteRef.java:232)
      at weblogic.iiop.IIOPRemoteRef.invoke(IIOPRemoteRef.java:161)
      at com.ceon.pcc.workshop.WorkshopControllerRemote_IIOP_WLStub.searchCSDs(Unknown Source)
      at com.cvg.icoms.ejb.helpers.WSApiDelegate.searchCSDs(WSApiDelegate.java:634)
      at com.cvg.icoms.ejb.helpers.WSApiHelper.searchCSDs(WSApiHelper.java:227)
      at com.cvg.icoms.entity.processor.RMAndFeatProcessor.processIncrementalSyncEntities(RMAndFeatProcessor.java:195)
      at com.cvg.icoms.entity.processor.RMAndFeatProcessor.processEntities(RMAndFeatProcessor.java:233)
      at com.cvg.icoms.adapters.incrementalsync.IncrementalSyncAdapterImpl.startIncrementalSync(IncrementalSyncAdapterImpl.java:50)
      at com.cvg.icoms.adapters.incrementalsync.SocketMsgProcessor.processMsg(SocketMsgProcessor.java:78)
      at com.cvg.icoms.adapters.incrementalsync.SocketMsgProcessor.run(SocketMsgProcessor.java:378)
      at java.lang.Thread.run(Unknown Source)
Caused by: java.rmi.RemoteException: EJB Exception: ; nested exception is:
      java.lang.NullPointerException
      at weblogic.ejb.container.internal.EJBRuntimeUtils.throwRemoteException(EJBRuntimeUtils.java:95)
      at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:713)
      at weblogic.ejb.container.internal.BaseEJBObject.handleSystemException(BaseEJBObject.java:681)
      at weblogic.ejb.container.internal.BaseEJBObject.postInvoke1(BaseEJBObject.java:447)
      at weblogic.ejb.container.internal.BaseEJBObject.postInvokeTxRetry(BaseEJBObject.java:374)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl.searchCSDs(WorkshopControllerBean_imz2jq_EOImpl.java:5396)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke3(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke2(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke1(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.invoke(Unknown Source)
      at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
      at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:440)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
      at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:436)
      at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:58)
      at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:975)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: java.lang.NullPointerException
      at java.io.ObjectOutputStream$BlockDataOutputStream.getUTFLength(ObjectOutputStream.java)
      at java.io.ObjectOutputStream.writeString(ObjectOutputStream.java:1187)
      at java.io.ObjectOutputStream.writeEnum(ObjectOutputStream.java:1268)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1077)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
      at java.util.ArrayList.writeObject(ArrayList.java:569)
      at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
      at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
      at weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:614)
      at weblogic.rjvm.MsgAbbrevOutputStream.writeObjectWL(MsgAbbrevOutputStream.java:605)
      at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:38)
      at weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java:87)
      at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:332)
      at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
      at com.ceon.pcc.cm.CMControllerBean_d804x8_EOImpl_922_WLStub.searchCSDs(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean.searchCSDs(WorkshopControllerBean.java:2169)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl.searchCSDs(WorkshopControllerBean_imz2jq_EOImpl.java:5382)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke3(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke2(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.internalInvoke1(Unknown Source)
      at com.ceon.pcc.workshop.WorkshopControllerBean_imz2jq_EOImpl_WLSkel.invoke(Unknown Source)
      at weblogic.rmi.internal.activation.ActivatableServerRef.invoke(ActivatableServerRef.java:85)
|#]
0
jwentingCommented:
Add the WL specific jars (there are several, don't remember the exact names, which differ between server versions anyway so check the documentation) not to the server classpath but the enterprise application classpath.
That way you won't mess up the entire server (if you add them to the server global classpath they may interfere with Glassfish's own classes).
0
sandip-mehta83Author Commented:
I tried to add weblogic.jar into glassfishdomain/lib/ext directory but doesn't work. I have also tried to add weblogic.jar in web-inf/lib directory but doesn't seem to resolve the WLInitialContextFactory class.
0
sandip-mehta83Author Commented:
Also adding weblogic.jar in domain/lib/ext folder, doesn't allow server to start.
0
a_bCommented:
What ide are you using?
0
sandip-mehta83Author Commented:
i am deploying the .war file on linux box which acts as a client to another enterprise application deployed on weblogic server on different host.
0
a_bCommented:
You can add it to the buildpath of your project, that should do the trick.
0
a_bCommented:
But what IDE are you using?
0
sandip-mehta83Author Commented:
i am using Ecllipse IDE. I am using ant script to package the .war file, which also package the weblogic.jar into WEB-INF/lib folder. When I deploy it on Linux box i am getting java.lang.ClassNotFoundException:weblogic.jndi.WLINitialContextFactory. even though i have package weblogic.jar along with .war file.
0
a_bCommented:
I am confused, the client classpath is where you need the jar file. If you bundle it with the war file, how ill the client find the jar.
0
sandip-mehta83Author Commented:
Flow is

--> Upon application deployment servlet starts and invokes sends message. Receing message application perform some actions and based on that it will invoke the EJB. So really my webapplication is acting as a client to EJB deployed on weblogic instance. So .war file contains the code for the EJB lookup. I think the question now remain is how i should pacakge the weblogic.jar into war file since WEB-IN/lib doesn't seems to be working and adding into domain classpath, doesn't allow server to start.
0
sandip-mehta83Author Commented:
can you please suggest on how can i set the application classpath on glassfish?
0
a_bCommented:
I had suggested adding to classpath on a number of occasions.
0
a_bCommented:
I had suggested adding to classpath on a number of occasions.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java EE

From novice to tech pro — start learning today.