Servlet 3.x 컨테이너에서 Jersey 서블릿 컨테이너 (2.x) 설명자없이 javax.servlet.Filter
으로 실행하는 방법이 있습니까? 나는 필터로 실행할 때 jersey.config.servlet.filter.forwardOn404
또는 jersey.config.servlet.filter.staticContentRegex
가있는 경우에만 자바 독서블릿 3.x 컨테이너에서 서술자없는 Jersey 서블릿 컨테이너가 필터로 실행됩니다.
속성은 저지 서블릿 컨테이너는 모두 javax로 실행하도록 구성된 경우에만 적용에 따라 작업을 사용해야하므로 내 서비스와 함께 정적 리소스를 제공하고 필요 .servlet.Filter. 그렇지 않으면이 등록 정보가 무시됩니다.
내가 원하는 내 사용자 정의 Application
클래스의 web.xml
완전히
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>My-Webservice</display-name>
<filter>
<filter-name>Jersey Filter</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.foo.webservices.MyApplication</param-value>
</init-param>
</filter>
</web-app>
제거하고 모든 것을 가지고 얻을 수 있습니다
@ApplicationPath(value = "/")
public class MyApplication extends ResourceConfig
{
public MyApplication()
{
packages("com.foo.webservices.services");
property(ServletProperties.FILTER_FORWARD_ON_404, true);
}
}
공식 문서 (https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.3이) 아무것도 언급하지 않습니다 불행히도 필터에 대해서.
멋진 대답 완전한 예를 볼 수 있습니다, 감사합니다. 응용 프로그램 클래스로'org.glassfish.jersey.server.ResourceConfig $ RuntimeConfig'를 잘못 판단한 것처럼 getApplicationClass 메소드에 다른 검사를 추가해야했습니다. 방금 break 문에 if (applicationCls! = null && applicationCls.getAnnotation (ApplicationPath.class)! = null)'을 추가했습니다. – lazlev