Fusibile JBoss - Apache CXF

In questo capitolo, discutiamo su cosa sia Apache CXF e su come può essere utile nello sviluppo di SOAP e Rest Web Services.

Cos'è Apache CXF?

Apache CXF è un framework di sviluppo di servizi Web che può essere utilizzato per sviluppare servizi Web SOAP e Rest. CXF è completamente conforme aJAX-RS and JAX-Ws standard.

Attualmente è il framework di sviluppo di servizi Web più utilizzato. CXF ha appreso e migliorato rispetto ad Axis2, che ora viene gradualmente sostituito da CXF.

CXF contro Axis2

CXF Axis2
Miglioramenti

CXF è il framework più utilizzato al momento.

Ha molti miglioramenti rispetto ad Axis2

Axis2 viene gradualmente sostituito da CXf.

Richiede più codice rispetto a CXF

Codice richiesto

CXF richiede meno codice rispetto ad Axis2

Axis2 richiede più codice in confronto

Conformità agli standard

CSF è completamente conforme a JAX-RS e JAX-WS

Axis2 non è completamente compatibile con JAX-RS e JAX-WS

Compatibile con la primavera

No

Separazione dei front-end

Separazione netta del front-end dal codice JAX-WS

Non è prevista una separazione netta

SAPONE

SOAP sta per Simple Object Access Protocol. È un protocollo per lo scambio di informazioni strutturate su servizi web tra due sistemi. Si basa principalmente su XML per strutturare i dati e utilizza HTTP o SMTP per la negoziazione e la trasmissione dei messaggi.

Esistono due approcci per sviluppare servizi Web SOAP:

  • Code first - In questo approccio, WSDL viene generato dal codice.

  • Contract first - Per prima cosa nel contratto, il codice viene generato da WSDL.

Sviluppo SOAP utilizzando CXF

Configura Maven

Aggiungi il seguente profilo al tuo settings.xml di 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>

Crea scheletro

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:karaf@root>install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSH

Check if bundle has registered SOQP web-service

Apri URL http://localhost:8181/cxf

Il servizio web dovrebbe essere elencato come segue.

Testing Web-Service

mvn -Pclient

INFO - Creazione del servizio {http://ws.totorials.com/} PersonService dalla 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] ------------------------------------------------------------------------