I have developed a java web application integrating with SAP. I have developed it with Linux Server and Tomcat 7.0. I have added sapjco3.jar and libsapjco3.so in WEB-INF/lib folder. It is working fine local server. But when deploying WAR file in remote server the following error is generating.
java.lang.NoClassDefFoundError: com.sap.conn.rfc.driver.CpicDriver
at com.sap.conn.rfc.engine.DefaultRfcRuntime.createChannel(DefaultRfcRuntime.java:52)
at com.sap.conn.rfc.engine.RfcIoOpenCntl.open_channel(RfcIoOpenCntl.java:1260)
at com.sap.conn.rfc.engine.RfcIoControl.ab_rfcopen(RfcIoControl.java:85)
at com.sap.conn.rfc.api.RfcApi.RfcOpen(RfcApi.java:83)
at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.connect(MiddlewareJavaRfc.java:1107)
at com.sap.conn.jco.rt.ClientConnection.connect(ClientConnection.java:659)
at com.sap.conn.jco.rt.PoolingFactory.init(PoolingFactory.java:103)
at com.sap.conn.jco.rt.ConnectionManager.createFactory(ConnectionManager.java:171)
at com.sap.conn.jco.rt.DefaultConnectionManager.createFactory(DefaultConnectionManager.java:44)
at com.sap.conn.jco.rt.ConnectionManager.getFactory(ConnectionManager.java:160)
at com.sap.conn.jco.rt.RfcDestination.initialize(RfcDestination.java:754)
at com.sap.conn.jco.rt.RfcDestination.ping(RfcDestination.java:964)
at com.my.ciry.sap.Connection.<init>(Connection.java:63)
The error is arising when ping the destination from Tomcat Server.
private JCoDestination dest;
public Connection(SapSystem system) {
dest = JCoDestinationManager.getDestination(SAP_SERVER);
dest.ping();
}
What's the cause of the problem.
SAP Servers are generally configured based on
System ID
, theMessage Server
and possible aGroup Server
along with anInstance Number
.You probably need to pass these parameters when instantiating your connection. It could be that on localhost, these are not needed/ignorable, but on production, it is required.
Try connecting to the server using SAP's tools and try to provide all the settings that you would otherwise provide.
If you post what settings you are using for your JCO, perhaps I can help more.