Как настроить приложение JAX-RS, используя только аннотации (без web.xml)?

Можно ли настроить приложение JAX-RS, используя только аннотации? (С использованием Servlet 3.0 и JAX-RS Jersey 1.1.0)

Я пытался, но безуспешно. некоторые web.xml кажутся необходимыми.


Конфигурация A (работает, но имеет конфигурацию 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>
   ...

Java

@ApplicationPath("/")
public class MyApplication extends Application {
    ...
}

Конфигурация B (не работает, выбрано исключение)

@ApplicationPath("/")
@WebServlet("/*") // <-- 
public class MyApplication extends Application {
    ...
}

Последний, похоже, настаивает на том, что приложение будет подклассом сервлета (исключение не оставляет никаких догадок)

java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet

Вопросы

  1. Почему определение web.xml сработало, а аннотация - нет? В чем разница?

  2. Есть ли способ, чтобы это работало, например, иметь приложение JAX-RS без web.xml?

76
задан xingbin 19 April 2018 в 13:28
поделиться