Sommaire :
Configuration
Maven
Le module métier de votre application doit contenir la dépendance suivante :
Bloc de code |
---|
|
<dependency>
<groupId>org.esupportail</groupId>
<artifactId>esup-commons2-rs-cxf</artifactId>
<version>${esupcommons.version}</version>
<type>pom</type>
</dependency>
|
Spring
Afin d'exposer la couche service sous forme de service REST il y a quelques éléments de configuration CXF à mettre dans la configuration Spring de la couche métier (properties/domain/domain.xml) :
Bloc de code |
---|
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxrs:server id="domainServiceRest" address="/rest">
<jaxrs:serviceBeans>
<ref bean="domainService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
|
Explications :
- Les imports spécifiques à CXF. A noter l'utilisation du préfixe classpath: qui permet de rechercher les fichier XML dans les jar du projet (celui de CXF ici)
- L'espace de nom jaxrs: est défini dans la balise racine du fichierSpring :
Bloc de code |
---|
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation=".../...
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"
|
- La balise jaxrs:server définit un point d'entrée (il est possible d'en définir plusieurs) de type REST.
La balise a une propriété address qui sera à utiliser dans l'URL d'accès au service (Ex : /cxf*/rest*/domainService/users)
La balise a comme enfants : - Une balise jaxrs:serviceBeans qui permet de référencer le bean correspondant au service métier à exposer
- Une balise jaxrs:providers qui pointe vers le bean servant à sérialiser sous forme JSON les objets Java