JBoss Fuse - Apache CXF
在本章中,我们将讨论什么是 Apache CXF,以及它如何有助于开发 SOAP 和 Rest Web 服务。
什么是 Apache CXF?
Apache CXF 是一个 Web 服务开发框架,可用于开发 SOAP 和 Rest Web 服务。CXF 完全符合 JAX-RS 和 JAX-Ws 标准。
它是目前使用最广泛的 Web 服务开发框架。 CXF 吸取了 Axis2 的教训并进行了改进,而 Axis2 现已逐渐被 CXF 取代。
CXF 与 Axis2
CXF | Axis2 | |
---|---|---|
改进 | CXF 是目前使用最广泛的框架。 与 Axis2 相比,它有很多改进 |
Axis2 正逐渐被 CXf 取代。 与 Axis2 相比,它需要更多代码CXF |
所需代码 | 与 Axis2 相比,CXF 所需的代码较少 |
Axis2 所需的代码相对较多 |
标准合规性 | CSF 完全符合 JAX-RS 和 JAX-WS |
Axis2 不完全符合 JAX-RS 和 JAX-WS |
与 Spring 兼容 | 是 |
否 |
前端分离 | 前端与 JAX-WS 代码的清晰分离 |
未提供清晰的分离 |
SOAP
SOAP 代表简单对象访问协议。它是一种在两个系统之间通过 Web 服务交换结构化信息的协议。它主要依靠 XML 来构造数据,并使用 HTTP 或 SMTP 进行消息协商和传输。
开发 SOAP Web 服务有两种方法 −
代码优先 − 在这种方法中,WSDL 是从代码生成的。
契约优先 −首先,在 contract 中,代码是从 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>
创建 Skeleton
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
构建 Web 服务项目。
mvn clean install
使用以下命令将 web 服务安装到 Fuse 中。
JBossFuse:karaf@root>install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSH
检查 bundle 是否已注册 SOQP web 服务
打开 URL http://localhost:8181/cxf

web 服务应按如下方式列出。
测试 Web 服务
mvn -Pclient
INFO − 从类 com.to 创建服务 {http://ws.totorials.com/} 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] ------------------------------------------------------------------------