Solved

How To Call Stateless EJB Deployed On Weblogic From Glassfis

Posted on 2009-07-12
21
1,312 Views
Last Modified: 2013-11-24
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.
0
Comment
Question by:sandip-mehta83
  • 10
  • 10
21 Comments
 
LVL 20

Expert Comment

by:a_b
ID: 24834522
Can you share with us what is it that you tried?
0
 
LVL 20

Expert Comment

by:a_b
ID: 24834537
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
 

Author Comment

by:sandip-mehta83
ID: 24834538
Thanks for looking into this. I will post the lookup code shortly.
0
 

Author Comment

by:sandip-mehta83
ID: 24834544
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
 
LVL 20

Expert Comment

by:a_b
ID: 24834585
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
 
LVL 20

Expert Comment

by:a_b
ID: 24834592
Also,

java.naming.factory.url.pkgs=weblogic.jndi.factories
0
 

Author Comment

by:sandip-mehta83
ID: 24836873
What jar file do i need to put in WEB-INF/lib for aforementioned context factory?
0
 

Author Comment

by:sandip-mehta83
ID: 24836954
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
 
LVL 6

Expert Comment

by:jwenting
ID: 24837326
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
 

Author Comment

by:sandip-mehta83
ID: 24837470
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
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 

Author Comment

by:sandip-mehta83
ID: 24837471
Also adding weblogic.jar in domain/lib/ext folder, doesn't allow server to start.
0
 
LVL 20

Expert Comment

by:a_b
ID: 24837473
What ide are you using?
0
 

Author Comment

by:sandip-mehta83
ID: 24837481
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
 
LVL 20

Expert Comment

by:a_b
ID: 24837482
You can add it to the buildpath of your project, that should do the trick.
0
 
LVL 20

Expert Comment

by:a_b
ID: 24837484
But what IDE are you using?
0
 

Author Comment

by:sandip-mehta83
ID: 24837517
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
 
LVL 20

Expert Comment

by:a_b
ID: 24837557
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
 

Author Comment

by:sandip-mehta83
ID: 24837585
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
 

Author Comment

by:sandip-mehta83
ID: 24837632
can you please suggest on how can i set the application classpath on glassfish?
0
 
LVL 20

Expert Comment

by:a_b
ID: 25389710
I had suggested adding to classpath on a number of occasions.
0
 
LVL 20

Accepted Solution

by:
a_b earned 500 total points
ID: 25389715
I had suggested adding to classpath on a number of occasions.
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
java update needs to be set up as msi 1 47
java JDK Download 7 66
copyEvens challenge 6 63
topping1 challenge 7 53
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
The viewer will learn how to implement Singleton Design Pattern in Java.
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now