是否可以在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呼叫?
答案 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上的全局模块。