JBoss Fuse - Apache CXF
Neste capítulo, vamos discutir sobre o que é Apache CXF e como ele pode ser útil no desenvolvimento de SOAP e Rest Web Services.
O que é Apache CXF?
Apache CXF é uma estrutura de desenvolvimento de serviço da web que pode ser utilizada para desenvolver serviços da web SOAP e Rest. CXF é totalmente compatível comJAX-RS and JAX-Ws padrão.
É a estrutura de desenvolvimento de serviço da Web mais amplamente usada atualmente. O CXF aprendeu e aprimorou o Axis2, que agora está sendo gradualmente substituído pelo CXF.
CXF vs Axis2
CXF | Axis2 | |
---|---|---|
Melhorias | CXF é a estrutura mais usada a partir de agora. Tem muitas melhorias em relação ao Axis2 |
O Axis2 está sendo gradualmente substituído pelo CXf. Requer mais código em comparação com CXF |
Código requerido | CXF requer menos código em comparação com Axis2 |
Axis2 requer mais código comparativamente |
Conformidade Padrão | CSF é totalmente compatível com JAX-RS e JAX-WS |
Axis2 não é totalmente compatível com JAX-RS e JAX-WS |
Compatível com Spring | sim |
Não |
Separação de front-ends | Separação limpa do front-end do código JAX-WS |
Nenhuma separação limpa é fornecida |
SABONETE
SOAP significa Simple Object Access Protocol. É um protocolo para troca de informações estruturadas em serviços da web entre dois sistemas. Ele se baseia principalmente em XML para estruturar dados e usa HTTP ou SMTP para negociação e transmissão de mensagens.
Existem duas abordagens para desenvolver serviços da web SOAP -
Code first - Nesta abordagem, WSDL é gerado a partir do código.
Contract first - Primeiro no contrato, o código é gerado a partir de WSDL.
Desenvolvimento SOAP usando CXF
Configurar Maven
Adicione o seguinte perfil ao seu settings.xml do 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>
Criar esqueleto
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
Abrir URL http://localhost:8181/cxf
O serviço da web deve ser listado da seguinte maneira.
Testing Web-Service
mvn -Pclient
INFO - Criação de serviço {http://ws.totorials.com/} PersonService da 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] ------------------------------------------------------------------------