18.2. 配置 JAX-RS 客户端端点


18.2.1. 定义 JAX-RS 客户端端点

注入客户端代理

在 XML 语言(Blueprint XML 或 Spring XML)中实例化客户端代理的主要点是用来将它注入到另一个 bean 中,然后使用客户端代理调用 REST 服务。要在 XML 中创建客户端代理 bean,请使用 jaxrs:client 元素。

命名空间

JAX-RS 客户端端点使用与服务器端点 不同的 XML 命名空间来定义。下表显示了要用于哪些 XML 语言的命名空间:

XML 语言客户端端点的命名空间

蓝图(Blueprint)

http://cxf.apache.org/blueprint/jaxrs-client

Spring

http://cxf.apache.org/jaxrs-client

基本客户端端点定义

以下示例演示了如何在 Blueprint XML 或 Spring XML 中创建客户端代理 bean:

<jaxrs:client id="restClient"
       address="http://localhost:8080/test/services/rest"
       serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"/>

在什么位置,您必须设置以下属性来定义基本客户端端点:

id
客户端代理的 bean ID 可用于将客户端代理注入到 XML 配置中的其他 Bean 中。
address
address 属性指定 REST 调用的基本 URL。
serviceClass
serviceClass 属性通过指定根资源类(由 @Path标示)来提供 REST 服务的描述。实际上,这是一个 服务器 类,但不由客户端直接使用。指定的类仅用于其元数据(通过 Java 反映和 JAX-RS 注解),用于动态构建客户端代理。

指定标头

您可以使用 jaxrs:headers 子元素在客户端代理调用中添加 HTTP 标头,如下所示:

<jaxrs:client id="restClient"
       address="http://localhost:8080/test/services/rest"
       serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"
       inheritHeaders="true">
       <jaxrs:headers>
           <entry key="Accept" value="text/xml"/>
       </jaxrs:headers>
</jaxrs:client>

18.2.2. jaxrs:client 属性

属性

表 18.3 “JAX-RS 客户端端点属性” 描述 jaxrs:client 元素中可用的属性。

表 18.3. JAX-RS 客户端端点属性
属性描述

address

指定消费者要发出请求的端点的 HTTP 地址。这个值覆盖合同中设置的值。

bindingId

指定消费者使用的消息绑定 ID。第 23 章 Apache CXF Binding ID 中提供了有效绑定 ID 列表。

bus

指定管理端点的 Spring bean 配置总线的 ID。

inheritHeaders

指定从这个代理创建子资源代理时是否会继承此代理的标头。默认为 false

username

指定用于简单用户名/密码身份验证的用户名。

password

指定用于简单用户名/密码身份验证的密码。

modelRef

将模型模式指定为类路径资源(例如,格式为 classpath:/path/to/model.xml的 URL)。有关如何定义 JAX-RS 模型模式的详情,请参考 第 18.3 节 “使用模型定义 REST 服务”

serviceClass

指定服务接口的名称或资源类(使用 @PATH标注),从 JAX-RS 服务器实施重新使用。在这种情况下,指定的类 不会 直接调用(实际上是一个服务器类)。指定的类仅用于其元数据(通过 Java 反映和 JAX-RS 注解),用于动态构建客户端代理。

serviceName

在特殊情况下,在使用 JMS 传输时指定 JAX-RS 端点的 service QName (使用 ns:name)。详情请查看 “使用 JMS 传输”一节

threadSafe

指定客户端代理是否为 thread-safe。默认为 false

transportId

选择非标准传输层(代替 HTTP)。特别是,您可以通过将此属性设置为 http://cxf.apache.org/transports/jms 来选择 JMS 传输。详情请查看 “使用 JMS 传输”一节

abstract

(仅 Spring) 如果 bean 是一个抽象 bean,则指定。抽象 bean 作为 concrete bean 定义的父项,它们不会被实例化。默认值为 false。把它设置为 true 会指示 bean 工厂不要实例化 bean。

depends-on

(仅Spring) 指定端点在实例化前取决于实例化的 Bean 列表。

18.2.3. jaxrs:client Child Elements

子元素

表 18.4 “JAX-RS 客户端端点子元素” 描述 jaxrs:client 元素的子元素。

表 18.4. JAX-RS 客户端端点子元素
element描述

jaxrs:executor

 

jaxrs:features

指定配置 Apache CXF 高级功能的 Bean 列表。您可以提供 bean 参考列表或嵌入式 Bean 列表。

jaxrs:binding

未使用.

jaxrs:dataBinding

指定实施端点使用的数据绑定的类。这可以通过一个嵌入式 bean 定义来指定。如需了解更多详细信息,请参阅 “指定数据绑定”一节

jaxrs:inInterceptors

指定处理入站响应的拦截器列表。更多信息请参阅 第 VII 部分 “开发 Apache CXF Interceptors”

jaxrs:inFaultInterceptors

指定处理入站错误信息的拦截器列表。更多信息请参阅 第 VII 部分 “开发 Apache CXF Interceptors”

jaxrs:outInterceptors

指定处理出站请求的拦截器列表。更多信息请参阅 第 VII 部分 “开发 Apache CXF Interceptors”

jaxrs:outFaultInterceptors

指定处理出站错误消息的拦截器列表。更多信息请参阅 第 VII 部分 “开发 Apache CXF Interceptors”

jaxrs:properties

指定传递给端点的属性映射。

jaxrs:providers

允许您将一个或多个自定义 JAX-RS 提供程序注册到此端点。此元素的子项是 (bean 元素)或对(ref 元素) JAX-RS 提供程序的引用。

jaxrs:modelBeans

由一个或多个 org.apache.cxf.jaxrs.model.UserResource beans 的引用列表组成,它们是资源模型的基本元素(corresponding to jaxrs:resource 元素)。详情请查看 第 18.3 节 “使用模型定义 REST 服务”

jaxrs:model

在此端点中直接定义资源模型(即 jaxrs:model 元素),其中包含一个或多个 jaxrs:resource 元素。详情请查看 第 18.3 节 “使用模型定义 REST 服务”

jaxrs:headers

用于设置传出消息上的标头。详情请查看 “指定标头”一节

jaxrs:schemaLocations

指定用于验证 XML 消息内容的一个或多个 XML 模式。此元素可以包含一个或多个 jaxrs:schemaLocation 元素,各自指定 XML 模式文件的位置(通常是 类路径 URL)。详情请查看 “模式验证”一节

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.