JBoss ฟิวส์ - Apache CXF

ในบทนี้ให้เราพูดคุยเกี่ยวกับ Apache CXF คืออะไรและจะมีประโยชน์ในการพัฒนา SOAP และ Rest Web Services ได้อย่างไร

Apache CXF คืออะไร?

Apache CXF เป็นเฟรมเวิร์กการพัฒนาบริการเว็บที่สามารถใช้เพื่อพัฒนา SOAP และ Rest web services CXF สอดคล้องกับJAX-RS and JAX-Ws มาตรฐาน.

เป็นกรอบการพัฒนาบริการเว็บที่ใช้กันอย่างแพร่หลายที่สุดในขณะนี้ CXF ได้เรียนรู้และปรับปรุงมากกว่า Axis2 ซึ่งตอนนี้ CXF ค่อยๆถูกแทนที่

CXF เทียบกับแกน 2

CXF แกน 2
การปรับปรุง

CXF เป็นเฟรมเวิร์กที่ใช้มากที่สุด ณ ตอนนี้

มีการปรับปรุงมากมายใน Axis2

Axis2 ค่อยๆถูกแทนที่ด้วย CXf

ต้องใช้รหัสมากกว่าเมื่อเทียบกับ CXF

ต้องระบุรหัส

CXF ต้องการรหัสน้อยกว่าเมื่อเทียบกับ Axis2

Axis2 ต้องการโค้ดมากกว่าในเชิงเปรียบเทียบ

การปฏิบัติตามมาตรฐาน

CSF สอดคล้องกับ JAX-RS และ JAX-WS อย่างสมบูรณ์

Axis2 ไม่สอดคล้องกับ JAX-RS และ JAX-WS อย่างสมบูรณ์

เข้ากันได้กับสปริง

ใช่

ไม่

การแยกส่วนหน้า

ทำความสะอาดการแยกส่วนหน้าออกจากรหัส JAX-WS

ไม่มีการแยกที่สะอาด

สบู่

SOAP ย่อมาจาก Simple Object Access Protocol เป็นโปรโตคอลสำหรับการแลกเปลี่ยนข้อมูลที่มีโครงสร้างผ่านบริการเว็บระหว่างสองระบบ ส่วนใหญ่อาศัย XML ในการจัดโครงสร้างข้อมูลและใช้ HTTP หรือ SMTP สำหรับการเจรจาต่อรองและส่งข้อความ

มีสองวิธีในการพัฒนาบริการเว็บ SOAP -

  • Code first - ด้วยวิธีนี้ WSDL ถูกสร้างขึ้นจากรหัส

  • Contract first - ในสัญญาก่อนรหัสจะถูกสร้างขึ้นจาก WSDL

การพัฒนาสบู่โดยใช้ CXF

กำหนดค่า Maven

เพิ่มโปรไฟล์ต่อไปนี้ใน settings.xml ของ 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>

สร้างโครงกระดูก

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

เปิด URL http://localhost:8181/cxf

บริการบนเว็บควรมีรายชื่อดังนี้

Testing Web-Service

mvn -Pclient

INFO - การสร้างบริการ {http://ws.totorials.com/} PersonService จากคลาส 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] ------------------------------------------------------------------------