Spring과 Jersey를 모두 사용하는 Servlet 3.0 웹 앱이 있습니다. 현재 web.xml에서 필터로 구성된 SpringServlet과 @Path
및 @Component
이라는 주석이 달린 리소스 클래스를 사용하여 설정했습니다. 다음은 web.xml 코드입니다.annotation만을 사용하여 Spring에서 Jersey를 구성하는 방법
<filter>
<filter-name>jersey-serlvet</filter-name>
<filter-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</filter-class>
<init-param>
<param-name>
com.sun.jersey.config.property.packages
</param-name>
<param-value>com.foo;com.bar</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jersey-serlvet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
이 설정은 작동하지만이 설정은 주석이있는 경우에만 적용됩니다. no web.xml config. 첫 번째 시도는 위의 SpringServlet 구성을 제거하고 Application
을 확장하는 클래스를 만드는 것입니다. 다음은 그의 조각입니다 :
@ApplicationPath("/*")
public class MyApplication extends PackagesResourceConfig {
public MyApplication() {
super("com.foo;com.bar");
HashMap<String, Object> settings = new HashMap<String, Object>(1);
settings.put(ServletContainer.FEATURE_FILTER_FORWARD_ON_404, true);
this.setPropertiesAndFeatures(settings);
}
}
이는 JAX-RS 자원이 등록되어 내가 해당 URL에 그들을 칠 수 있다는 점에서 작동은하지만 시도하고 이것이하게 ... 자신의를 autowire 속성을 사용할 때 그들은 NullPointerExceptions를 던져 왜냐하면 저는 자원이 Jersey에 의해로드되고 있고 Spring 관리 bean이 아니므로 autowiring이 없기 때문입니다.
주위를 둘러싼 검색에도 불구하고 저지 (Jersey) 리소스를 주석이있는 스프링 빈으로로드하는 방법을 찾을 수 없습니다. 그런 방법이 있습니까? 리소스를 수동으로 Spring 컨텍스트를 가져오고 도움을 줄 수있는 DI 호출 코드를 작성하고 싶지는 않습니다.
annotations-only가 작동하지 않을 경우, 검사 할 패키지 목록 대신로드 할 Application
클래스를 지정할 수 있으면 web.xml에 필터 설정으로 살 수 있습니다. 패키지 목록을 없애고 Application
클래스 인스턴스를 지정하면 내용에 만족하게 될 것입니다.
분명히 누군가가 나를 위해 확실한 답을 얻은다면 좋겠지 만, 다른 포인터 나 시도 할만한 것들에 대한 조언이나 힌트에 감사 할 것입니다.
덕분에, 매트
감사
최대 절전 모드 설정,하지만 난 저지 1 사용하고 있는데 내가 어떤 문제가 점점이없는 :
config.package
에서구성 클래스는 Jersey 리소스가로드되어 실행 중입니다. 문제는 제가 스프링에 의해 관리되기를 원해서 autowiring이되는 것입니다. – Doughnuts
좋습니다. 그렇다면이 방법은 해결책이 아닙니다. 그러나 이것은 분명히 알 수 있습니다 : 이것은 스프링 자동 와이어 링을 가능하게합니다. – rustyx