mardi 26 juin 2012

Web services en Spring WS 3


Spring WS repose JAX-WS car X-Fire et JAX RPC sont devenus obsoletes

Utiliser Spring service exporter (Web Service Last Contract) : Spring va construire le WSDL après que le service ai été défini.

Construire un Web service last contract avec Spring 3

Il faut utiliser le bean SimpleJaxWsServiceExporter

@WebService (serviceName="AnnovaService")
public class AnovaServiceEndPoint extends SpringBeanAutowiringSupport {

@Autowired
AnovaService anovaService;

@WebMethod
public AnovaTable getAnova(List response, List regressor ) {
return anovaService.getAnova(response, regressor);
}
}

Dans le fichier sybil-servlet.xml

<bean class="org.springframework.remonting.jaxws.SimpleJaxWsExporter" p:baseAddress="http://localhost:8888/service/" / >

Ce bean publie automatiquement les pojo contenant l'annotation @WebService
l'adresse de base est /localhost:8080/AnovaService

Consommation de web service par les clients:
ProxyBeanFactory => crée un objet client à partir du WSDL
(La partie message du WSDL décrit les types de données, les types complexes sont défnis via des types xsd: simples)
(Le portType décrit les différentes opérations supportées)
=> Le proxy bean crée par le ProxyBeanFactory va simplement invoker les méthodes sur le serveur distant, comme les types de données sont connus, il est tout à fait possible pour le ProxyBean de recréer les classes correspondantes...

Toutefois, si l'on définit un classe de type AnovaTable, il serait tout de même bon d'avoir sa définition complète côté client pour pouvoir utiliser ce type de données ailleurs dans l'appli...

Là il est possible d'utiliser JDom ou mieux JAXB pour populer ces classes.

Sécuriser les accès au Web service: 

utiliser JaaS (Java authentication & authorization Service) : (à mettre à jour)

Aucun commentaire:

Enregistrer un commentaire