JBoss 퓨즈-Apache CXF
이 장에서는 Apache CXF가 무엇이며 SOAP 및 Rest 웹 서비스를 개발하는 데 어떻게 도움이 될 수 있는지에 대해 논의하겠습니다.
Apache CXF 란 무엇입니까?
Apache CXF는 SOAP 및 Rest 웹 서비스를 개발하는 데 사용할 수있는 웹 서비스 개발 프레임 워크입니다. CXF는JAX-RS and JAX-Ws 표준.
현재 가장 널리 사용되는 웹 서비스 개발 프레임 워크입니다. CXF는 현재 점차 CXF로 대체되고있는 Axis2에 대해 학습하고 개선했습니다.
CXF 대 Axis2
CXF | 축 2 | |
---|---|---|
개량 | CXF는 현재 가장 많이 사용되는 프레임 워크입니다. Axis2보다 많이 개선 되었습니다. |
Axis2는 점차 CXf로 대체되고 있습니다. CXF에 비해 더 많은 코드가 필요합니다. |
코드 필요 | CXF는 Axis2에 비해 더 적은 코드를 필요로합니다. |
Axis2에는 상대적으로 더 많은 코드가 필요합니다. |
표준 준수 | CSF는 JAX-RS 및 JAX-WS와 완전히 호환됩니다. |
Axis2는 JAX-RS 및 JAX-WS와 완전히 호환되지 않습니다. |
Spring과 호환 | 예 |
아니 |
프런트 엔드 분리 | JAX-WS 코드에서 프런트 엔드를 깔끔하게 분리 |
깨끗한 분리가 제공되지 않습니다. |
비누
SOAP는 Simple Object Access Protocol을 나타냅니다. 두 시스템간에 웹 서비스를 통해 구조화 된 정보를 교환하기위한 프로토콜입니다. 주로 데이터 구조화를 위해 XML에 의존하고 메시지 협상 및 전송을 위해 HTTP 또는 SMTP를 사용합니다.
SOAP 웹 서비스를 개발하는 데는 두 가지 접근 방식이 있습니다.
Code first −이 접근 방식에서 WSDL은 코드에서 생성됩니다.
Contract first − 계약에서 먼저 WSDL에서 코드가 생성됩니다.
CXF를 사용한 SOAP 개발
Maven 구성
Maven의 settings.xml에 다음 프로필을 추가합니다.
<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/} com.to 클래스의 PersonService
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] ------------------------------------------------------------------------