2013-03-18 3 views
0

Я использую следующие настройки для развертывания REST веб-сервиса на сервере Tomcat 6, и она работает:Джерси RESTful развертывание на сервере Tomcat 6

<web-app> 
    <servlet> 
    <servlet-name>RestServlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>RestServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

С выше настройками, Tomcat сканирует WEB-INF/classes и WEB-INF/lib папки для ресурсов.

Затем я изменил его на следующую установку использовать Application суб-класс:

<web-app> 
    <servlet> 
    <servlet-name>RestServlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
      <param-name>javax.ws.rs.Application</param-name> 
      <param-value>test.MyApplication</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>RestServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

где test.MyApplication является подкласс Application возвращение класса ресурсов:

public class MyApplication extends Application { 
    public Set<Class<?>> getClasses() { 
    Set<Class<?>> s = new HashSet<Class<?>>(); 
    s.add(MyResource.class); 
    return s; 
    } 
} 

Но все-таки сервер сканирует WEB-INF/classes и WEB-INF/lib за ресурсы.

Что мне не хватает? Проверяет ли сервер WEB-INF, когда Application подкласс установлен в web.xml?

ответ

1

Поддерживает ли сервер до сих пор сканирование WEB-INF, если подклассом приложения установлено в web.xml?

Нет, это не так. The documentation explains, что сканирование пути выполняется, если нет параметров инициализации, связанных с конфигурацией ресурсов (например, javax.ws.rs.Application).

Вы должны увидеть, что находится в ваших журналах сервера. Когда Джерси инициализирует он записывает то, что он делает и для пути к классам отсканировать печатает что-то вроде:

INFO: Сканирование для корневых ресурсов и провайдеров классов в путях ресурсов Web приложений:
/WEB-INF/Библиотека
/WEB-INF/классы

Когда подающие Application класс печатает вместо этого:

INFO: экземпляра класса Application test.MyApplicati на

Вы должны убедиться, что файл web.xml развернут при запуске сервера. Возможно, у вас все еще есть старая версия.

Смежные вопросы