cancel
Showing results for 
Search instead for 
Did you mean: 

EJB library reference from Web Dynpro

Former Member
0 Kudos

Hi,

1. I have got a WD DC that references an EJB DC and an external library DC (ext_ims_lib_depl) on the same server

2. I have specified the ejb20 DC under SAP-JEE_1 as a used DC on both the DCs for design time, deploy time and runtime.

3. But after deploying the WD DC and trying to invoke the call to the EJB DC I get the exception below.

4. It’ evident that the classloader cannot pick up the ejb20.jar and my question is how do I resolve the reference, I tried adding sap.com/ejb20 under Webdynpro references but it does not seem to do the trick.

-


Exception----


Processing HTTP request to servlet [dispatcher] finished with error. The error is: java.lang.NoClassDefFoundError: javax/ejb/EJBHome

-


Loader Info -


ClassLoader name: [library: test.comapplext_ims_lib_depl]

Parent loader name: [Frame ClassLoader]

No references !

Resources:

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\commons-collections-2.1.1.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\test.comapplj2ee_ims.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\cglib-2.1.3.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\commons-logging-1.0.4.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\dom4j-1.6.1.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\ant-antlr-1.6.5.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\ims_beans.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\ehcache- 1.2.3.jar

C:\usr\sap\VDW\JC00\j2ee\cluster\server0\bin\ext\test.comapplext_ims_lib_depl\hibernate3.jar

Loading model: {parent,local,references}

-


The error occurred while trying to load "com.test.za.securityRiskManagement.service.EventHandlerHome".

at com.sap.engine.frame.core.load.ReferencedLoader.loadClass(ReferencedLoader.java:401)

at java.lang.ClassLoader.loadClassInternal (ClassLoader.java:302)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:141)

at com.test.za.securityRiskManagement.bean.EventCommandBean.executeCreateEvent(EventCommandBean.java :205)

at com.test.event.view.EventRegistrationView.onActionSubmit(EventRegistrationView.java:143)

at com.test.event.view.wdp.InternalEventRegistrationView.wdInvokeEventHandler(InternalEventRegistrationView.java :150)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)

at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent (WindowPhaseModel.java:420)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)

at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java :335)

at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)

at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:752)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:705)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:261)

at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:154)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent (DispatcherServlet.java:62)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service (HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java :266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)

at com.sap.engine.services.httpserver.server.Client.handle (Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java :33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged (Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

Thanks.

Accepted Solutions (1)

Accepted Solutions (1)

former_member185029
Active Contributor
0 Kudos

Hi,

It is evident that you are using DI for development.

Since you are using EJB as a reference, I guess it should be also deployed on the server (using J2EE enterprise archive) .

Has it been deployed?

Ashutosh

Former Member
0 Kudos

Hi,

The EJB jar is definitely deployed on the server. I checked via the Visual Admin under Libraries and it's there. The issue is how do I point my WD DC to the ejb jar.

Tshepo.

former_member182372
Active Contributor
0 Kudos

>>The EJB jar is definitely deployed on the server. I checked via the Visual Admin >>under Libraries and it's there.

Did you deploy EJB as library?? You should use EAR project for that. And in WD you should specify sharing reference to EAR project.

Former Member
0 Kudos

Hi Maksim,

Just to clarify my scenario:

1. I have an EJB DC which is part of an EAR DC.

2. I also have a WD DC that specifies the sharing reference to the EAR DC - so the WD DC is not complaining about my WD DC.

3. The problem is that my WD DC at runtime complains about javax.ejb.EJBHome which is packaged in the ejb20.jar.

Thanks.

former_member182372
Active Contributor
0 Kudos

Is ejb20 Used DC defined in WD DC "At Run Time" and "At Build Time"?

Check .dcdef file


<dependency>
	<dc-ref>
		<name>ejb20</name>
		<vendor>sap.com</vendor>
	</dc-ref>
	<pp-ref>default</pp-ref>
	<at-build-time/>
	<at-runtime qualifier=""/>
</dependency>

Former Member
0 Kudos

Hi Maksim,

Below is an extract of my dcdef file:

<dependency>

<dc-ref>

<name>ejb20</name>

<vendor>sap.com</vendor>

</dc-ref>

<pp-ref>default</pp-ref>

<at-build-time/>

<at-runtime qualifier="strong"/>

</dependency>

It looks exactly like what you send except for the runtime qualifier.

Thanks.

former_member182372
Active Contributor
0 Kudos

Do you know how to use ClassLoader Viewer service in Visual Admin? Select your application in left pane and you will see all dependencies. Make sure that WD application has dependecy to library:ejb20 and to your EAR and your EAR has dependecy to library:ejb20.

Former Member
0 Kudos

Hi Maksim,

I connected to the Visual Administrator and went into Server -> Services -> ClassLoader Viewer -> Applications and only my EAR applications come up and not the WD app (is it supposed to be displayed under the same list ) and yes the EAR has a dependency to library:ejb20.

Thanks.

former_member182372
Active Contributor
0 Kudos

Where is com.test.za.securityRiskManagement.bean.EventCommandBean class located? In test.comapplext_ims_lib_depl? What kind of application is that? Is it the smae EAR where EJBs are?

Former Member
0 Kudos

Hi Maksim,

The com.test.za.securityRiskManagement.bean.EventCommandBean class is not part of the EJB/EAR DC but is a command bean class that I have packaed in the test.comapplext_ims_lib_depl (external lib DC).

I hope that explains it.

Thanks.

Former Member
0 Kudos

Hi Maksim,

To explain further basically I use the EventCommand as a model in my WD DC and in return the EventCommandBean call my EJB DC.

Thanks.

former_member182372
Active Contributor
0 Kudos

Does test.comapplext_ims_lib_depl have reference to the EAR application? You trying to call EJB from library, so you need reference to the EAR project from ext library too.

Former Member
0 Kudos

Hi Maksim,

You definitely pointed me in the right direction, thank you very much for the trouble. What I actually needed to was to add the ejb20 as a used DC to my test.comapplext_ims_lib_depl with the runtime reference type set to "weak".

Thanks.

P.S. Points awarded:-)

Answers (0)