リソースをインターフェースに分割しました-より理にかなっているのでimplですが、リソースをスキャンするようにした場合、これは最新リリースのジャージではサポートされていないようです。
web.xmlでリソースを手動で定義するにはどうすればよいですか?web.xmlでリソースimplを手動で定義した場合、これは機能しますか?
ありがとうアレックス
[1]。javax.ws.rs.core.Applicationを拡張する Java クラスを作成し、リソースを登録します。
public class MyRESTApp
extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(MyResource.class);
....
return s;
}
}
[2]。web.xml でアプリケーションを登録するspringを使用している場合は、web.xml で:
<servlet>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.xxx.MyRESTApp</param-value>
</init-param>
...
</servlet>
guiceを使用している場合、web.xml で:
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.xx.MyGuiceServletContextListener</listener-class>
</listener>
次に、 com.google.inject.servlet.GuiceServletContextListenerを拡張する Java クラス MyGuiceServletContextListener を作成します。
public class MyGuiceServletContextListener
extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
// Route all requests through GuiceContainer
// IMPORTANT
// If this property is not defined guice tries to find the @Path annotated types defied at the injector
Map<String,String> params = new HashMap<String, String>();
params.put("javax.ws.rs.Application",
MyRESTApp.class.getName());
serve("/*").with(GuiceContainer.class,
params);
});
}
}