29.2. 通过注入实例化代理
概述 复制链接链接已复制到粘贴板!
Apache CXF 使用 Spring Framework 可让您避免使用 JAX-WS API 创建服务代理。它允许您在配置文件中定义客户端端点,然后将代理直接注入实施代码。当运行时实例化 implementation 对象时,它还会根据配置实例化外部服务的代理。该实施通过引用实例化代理来分发。
由于代理使用配置文件中的信息实例化,因此 WSDL 位置不需要硬编码。它在部署时可以更改。您还可以指定运行时应搜索 WSDL 的类路径。
流程 复制链接链接已复制到粘贴板!
要将外部服务的代理注入服务提供商的实现中,请执行以下操作:
配置代理 复制链接链接已复制到粘贴板!
您可以使用应用配置文件中的 jaxws:client
元素配置 JAX-WS 客户端端点。这将告知运行时使用指定属性实例化 org.apache.cxf.jaxws.JaxWsClientProxy
对象。此对象是要注入到服务提供商的代理。
您至少需要为以下属性提供值:
-
id
- 指定用于识别要注入的客户端的 ID。 -
serviceClass
-Spec 标识代理发出请求的服务的 SEI。
例 29.1 “配置要注入服务实施中的代理” 显示 JAX-WS 客户端端点的配置。
例 29.1. 配置要注入服务实施中的代理
在 例 29.1 “配置要注入服务实施中的代理” 中,wsdlLocation
属性指示运行时从类路径加载 WSDL。如果 books.wsdl
在 classpath 上,则运行时将能够找到它。
有关配置 JAX-WS 客户端的详情,请参考 第 17.2 节 “配置消费者端点”。
对供应商实施进行编码 复制链接链接已复制到粘贴板!
您可以使用 @Resource
将配置的代理注入服务实施中,如 例 29.2 “将代理注入服务实现” 所示。
例 29.2. 将代理注入服务实现
该注释的 name
属性对应于 JAX-WS 客户端的 id
属性的值。配置的代理会在注释后立即注入到 BookService
对象中。您可以使用此对象在代理的外部服务上进行调用。