Estoy intentando crear un servicio web simple utilizando Tomcat 7.0.11 en Windows Server 2008 R2 usando Metro 2.1. Vengo de un fondo C#/WCF tratando de obtener una mejor comprensión sobre la interoperabilidad del servicio web. De hecho, estoy siguiendo un ejemplo del libro de Martin Kalin "Java Web Services Up and Running". Tengo el siguiente:WSServlet Error ClassNotFoundException en Tomcat 7.0.11 utilizando Metro 2.1
CATALINA_HOME=c:\tomcat-7.0.11
en los catalina.properties archivo que tengo:
server.loader=c:/metro-2.1/bin/*.jar
(nota, también intentado añadir este camino a common.loader también).
he copiado a los siguientes archivos jar metro para CALALINA_HOME \ lib:
webservices-api.jar, webservices-extra.jar, webservices-extra-api.jar, webservices- rt.jar, webservices-tools.jar
y a CALALINA_HOME \ respaldaron:
webservices-api.jar
(nota, que originalmente intentado utilizar el archivo de hormigas metro-en-tomcat.xml pero no parece haber sido reformado para Tomcat 7. *)
I' También he copiado webservices-api.jar en JAVA_HOME \ jre \ lib \ endorsed
He intentado poner también las otras jarras de METRO en las ubicaciones anteriores pero sin ninguna ayuda.
Ahora, Tomcat arranca bien y inicializa METRO bien, aquí está la sección correspondiente del archivo de registro catalina:
INFORMACIÓN: La implementación de aplicaciones web directorio RAÍZ 18-May-2011 08:00:55 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized INFORMACIÓN: WSSERVLET12: JAX-WS contexto oyente inicializar 18-May-2011 08:01:07 com.sun.xml.ws.server. MonitorBase createRoot INFO: control de Metro nombre de raíz establecido con éxito en: com.sun.metro: pp = /, tipo = WSendpoint, name = -TempConvertImplService-TempConvertImplPort 18-May-2011 08:01:08 com.sun.xml.ws.transport.http.servlet.WSServletDelegate INFORMACIÓN : WSSERVLET14: JAX-WS servlet inicializar
Así que desde que se podría pensar que Tomcat había cargado todas las clases de METRO. Según lo que he reunido, WSServlet es parte de JAX-WS 2.1 que se envía como parte de METRO, por lo que debería haberse cargado. Pero cuando realmente intenta explorar el WSDL de mi servicio me sale el siguiente en el registro de localhost:
GRAVES: Asignar excepción para servlet TempConvertWS java.lang.ClassNotFoundException: com.sun.xml. ws.transport.http.WSServlet en org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1676) en org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1521) en org.apache. catalina.core.DefaultInstanceManager.loadClass (DefaultInstanceManager.java:415) .... (resto del seguimiento de la pila)
mi sol jaxws.xml se ve así:
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
name="TempConvertWS"
implementation="TimeServer.TempConvertImpl"
url-pattern="/tc"
/>
</endpoints>
y la sección relevante de mi web. archivo XML es:
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>TempConvertWS</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TempConvertWS</servlet-name>
<url-pattern>/tc</url-pattern>
</servlet-mapping>
Puede alguien ver a partir de ese Tomcat por qué no puede encontrar/cargar la clase WSServlet cuando se navega con el servicio?
lo que se requiere son las librerías jaxws-ri creo que son 'jaxws-api.jar, jaxws-rt.jar, jaxws-tools.jar, streambuffer.jar' por mencionar algunas. asegúrese de que están en 'CATALINA_HOME/lib' –