cancel
Showing results for 
Search instead for 
Did you mean: 

Runtime error while using SAP Enterprise Connector in a J2EE Web Servlet

Former Member
0 Kudos

Hello,

I'm facing problems while trying to do a RFC call out of a Servlet.

I'm using Development Components (DCs) and my project setup is as follows:

Firstly I've created a DC of type J2EE/Web Module. This DC implements an absolutly simple servlet which has to do the RFC-Call.

The relevant code is:


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   JCO.Client jcoclient = JCO.createClient("010", "DV*****", "***", "DE", "ovd***", "01");
   jcoclient.connect();

   Bapi_Flight_Getlist_Input input = new Bapi_Flight_Getlist_Input();
   input.setAirline("LH");
   SAPProxies_PortType myproxy = new SAPProxies_PortType();

   myproxy.messageSpecifier.setJcoClient(jcoclient);

   try {
      Bapi_Flight_Getlist_Output output = myproxy.bapi_Flight_Getlist(input);

      BapisfldatType_List list = output.get_as_listFlight_List();

      int listsize = list.size();
      for (int i = 0; i < listsize; i++) {
         BapisfldatType elem = list.getBapisfldatType(i);
         response.getWriter().print("Date: " + elem.getArrdate() + '\t' + "Arrive: " + elem.getArrtime());
       }
   } catch (Exception e) {
      response.getWriter().print(e.toString());
   }
   jcoclient.disconnect();
}

The proxy for the RFC Module "BAPI_FLIGHT_GETLIST" - in this case the classes around "SAPProxies_PortType" were generated by NWDS ("SAP Enterprise Connector" Wizard).

I had to manually add following DCs as "Used DCs" to get my DC built:

com.sap.aii.proxy.framework (default)

com.sap.aii.util.misc (default)

com.sap.mw.jco (default)

So far, so good...

As a J2EE/Web module DC can't be deployed I've created a second DC of type J2EE/Enterprise Application and referenced the first DC. This DC is also built fine and can be deployed.

But... When I call my servlet I get following Error Message on the web browser:

The request cannot be processed.

Details:

com.sap.engine.services.servlets_jsp.server.exceptions.ServletNotFoundException: Cannot load the requested servlet [LocalDevelopmentservletxxx.com/servlet/TestServlet].

Exception id: [000C295D60FB006F0000003600000EA8000461A05860B4BA]

I also had a look in the trace files:

Vollstu00E4ndiger Nachrichtentext

application [LocalDevelopmentservletxxx.com] Processing HTTP request to servlet [TestServlet] finished with error. The error is: com.sap.engine.services.servlets_jsp.server.exceptions.ServletNotFoundException: Cannot load the requested servlet [LocalDevelopmentservletxxx.com/servlet/TestServlet].

at com.sap.engine.services.servlets_jsp.server.runtime.context.WebComponents.getServlet(WebComponents.java:330)

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

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

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

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

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

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

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

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

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:102)

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

Caused by: java.lang.NoClassDefFoundError: com/sap/aii/proxy/framework/core/AbstractType

-


Loader Info -


ClassLoader name: [xxx.com/testear]

Parent loader name: [Frame ClassLoader]

References:

common:service:http;service:servlet_jsp

service:ejb

common:service:iiop;service:naming;service:p4;service:ts

service:jmsconnector

library:jsse

library:servlet

common:library:IAIKSecurity;library:activation;library:mail;library:tcsecssl

library:ejb20

library:j2eeca

library:jms

library:opensql

common:library:com.sap.security.api.sda;library:com.sap.security.core.sda;library:security.class;library:webservices_lib;service:adminadapter;service:basicadmin;service:com.sap.security.core.ume.service;service:configuration;service:connector;service:dbpool;service:deploy;service:jmx;service:jmx_notification;service:keystore;service:security;service:userstore

interface:resourcecontext_api

interface:webservices

interface:cross

interface:ejbserialization

Resources:

C:\usr\sap\J2E\JC00\j2ee\cluster\server0\apps\ibm.com\testear\servlet_jsp\LocalDevelopmentservletxxx.com\work

C:\usr\sap\J2E\JC00\j2ee\cluster\server0\apps\ibm.com\testear\servlet_jsp\LocalDevelopmentservletxxx.com\root\WEB-INF\classes

C:\usr\sap\J2E\JC00\j2ee\cluster\server0\apps\ibm.com\testear\src.zip

Loading model: {parent,references,local}

-


The error occurred while trying to load "com.xxx.test.sap.connector.Bapi_Flight_Getlist_Output".

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

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

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

at java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)

at java.lang.Class.getConstructor0(Class.java:1930)

at java.lang.Class.newInstance0(Class.java:278)

at java.lang.Class.newInstance(Class.java:261)

at com.sap.engine.services.servlets_jsp.server.runtime.context.WebComponents.getServlet(WebComponents.java:319)

... 14 more

I think it has something to do with the used DCs... but I don't know why the classes are not found after deployment. I also tried

to package the relevant jar-files from the used DCs into the EAR-File - but the I faced problems with the JCo

Thank you for any help.

Osman

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

One thing that can be helpful is to add the references of the JAR files that you are adding as Used DC in the EAR.

This can be done by adding Library type References in the application-j2ee-engine.xml Deployment descriptor in the EAR project.

Following link will be helpful: http://help.sap.com/saphelp_nw70/helpdata/EN/83/82814282cfc153e10000000a1550b0/content.htm

Regards,

Alka.

Former Member
0 Kudos

Hi Alka,

I got it running

Thank you much.

Osman

Answers (0)