?
Solved

How To Call Stateless EJB Deployed On Weblogic From Glassfis

Posted on 2009-07-12
21
Medium Priority
?
1,341 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

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
 

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 2000 total points
ID: 25389715
I had suggested adding to classpath on a number of occasions.
0

Featured Post

Enroll in August's Course of the Month

August's CompTIA IT Fundamentals course includes 19 hours of basic computer principle modules and prepares you for the certification exam. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

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

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.
Suggested Courses
Course of the Month8 days, 1 hour left to enroll

765 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