2017-03-15 11 views
1

서블릿 2.5의 경우 Jersey를 Tomcat에 연결하기 위해 Jersey 컨테이너 서블릿을 web.xml에 선언해야합니다.저지가 서블릿 3 컨테이너에 연결되는 방법

<web-app> 
    <servlet> 
     <servlet-name>MyApplication</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      ... 
     </init-param> 
    </servlet> 
</web-app> 

서블릿 3.x를 위해, 우리는 같은 일을 할 수 있습니다. 그러나 web.xml에서 Jersey 컨테이너 서블릿을 제거하고 Application 하위 클래스를 직접 컨테이너에 넣을 수도 있습니다.

<web-app> 
    <servlet> 
     <servlet-name>org.foo.rest.MyApplication</servlet-name> 
    </servlet> 
    ... 
    <servlet-mapping> 
     <servlet-name>org.foo.rest.MyApplication</servlet-name> 
     <url-pattern>/resources</url-pattern> 
    </servlet-mapping> 
    ... 
</web-app> 

이 경우 Jersey가 Tomcat에 어떻게 통합되어 있습니까? Application 클래스는 암시 적으로 무언가를 수행합니까? 아니면 서블릿 클래스 패스에서 Jersey jar를 자동으로 검색합니까?

+0

: (@peeskillet 코멘트에서) 뉴저지는 서블릿 컨테이너 이니셜 라이저를 사용 또 다른 대안은 web.xml에'servlet-mapping'을 포함하지 않고 Application 서브 클래스에'@ javax.ws.rs.ApplicationPath ("/ rest-path")를 추가하는 것입니다. –

답변

1

내가 저지를 구현하는 방법을 정확하게 모르겠지만, 여러 가지 방법들이 이용 될 수있다 : 라이브러리를 할 수 있습니다

  • 는 서블릿 3.0 (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContainerInitializer.html)에 도입라는 기능 ServletContainerInitializer있다가/런타임에 웹 응용 프로그램의 시작 단계에 대한 알림을 받고 그에 대한 응답으로 서블릿, 필터 및 수신기의 필수 프로그래밍 방식 등록 수행

  • web-fragment으로 라이브러리를 만들면 web-fragment.xml 너 병 안에 서블릿/필터/etc를 등록 할 수 있습니까? 그런 다음 시작시이 web-fragment.xmlweb.xml과 병합됩니다. 그들은 web.xml 파일에 등록 된 것처럼 결과적으로 웹 조각에 등록 된 구성 요소를 취급


편집 : https://github.com/jersey/jersey/blob/master/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java

+1

첫 번째 -> https://github.com/jersey/jersey/blob/master/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java –

+0

@peeskillet thanks , 내 대답을 업데이트했습니다. –