Czy można skonfigurować aplikację JAX-RS tylko przy użyciu adnotacji? (przy użyciu Servlet 3.0 i JAX-RS Jersey 1.1.0)
Próbowałem i nie miałem szczęścia. Korzystanie z niektórych web.xml
wydaje się wymagane.
Konfiguracja A (działa, ale ma konfigurację web.xml)
web.xml
...
<servlet>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
Jawa
@ApplicationPath("/")
public class MyApplication extends Application {
...
}
Konfiguracja B (nie działa, zgłoszony wyjątek)
@ApplicationPath("/")
@WebServlet("/*") // <--
public class MyApplication extends Application {
...
}
Ten ostatni wydaje się nalegać, że aplikacja będzie podklasą serwletu (wyjątek nie pozostawia domysłów)
java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet
pytania
Dlaczego definicja web.xml zadziałała, a adnotacja nie? Co za różnica?
Czy jest sposób, aby to zadziałało, np. Mieć aplikację JAX-RS bez pliku web.xml?