JBoss-Sicherung - Apache CXF

Lassen Sie uns in diesem Kapitel erläutern, was Apache CXF ist und wie es bei der Entwicklung von SOAP- und Rest-Webdiensten hilfreich sein kann.

Was ist Apache CXF?

Apache CXF ist ein Framework für die Entwicklung von Webdiensten, mit dem SOAP- und Rest-Webdienste entwickelt werden können. CXF ist vollständig kompatibelJAX-RS and JAX-Ws Standard.

Es ist derzeit das am weitesten verbreitete Framework für die Entwicklung von Webdiensten. CXF hat gegenüber Axis2 gelernt und verbessert, das nun schrittweise durch CXF ersetzt wird.

CXF vs Axis2

CXF Achse2
Verbesserungen

CXF ist derzeit das am häufigsten verwendete Framework.

Es hat viele Verbesserungen gegenüber Axis2

Achse2 wird schrittweise durch CXf ersetzt.

Im Vergleich zu CXF ist mehr Code erforderlich

Code erforderlich

CXF benötigt im Vergleich zu Axis2 weniger Code

Axis2 benötigt vergleichsweise mehr Code

Standardkonformität

CSF ist vollständig kompatibel mit JAX-RS und JAX-WS

Axis2 ist nicht vollständig kompatibel mit JAX-RS und JAX-WS

Kompatibel mit Feder

Ja

Nein

Trennung der Frontends

Saubere Trennung des Frontends vom JAX-WS-Code

Es ist keine saubere Trennung vorgesehen

SEIFE

SOAP steht für Simple Object Access Protocol. Es ist ein Protokoll zum Austausch strukturierter Informationen über Webdienste zwischen zwei Systemen. Es basiert hauptsächlich auf XML zur Strukturierung von Daten und verwendet HTTP oder SMTP für die Aushandlung und Übertragung von Nachrichten.

Es gibt zwei Ansätze zur Entwicklung von SOAP-Webdiensten:

  • Code first - Bei diesem Ansatz wird WSDL aus Code generiert.

  • Contract first - Im Vertrag wird zuerst Code aus WSDL generiert.

SOAP-Entwicklung mit CXF

Konfigurieren Sie Maven

Fügen Sie das folgende Profil zu Ihrer settings.xml von Maven hinzu.

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

Skelett erstellen

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

Öffne URL http://localhost:8181/cxf

Der Webdienst sollte wie folgt aufgeführt sein.

Testing Web-Service

mvn -Pclient

INFO - Service erstellen {http://ws.totorials.com/} PersonService aus der Klasse 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] ------------------------------------------------------------------------