我有一些网络服务(JAX-RS、WildFly 9、Resteasy)
@RequestScoped
public class SomeService{
// operations
}
现在我想提取上下文信息,例如用户代理,这可以使用
@Context
private HttpHeaders httpHeaders;
似乎只能在 JAX-RS 相关类中注入此上下文,但不能在 Web 服务调用的 CDI bean 中注入。可以将其放入 Web 服务中,但这会使服务与与服务的核心响应无关的内容变得混乱。
经过一番搜索后,我最终使用了javax.ws.rs.ext.Provider
注解。看来生产出来的ContextInformation
然后,对象可以在其他 CDI-bean 中使用,而不仅仅是在 JAX-RS bean 中。
@Provider
public class ContextInformationProducer {
@Produces
@RequestScoped
public ContextInformation create() {
ContextInformation contextInformation = new ContextInformation();
contextInformation.setBrowserUserAgent(httpHeaders.getHeaderString("User-Agent"));
}
问题是这是否是好的做法?或者这只是巧合?如果这不是好的做法,我怎样才能以更好的方式做到这一点?
看完之后JAX-RS 中的 Provider 是什么意思? https://stackoverflow.com/questions/13557442/what-does-provider-in-jax-rs-mean,我不确定我是否在“扩展和定制 JAX-RS 运行时”。应用程序开发人员应该使用它吗?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)