2.27. CXF
使用 Apache CXF 公开 SOAP WebServices,或使用 CXF WS 客户端连接到外部 WebServices。
2.27.1. 什么是内部 复制链接链接已复制到粘贴板!
-
cxf 组件, URI 语法:
cxf:beanId:address
有关用法和配置详情,请参阅上述链接。
2.27.2. Maven 协调 复制链接链接已复制到粘贴板!
在 code.quarkus.redhat.com 上使用此扩展创建新项目
或者将协调添加到现有项目中:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cxf-soap</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cxf-soap</artifactId>
</dependency>
2.27.3. 使用方法 复制链接链接已复制到粘贴板!
2.27.3.1. General 复制链接链接已复制到粘贴板!
camel-quarkus-cxf-soap 使用 CXF Extensions for Quarkus 项目的扩展 - quarkus-cxf。这意味着支持的用例和 WS 规格由 quarkus-cxf 提供。
要了解支持的用例和 WS 规格,请参阅 Quarkus CXF 参考。
2.27.3.2. 依赖项管理 复制链接链接已复制到粘贴板!
CXF 和 quarkus-cxf 版本由 {project-name} 管理。您不需要为这些项目选择兼容版本。
2.27.3.3. 客户端 复制链接链接已复制到粘贴板!
使用 camel-quarkus-cxf-soap (不需要额外的依赖项),您可以在 Camel 路由中使用 CXF 客户端作为制作者:
CalculatorService 可能类似如下:
您可以针对实施此服务端点接口的 quay.io/l2x6/calculator-ws:1.2 容器来测试此客户端应用程序:
docker run -p 8082:8080 quay.io/l2x6/calculator-ws:1.2
docker run -p 8082:8080 quay.io/l2x6/calculator-ws:1.2
quarkus-cxf 支持使用 @io.quarkiverse.cxf.annotation.CXFClient 注释 注入 SOAP 客户端。如需更多详细信息,请参阅 quarkus-cxf 用户指南中的 SOAP 客户端 章节。
2.27.3.4. 服务器 复制链接链接已复制到粘贴板!
使用 camel-quarkus-cxf-soap,您可以在 Camel 路由中将 SOAP 端点公开为消费者。这个用例不需要额外的依赖项。
提供这两个服务的路径取决于 quarkus.cxf.path配置属性的值,该配置属性 可在 application.properties 中设置:
application.properties
quarkus.cxf.path = /soap-services
quarkus.cxf.path = /soap-services
此配置就位后,可以在 http://localhost:8080/soap-services/hello-bean 和 http://localhost:8080/soap-services/hello-inline 下分别访问这两个服务。
可以通过将 ?wsdl 添加到上述 URL 来访问 WSDL。
不要在应用程序中使用 quarkus.cxf.path = /,除非您完全确保没有其他扩展想公开 HTTP 端点。
在 quarkus-cxf 2.0.0 (即 {project-name} 3.0.0 之前)之前,quarkus.cxf.path 的默认值为 /。默认已被修改,因为它阻止其他 Quarkus 扩展公开任何其他 HTTP 端点。另一些是 RESTEasy、Vert.x、smallRye Health (无健康端点公开)受到此问题的影响。
Quarkus-cxf 支持公开 SOAP 端点的替代方法。如需更多详细信息,请参阅 quarkus-cxf 用户指南中的 SOAP 服务章节。
2.27.3.5. 请求和响应记录 复制链接链接已复制到粘贴板!
您可以为带有 org.apache.cxf.ext.logging.LoggingFeature 的客户端和服务器启用 SOAP 消息的详细日志记录:
对 org.apache.cxf.ext.logging.LoggingFeature 的支持由 io.quarkiverse.cxf:quarkus-cxf-rt-features-logging 作为 camel-quarkus-cxf-soap 依赖项提供。您不需要将其显式添加到应用程序中。
2.27.3.6. WS 规格 复制链接链接已复制到粘贴板!
支持的 WS 规格的扩展由 Quarkus CXF 项目提供。
camel-quarkus-cxf-soap 只能通过 io.quarkiverse.cxf:quarkus-cxf 扩展涵盖以下规格:
- JAX-WS
- JAXB
- WS-Addressing
- WS-Policy
- MTOM
如果您的应用程序需要其他 WS 规格,如 WS-Security 或 WS-Trust,您必须添加额外的 Quarkus CXF 依赖项。请参阅 Quarkus CXF Reference 页面,以查看 Quarkus CXF 扩展涵盖哪些 WS 规格。
{project-name} 和 Quarkus CXF 都包含多个集成测试,可作为实施各种 WS 规格的应用程序的可执行示例。https://github.com/apache/camel-quarkus/tree/3.15.x/integration-test-groups/cxf-soap https://github.com/quarkiverse/quarkus-cxf/tree/{quarkus-cxf-version}/integration-tests
2.27.3.7. 工具 复制链接链接已复制到粘贴板!
quarkus-cxf 包装以下两个 CXF 工具:
-
wsdl2Java- 用于从 WSDL 生成服务类 -
java2ws- 用于从 Java 类生成 WSDL
要使 wsdl2Java 正常工作,您的应用程序需要直接依赖于 io.quarkiverse.cxf:quarkus-cxf。
虽然不支持 wsdlvalidator,但您可以使用带有 application.properties 中的以下配置的 wsdl2Java 来验证 WSDLs:
application.properties
quarkus.cxf.codegen.wsdl2java.additional-params = -validate
quarkus.cxf.codegen.wsdl2java.additional-params = -validate
2.27.4. 其他 Camel Quarkus 配置 复制链接链接已复制到粘贴板!
| 配置属性 | 类型 | default |
|---|---|---|
|
要使 CXF 服务接口正常工作,需要构建时生成一些辅助类(如请求和响应打包程序)。Camel Quarkus 允许
因为 https://issues.apache.org/jira/browse/CXF-8834,默认排除 |
|
|
在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。