2010-07-08 16 views
5

Como principiante de servicios web, he intentado durante dos semanas obtener un servicio web de hello world trabajando con maven, eclipse y tomcat.cómo implementar un servicio jax-ws para eclipse o tomcat?

Dejé de intentar hacer funcionar alguno de los generadores de código/wsdl, y seguí este tutorial http://myarch.com/create-jax-ws-service-in-5-minutes para codificar a mano un ejemplo, que es brillante.

Esto da como resultado 4 archivos de clase y un archivo WSDL.

Entonces, ¿mi estúpida pregunta es cómo "ejecutar" el servicio en eclipse y/o en tomcat?

Intenté simplemente desplegarlos como una aplicación web, pero no me gustó nada: no hay nada en el web.xml que diga al motor servlet que existe el servicio web, así que supongo que nunca funcionará.

¿Tengo que tener un contenedor de servicio web especial (por ejemplo, axis2, metro o CXF) dentro de tomcat, y desplegarlo en eso? ¿O puede simplemente ejecutarse con algunas jax-ws jarras + configuración misteriosa?

No quiero tener que instalar en tomcat metro (que usa ant, y está diseñado para glassfish), o axis2 (que usa ant, y la mayoría de la gente parece no recomendar).

Miré a CXF, pero no puedo encontrar en ningún sitio de su sitio cómo instalarlo/configurarlo en tomcat (o eclipse) sin resorte. Puse los frascos CFX en dependencias maven, e instalé el plugin eclipse, pero esto no te acerca más a ejecutar realmente un servicio web sin el pegamento de configuración misteriosa. CXF parece estar ligado a la primavera, lo cual es un gran inconveniente para nosotros ya que no usamos la primavera (o necesitamos alguna de sus características).

Me di cuenta de que helios wtp tiene algún tipo de proyecto de servicio web llamado JSR-109. ¿Es solo Java RPC o es compatible con el sistema completo de servicios web SOAP? ¿Vale la pena intentarlo?

Cualquier consejo muy bienvenido. Debo haber buscado en Google 1000 páginas en busca del seriv Santo Grial, es decir, cómo crear y desplegar uno para Tomcat de punta a punta. ¿Se supone que es tan difícil?

Respuesta

4

Añadir este fragmento a su Web.xml archivo

<servlet> 
    <servlet-name>wshello</servlet-name> 
    <servlet-class> 
     com.sun.xml.ws.transport.http.servlet.WSServlet 
    </servlet-class>    
</servlet>  
<servlet-mapping> 
    <servlet-name>wshello</servlet-name> 
     <url-pattern>/webservice</url-pattern> 
</servlet-mapping> 

Y luego simplemente crear un archivo cuyo nombre es sol jaxws.xml.

<?xml version="1.0" encoding="UTF-8"?> 
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> 
    <endpoint name="WebServiceTest" 
      implementation="your.webservice.impl.ClassName" 
      url-pattern="/webservice"/> 
</endpoints> 

A continuación, cree un archivo war como de costumbre. No necesita CXF o Axis para implementar un servicio web básico en Tomcat. Por cierto jacks de biblioteca jax-ws (jaxws-api.jar, jaxb-impl.jar etc.) deberían estar en su classpath. Puede descargar bibliotecas jax-ws desde here

1

Sé que es un cliché, pero parece que estás tratando de reinventar la rueda. Hay una razón por la cual hay cosas como Axis2 y CXF. Ellos hacen mucho del trabajo duro para ti. He usado ambos y he tenido mucho éxito con ellos. Tenga en cuenta que estoy hablando de una experiencia personal limitada.

He descubierto que CXF y Spring facilitan la configuración de un primer servicio JAX-WS por contrato e incluso agregan WS-Security, registro de mensajes, validación de esquema y configuración de HTTP. Mayormente hecho con el archivo de configuración Spring XML. También aprendí que Spring se puede usar con Quartz para programar trabajos y administrar también el acceso a tus datos. Es una herramienta muy útil.

Axis2, aunque no lo he usado por un tiempo, lo recuerdo, por lo que es bastante fácil convertir algunos POJO en un servicio con un mínimo esfuerzo.

Mi única experiencia con Metro es un pequeño servicio de prueba que creé con NetBeans y lo ejecuté en el servidor Glassfish incorporado. Fue muy fácil, pero el IDE hizo mucho del trabajo por usted, que probablemente no sea una buena forma de aprender. Parecía que solo se necesitaban unos cuantos clics del mouse y, de repente, hubo un servicio.

También this question es un tipo de relación.

¡Buena suerte!

Cuestiones relacionadas