最近几天,我一直在努力解决一个问题。我在OSGi
容器内创建了一个由Grizzly服务器托管的休息服务。在这一点上,一切都很完美。
现在,我想在每个回复中添加一个标题。不是那么复杂或不合逻辑吗?然而,我找不到办法去做。
我试过:
1)在this question建议的其余函数中获取响应对象(当你不在OSGi下时,漂亮的教科书)。
2)使用上面的代码添加处理程序(在这种情况下,永远不会调用服务方法)
server.getServerConfiguration().addHttpHandler(
new HttpHandler() {
@Override
public void service(Request arg0, Response arg1)
throws Exception {
arg1.setHeader("Access-Control-Allow-Origin", "*");
}
});
我正在使用jersey-server / client / core 1.18.1和grizzly2-server 1.18.1,因此我更喜欢可以在这个版本中应用的解决方案,但我愿意更新jar版本,如果它无法完成在1.18.x。
答案 0 :(得分:2)
你可以尝试一下泽西过滤器 简而言之,您应该创建实现ContainerResponseFilter的类:
public class MyFilter implements ContainerResponseFilter {
@Override
public void filter(
ContainerRequest request,
ContainerResponse response
) throws IOException {
request.getHttpHeaders().add(<header name>, <header value>);
}
}
然后,您应该在Jersey服务器配置中注册此过滤器 请注意,每个响应都会调用此过滤器。要将其仅绑定到特定资源,您可以使用注释绑定,即here 您可以找到的所有其他信息here。