JBoss Fuse - Apache CXF
Dans ce chapitre, parlons de ce qu'est Apache CXF et de la manière dont il peut être utile pour développer SOAP et Rest Web Services.
Qu'est-ce qu'Apache CXF?
Apache CXF est un cadre de développement de services Web qui peut être utilisé pour développer des services Web SOAP et Rest. CXF est entièrement conforme àJAX-RS and JAX-Ws la norme.
Il s'agit actuellement du cadre de développement de services Web le plus largement utilisé. CXF a appris et amélioré par rapport à Axis2 qui est maintenant progressivement remplacé par CXF.
CXF contre Axis2
CXF | Axe2 | |
---|---|---|
Améliorations | CXF est le framework le plus utilisé à ce jour. Il a beaucoup d' améliorations par rapport à Axis2 |
Axis2 est progressivement remplacé par CXf. Il nécessite plus de code par rapport à CXF |
Code requis | CXF nécessite moins de code par rapport à Axis2 |
Axis2 nécessite plus de code comparativement |
Conformité standard | CSF est entièrement compatible avec JAX-RS et JAX-WS |
Axis2 n'est pas entièrement compatible avec JAX-RS et JAX-WS |
Compatible avec Spring | Oui |
Non |
Séparation des frontaux | Séparation nette du front-end du code JAX-WS |
Aucune séparation propre n'est fournie |
SAVON
SOAP signifie Simple Object Access Protocol. Il s'agit d'un protocole d'échange d'informations structurées via des services Web entre deux systèmes. Il repose principalement sur XML pour structurer les données et utilise HTTP ou SMTP pour la négociation et la transmission des messages.
Il existe deux approches pour développer des services Web SOAP:
Code first - Dans cette approche, WSDL est généré à partir du code.
Contract first - Dans le contrat d'abord, le code est généré à partir de WSDL.
Développement SOAP à l'aide de CXF
Configurer Maven
Ajoutez le profil suivant à votre settings.xml de Maven.
<profiles>
<profile>
<id>Jboss-Fuse</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>fusesource</id>
<url>http://repo.fusesource.com/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</profile>
</profiles>
Créer un squelette
mvn archetype:generate
-DarchetypeGroupId = org.apache.servicemix.tooling
-DarchetypeArtifactId = servicemix-cxf-code-first-osgi-bundle
-DarchetypeVersion=2012.01.0.redhat-60024
-DgroupId = org.fusesource.example
-DartifactId = cxf-basic
-Dversion = 1.0-SNAPSHOT
Build Web Service Project.
mvn clean install
Install web-service into Fuse using the following command.
JBossFuse:[email protected]>install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSH
Check if bundle has registered SOQP web-service
Ouvrir le lien http://localhost:8181/cxf
Le service Web doit être répertorié comme suit.
Testing Web-Service
mvn -Pclient
INFO - Création du service {http://ws.totorials.com/} PersonService de la classe com.to
torials.ws.Person
Invoking getPerson...
getPerson._getPerson_personId = Guillaume
getPerson._getPerson_ssn = 000-000-0000
getPerson._getPerson_name = Guillaume
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.668 s
[INFO] Finished at: 2016-02-15T21:01:20+05:30
[INFO] Final Memory: 10M/37M
[INFO] ------------------------------------------------------------------------