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