在JBoss EAP 7上注册服务器范围的javax.ws.rs.client.ClientRequestFilter

时间:2018-01-29 22:21:33

标签: jax-rs jboss-eap-7

是否可以在JBoss EAP 7上注册{{1}}服务器端?我想拦截所有出站JAX-RS调用,以在HTTP头中动态添加一些上下文信息。

对于JAX-WS调用,我可以使用https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html-single/developing_web_services_applications/#jax_ws_handler_chains执行此操作。我找不到关于JAX-RS类似机制的任何文档。

或者,是否可能有其他方法来拦截出站HTTP呼叫?

2 个答案:

答案 0 :(得分:0)

对于每服务器解决方案,根据Using HttpHandler class in Undertow“您需要将处理程序打包到模块中,并在下位子系统中配置自定义过滤器。”

已经给出了module.xml示例和下载配置以及过滤器源代码!

<强>更新 有一个使用HTTPExchange here的例子,虽然我真的不关心那个网站。 SO也有这个稍微相关的例子 - 看起来它看起来像JAX-WS处理程序/拦截器How to properly read post request body in a handler的工作方式类似

另一个很好的例子file upload using httphandler我知道他们在处理JAX-RS方面有所不同,但仍然适用。

答案 1 :(得分:0)

我通过创建一个包含以下内容的模块来实现它:

package be.fgov.kszbcss.tracer.jaxrs;

import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;

public class TracerResteasyClientBuilder extends ResteasyClientBuilder {
    @Override
    public ResteasyClient build() {
        return super.build().register(TracerJaxRsClientRequestFilter.class);
    }
}

/META-INF/services/javax.ws.rs.client.ClientBuilder

be.fgov.kszbcss.tracer.jaxrs.TracerResteasyClientBuilder

将其注册为JBoss EAP上的全局模块。