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