I'm deploying and testing a simple Jax-ws service in both Tomcat6x and Tomcat7x with the jaxws-ri-2.2.8 added to both the server lib directories .Tomcat6x requires the WSServletContextListener and WSServlet and configured in web.xml whereas in Tomcat 7x the webservices gets deployed without the WSServletContextListener and WSServlet configuration.
Whats different in Tomcat7 that makes the web.xml configuration optional?
JAX-WS DependenciesBy default, Tomcat does not comes with any JAX-WS dependencies, So, you have to include it manually. 1. Go here http://jax-ws.java.net/.
The Apache Tomcat web server is used to deploy and run the Java SOAP service and SOAP-UI is used to test the service operations. The Java SOAP service that is created here represents a simple product catalog and provides methods to search and insert products.
If you are using Tomcat 7.x and Servlet 3.0, the listener com.sun.xml.ws.transport.http.servlet.WSServletContextListener is dynamically loaded. Since Java EE 6, a new component was added: javax.servlet.ServletContainerInitializer
Interface which allows a library/runtime to be notified of a web application's startup phase and perform any required programmatic registration of servlets, filters, and listeners in response to it.
The file jaxws-rt.jar contains in \META-INF\services a simple file text named javax.servlet.ServletContainerInitializer with one line:
com.sun.xml.ws.transport.http.servlet.WSServletContainerInitializer
This is the fully qualified class name which loads the required listener.
See also Using Servlets 3.0 ServletContainerInitializer.
Tomcat 7 supports Servlet 3.0 that enables annotations to be used to configure various components of a web application including Servlets and Listeners.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With