2010-07-08 4 views
5

En tant que débutant en services web, j'ai essayé pendant 2 semaines d'obtenir un service web hello world travaillant avec maven, eclipse et tomcat.comment déployer un service jax-ws à eclipse ou tomcat?

J'ai renoncé à essayer de faire fonctionner l'un des générateurs de code/wsdl, et j'ai suivi ce tutoriel http://myarch.com/create-jax-ws-service-in-5-minutes pour donner un exemple, ce qui est génial.

Il en résulte 4 fichiers de classe et un fichier WSDL.

Donc, ma question stupide est de savoir comment "exécuter" le service dans eclipse et/ou sur tomcat?

J'ai essayé de les déployer en tant que webapp, mais pas de joie - il n'y a rien dans le web.xml pour dire au moteur de servlet que le service web existe, donc je suppose que cela ne marchera jamais. Dois-je disposer d'un conteneur de service Web spécial (par exemple, axis2, metro ou CXF) à l'intérieur de tomcat, et déployer sur ce dernier? Ou peut-il simplement fonctionner avec certains jax-ws pots + configuration mystère? Je ne veux pas avoir à installer dans Tomcat Metro (qui utilise la fourmi, et est désigné pour glassfish), ou axis2 (qui utilise fourmi, et la plupart des gens ne semblent pas recommander).

J'ai regardé CXF, mais ne peux pas trouver n'importe où sur leur site sur la façon de l'installer/configurer sur Tomcat (ou Eclipse) sans ressort. J'ai mis les pots de CFX dans les dépendances de maven, et ai installé le plugin d'éclipse, mais cela ne vous rapproche pas plus d'exécuter réellement un webservice avec la colle mystère de configuration. CXF semble lié au printemps, ce qui est un gros inconvénient pour nous car nous n'utilisons pas le printemps (ou besoin de l'une de ses fonctionnalités). J'ai remarqué que helios wtp avait un projet de service web appelé JSR-109. Est-ce que ce RPC java seulement, ou supporte-t-il le système webservice SOAP complet, et vaut-il la peine d'essayer de figurer?

Tous les conseils sont les bienvenus. Je dois avoir googled 1000 pages à la recherche du web serive saint graal - c'est-à-dire comment créer et déployer un à Tomcat bout à bout. Est-ce censé être aussi dur?

Répondre

4

Ajouter ce fragment à votre web.xml fichier

<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> 

Et puis il suffit de créer un fichier dont le nom est soleil 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> 

Créez ensuite un fichier war comme d'habitude. Vous n'avez pas besoin de CXF ou d'Axis pour déployer un WebService de base dans Tomcat. Par ailleurs, jars de bibliothèque jax-ws (jaxws-api.jar, jaxb-impl.jar etc ..) devrait être dans votre classpath. Vous pouvez télécharger les bibliothèques jax-ws à partir de here

1

Je sais que c'est un cliché, mais il semble que vous essayez de réinventer la roue. Il y a une raison pour laquelle il y a des choses comme Axis2 et CXF. Ils font beaucoup de travail dur pour vous. J'ai utilisé les deux et j'ai eu beaucoup de succès avec eux. Gardez à l'esprit que je parle d'une expérience personnelle limitée. J'ai trouvé que CXF et Spring facilitent la configuration d'un service JAX-WS en premier et même l'ajout de paramètres de sécurité WS, de journalisation des messages, de validation de schéma et de configuration HTTP. Principalement fait avec le fichier de configuration Spring XML. J'ai également appris que Spring peut être utilisé avec Quartz pour planifier des tâches et gérer votre accès aux données. C'est un outil très pratique.

Axis2, même si je ne l'ai pas utilisé depuis longtemps, je me souviens qu'il est assez facile de transformer certains POJO en un service avec un minimum d'effort.

Ma seule expérience avec Metro est un petit service de test que j'ai créé avec NetBeans et que j'ai exécuté sur le serveur Glassfish intégré. C'était très facile, mais l'IDE a fait beaucoup de travail pour vous, ce qui n'est probablement pas une bonne façon d'apprendre. J'avais l'impression que ça prenait juste un tas de clics de souris et tout d'un coup il y avait un service.

Aussi this question est un peu liée.

Bonne chance!

Questions connexes