CyberSource / cybersource-sdk-java

Java SDK for CyberSource Simple Order API
Other
51 stars 84 forks source link

Problem upgrading to 6.2.8 #138

Closed willg-pit closed 4 years ago

willg-pit commented 4 years ago

This is an existing Simple Order API install that is being upgraded to the newest version, 6.2.8.

The error is a "no such method" on the call to Client.runTransaction. Full stack follows:

Feb 24, 2020 11:33:18 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [/Gateway] threw exception [javax.servlet.ServletException: java.lang.NoSuchMethodError: com.cybersource.ws.client.Client.runTransaction(Ljava/util/Map;Ljava/util/Properties;)Ljava/util/HashMap;] with root cause java.lang.NoSuchMethodError: com.cybersource.ws.client.Client.runTransaction(Ljava/util/Map;Ljava/util/Properties;)Ljava/util/HashMap; at org.apache.jsp.process_005frequest_jsp._jspService(process_005frequest_jsp.java:766) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)

It works using the older version but replacing the old lib with the new one gives the above error.

Windows Server 2008 Tomcat 7 Java 1.8 New version files are 6.2.8 tomcat_lib

Those files replace the older version 5.02 tomcat_lib_old

mahendya1002 commented 4 years ago

try removing all those jars comes with 5.0.2. And keep only the jars packaged with 6.2.8 or higher.

willg-pit commented 4 years ago

try removing all those jars comes with 5.0.2. And keep only the jars packaged with 6.2.8 or higher.

That is exactly what I did do. All 5.0.2 files were removed from lib then I added all 6.2.8 files to the lib. Just like the screenshots show.

The problem turned out to be a change in the method call between somewhere between 5.0.2 and 6.2.8. One uses the Map interface and the other uses the HashMap (an implementation of that interface). I needed a code change and I made that change.

Had JavaDocs been provided (like they were in 5.0.2), that would have been a well documented change that any programmer would be able to easily see and quickly accommodate. There are no JavaDocs, at least none I can find for 6.2.8 (or any version 6), hence my only option was to search your source code and debug the issue in the library myself. I would strongly suggest you go back to including JavaDocs in your distro, like 5.0.2 did.

mahendya1002 commented 4 years ago

Thanks, we will keep java docs as well in the release section of GitHub.