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