I discovered that Tomcat 8 no longer can do servletContext.getRealPath("DeployedServices.ds") and find the file in my webapp's root location as it did before. It seems to only find it in catalina's base, so since we only have one webapp that uses this old SOAP library, it seems to work if we put that file in $CATALINA_HOME instead of $CATALINA_HOME/webapps/ROOT. It may not be fixable since it's likely something that has changed in the servlet spec (going from 3.0 in Tomcat 7 to 3.1 in Tomcat 8). I don't know if there's a way to get it to try using a root path that may work correctly if passed servletContext.getRealPath("/DeployedServices.ds")

On 4/20/15 4:49 PM, David Wall wrote:
We have an old Java webapp from 2006 that uses the original Apache SOAP 2.3.1. It runs fine, albeit with old components.

In our process to upgrade some components, we've managed to run the new Java code under Java 8 without any issues, as well as upgraded the database and Linux OS. We even managed to upgrade from Tomcat 5.5 to Tomcat 7 without any issues.

But when we upgrade from Tomcat 7 to Tomcat 8, we get this error when a SOAP call is first sent over:

*SOAP Service Manager: Unable to read 'DeployedServices.ds': assuming fresh start*

If we run it under Tomcat 7, it works fine. So something has changed for Tomcat 8's classloaders or the like that is precluding it from finding the DeployedServices.ds file located in the root of my webapp (like webapps/ROOT/DeployedServices.ds). I tried putting it into WEB-INF and WEB-INF/classes and META-INF, but it's never found. Unfortunately, it's not clear where Tomcat 8 is even checking for the file.

As we have clients still using the old SOAP interface, is there a way to get SOAP 2.3.1 to find the DeployedServices.ds file under Tomcat 8?

Thanks,
David

Reply via email to