Cầu chì JBoss - Apache CXF

Trong chương này, chúng ta hãy thảo luận về Apache CXF là gì và nó có thể hữu ích như thế nào trong việc phát triển SOAP và Rest Web Services.

Apache CXF là gì?

Apache CXF là một khung phát triển dịch vụ web có thể được sử dụng để phát triển các dịch vụ web SOAP và Rest. CXF hoàn toàn tuân thủJAX-RS and JAX-Ws Tiêu chuẩn.

Nó là khung phát triển dịch vụ web được sử dụng rộng rãi nhất bây giờ. CXF đã học hỏi và cải tiến hơn Axis2 hiện đang dần được thay thế bằng CXF.

CXF so với Axis2

CXF Axis2
Cải tiến

CXF là khung được sử dụng nhiều nhất cho đến nay.

Nó có nhiều cải tiến so với Axis2

Axis2 đang dần được thay thế bởi CXf.

Nó yêu cầu nhiều mã hơn so với CXF

Mã bắt buộc

CXF yêu cầu ít mã hơn so với Axis2

Axis2 yêu cầu nhiều mã hơn một cách tương đối

Tuân thủ tiêu chuẩn

CSF hoàn toàn tuân thủ JAX-RS và JAX-WS

Axis2 không hoàn toàn tuân thủ JAX-RS và JAX-WS

Tương thích với mùa xuân

Đúng

Không

Tách các mặt trước

Phân tách rõ ràng giao diện người dùng khỏi mã JAX-WS

Không có sự phân tách rõ ràng nào được cung cấp

XÀ BÔNG TẮM

SOAP là viết tắt của Simple Object Access Protocol. Nó là một giao thức để trao đổi thông tin có cấu trúc qua các dịch vụ web giữa hai hệ thống. Nó chủ yếu dựa vào XML để cấu trúc dữ liệu và sử dụng HTTP hoặc SMTP để đàm phán và truyền thông điệp.

Có hai cách tiếp cận để phát triển các dịch vụ web SOAP -

  • Code first - Trong cách tiếp cận này, WSDL được tạo ra từ mã.

  • Contract first - Trong hợp đồng đầu tiên, mã được tạo từ WSDL.

Phát triển SOAP bằng CXF

Định cấu hình Maven

Thêm cấu hình sau vào settings.xml của 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>

Tạo bộ xương

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

Mở URL http://localhost:8181/cxf

Dịch vụ web sẽ được liệt kê như sau.

Testing Web-Service

mvn -Pclient

INFO - Tạo dịch vụ {http://ws.totorials.com/} PersonService từ lớp 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] ------------------------------------------------------------------------