Solved

How To Call Stateless EJB Deployed On Weblogic From Glassfis

Posted on 2009-07-12
21
1,316 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
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 

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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
wordsWithout 49 90
maven project clean install and build and adding as war web plugin 4 46
wordmultiple challenge 12 116
eclipse formatting 6 70
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 last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
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.

932 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

10 Experts available now in Live!

Get 1:1 Help Now