Tomcat 如何修改响应头
我在Jersey服务器上运行rest服务,配置如下:Tomcat 如何修改响应头,tomcat,jersey,jetty,Tomcat,Jersey,Jetty,我在Jersey服务器上运行rest服务,配置如下: try { final ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath(serverConfig.getContextPath()); final Server jettyServer = new Server(serverConfig.
try {
final ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath(serverConfig.getContextPath());
final Server jettyServer = new Server(serverConfig.getPort());
jettyServer.setHandler(context);
ResourceConfig config = new ResourceConfig();
config.register(CORSResponseFilter.class);
final ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, serverConfig.getBaseName());
jerseyServlet.setInitOrder(0);
jerseyServlet.setInitParameter("jersey.config.server.provider.packages", "com.myRest.rest");
jerseyServlet.setInitParameter("jersey.config.server.provider.classnames", entryPoints());
jettyServer.start();
jettyServer.join();
} catch (Exception e) {
e.printStackTrace();
}
我正在尝试修改所有响应的标题,以便使用过滤器:
@Provider
public class CORSResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
MultivaluedMap headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia");
}
}
但是,由于某些原因,从未调用此筛选器
我正在使用Embed jetty 9.2.13.v20150730。我已经看到一些建议更改web.xml的答案,但我没有使用xml配置
由于某些原因,从未调用此筛选器
因为您没有对注册过滤器的ResourceConfig
执行任何操作。您可以实例化它,将ResourceConfig
传递给构造函数,而不是将ServletContainer
类用于addServlet
ServletHolder jerseyServlet = new ServletHolder(new ServletContainer(config));
jerseyServlet.setInitOrder(0);
context.addServlet(jerseyServlet, serverConfig.getBaseName());
也可以不用init参数,只需使用ResourceConfig
注册所有内容。您可以使用packages
方法设置包扫描,只需使用register
方法注册所有提供程序(而不是使用init参数的字符串类名)
ResourceConfig config = new ResourceConfig()
.packages("com.myRest.rest")
.register(CORSResponseFilter.class)
.register(AnyOtherProviderClass.class)
.register(LikeTheOnesYouListedInThe_entryPoints.class)