J'ai lu les tutoriels de Apache-CXF et celui donné par JOLOKOSSOVAR (http://soa.sys-con.com/read/452355.htm).
Mon objectif est de déployer dans un serveur (disons Tomcat, ou Jonas) le WebService.
Lorsque l'on utilise CXF, c'est écrit que l'on peut déployer un Web Service dans un environnement "non-managed" (en utilisant : javax.xml.ws.Endpoint) ou dans un environnement "managed".
("managed" et "non-managed" sont le termes utilisés dans le tutoriel donné par JOLOKOSSOVAR, cf. 2ème page)
* Pour le cas de l'environment "non-managed", j'ai pu déployer mes premier WS avec CXF sans trop de difficultés.
* Par environnement "managed", j'ai cru comprendre "dans un serveur de type Tomcat, Jonas...". J'avoue cependant avoir du mal à comprendre le paragraphe expliquant comment faire.
Ce paragraphe requiert de :
1) Configuration de l'exécution de Spring pour être au courant de la mise en œuvre des classes d'implémentation
2) Enregistrement de la servlet CXF avec le conteneur Web
3) Fournir un fichier de configuration liant les deux derniers ensemble.
Pour déployer mon WS dans un environnement non-managé, j'avais :
1/ 1 projet java contenant 1 package Server (le WebService et la classe Server) et un Package Client (Client du WebService)
Dans ma tentative de déploiement dans un environnement Managé, mon objectif est de déployer un fichier war contenant mon webService. J'ai donc :
1/ mes deux packages (comme pour un déploiement non-managé)
2/ un dossier Web Content contenant WEB-INF et META-INF
3/ dans WEB-INF : web.xml contenant :
4/dans WEB-INF : cxf-bean.xml contenant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app id="WebApp_1"> <display-name>CXF</display-name> <description>Application WS</description> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/cxf-bean.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping> </web-app>
5/ Le META-INF ne contient que le manifest ("Manifest-Version: 1.0")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <jaxws:endpoint id="NomduServiceEndpointBean" implementor="test.NomduServiceImpl" address="nomduservice" /> </beans>
Mon problème est que je ne sais pas trop par où chercher et ne comprend pas trop ce que je fais.
L'erreur donnée par les logs Tomcat est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 GRAVE: Linstallation des écouteurs (listeners) de l'application a été sautée suite aux erreurs précédentes 8 févr. 2008 14:11:31 org.apache.catalina.core.StandardContext start GRAVE: Error listenerStart 8 févr. 2008 14:11:31 org.apache.catalina.core.StandardContext start GRAVE: Erreur de démarrage du contexte suite aux erreurs précédentes
J'apprécierai donc toute aide sur le déploiement d'un WebService CXF sur un serveur Tomcat.
* Que me manque-t-il pour que cela fonctionne ?
* Y a-t-il un exemple traitant ce que je veux faire dans la distrib CXF? (j'ai bien vu integration/jca/outbound, mais je suis pas sur que cela puisse m'aider)
Partager