I am working on a Solaris 8 Ultra 1 running JDK 1.3.1_01, Tomcat 4.1.12, and Axis 1.0. The web service I am trying to create calls class libraries developed in-house that wrap a group of legacy C/C++ APIs using JNI. If JNI is not in the mix all is well (i.e. if I stub out calls to the Java wrapper code) but if JNI code is called the web service works the first time and then returns an empty SOAP message resulting in a "Premature end of file" SAXParseException.
The web service is designed to return a serialized array of Java beans. I know the implementation works outside of Tomcat & Axis. I also know all is well if I hard-code an array of Java beans. In order to get things working I had to either update the CLASSPATH variable in setclasspath.sh to include a JAR file containing all of the in-house JNI-based classes + a JAR file containing all of the Axis 1.0 class files. This approach also required various common/lib JAR files from the Tomcat distribution. A second configuration placed the in-house JAR file & Axis 1.0 JAR file into Tomcat's common/lib but required that I empty out the webapps/axis/WEB-INF/lib directory to avoid a NoClassDefFound exception for an Axis class named RPCParam. Both solutions seem quirky but it's the only way I could get anything to work. I used TCPMon to check on the SOAP request/response. In each case, the request is identical - as expected. However, the second attempt results in the following HTTP response with nothing following: HTTP/1.1 200 OK Date: Mon, 21 Oct 2002 20:53:08 GMT Server: Apache Coyote/1.0 Connection: close If I set up the same configuration under Tomcat 4.0.4, the server side returns an HTTP 500 internal server error but the Tomcat log files don't show the reason for the exception. Has anybody run into anything like this or have any suggestions on how to go about debugging/fixing the problem? Thanks JAB