не удалось развернуть спокойный профиль свободы приложения 8.2

Я пытаюсь развернуть веб-сервисы RESTful в профиле свободы 8.5.5.2. Я включил функцию jaxrs-1.1 на сервере и использую Java 1.7. Когда я запускаю сервер, он выдает следующую ошибку:

[ERROR   ] Uncaught.init.exception.thrown.by.servlet 
                                                                                                               JAX-RS Servlet
                                                                                                               accessms
                                                                                                               java.lang.NoClassDefFoundError: org/apache/wink/server/handlers/HandlersFactory
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at com.ibm.ws.classloading.internal.AppClassLoader.definePackageAndClass(AppClassLoader.java:275)
    at [internal classes]
    at org.apache.wink.server.internal.DeploymentConfiguration.initHandlers(DeploymentConfiguration.java:456)
    at org.apache.wink.server.internal.DeploymentConfiguration.init(DeploymentConfiguration.java:169)
    at org.apache.wink.server.internal.servlet.RestServlet.getDeploymentConfiguration(RestServlet.java:184)
    at org.apache.wink.server.internal.servlet.RestServlet.createRequestProcessor(RestServlet.java:129)
    at org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:94)
    at javax.servlet.GenericServlet.init(GenericServlet.java:161)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:325)
    at [internal classes]

[ERROR   ] SRVE0266E: Error occured while initializing servlets: javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception created by servlet
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:395)
    at [internal classes]
Caused by: java.lang.NoClassDefFoundError: org/apache/wink/server/handlers/HandlersFactory
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at com.ibm.ws.classloading.internal.AppClassLoader.definePackageAndClass(AppClassLoader.java:275)
    at [internal classes]
    at org.apache.wink.server.internal.DeploymentConfiguration.initHandlers(DeploymentConfiguration.java:456)
    at org.apache.wink.server.internal.DeploymentConfiguration.init(DeploymentConfiguration.java:169)
    at org.apache.wink.server.internal.servlet.RestServlet.getDeploymentConfiguration(RestServlet.java:184)
    at org.apache.wink.server.internal.servlet.RestServlet.createRequestProcessor(RestServlet.java:129)
    at org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:94)
    at javax.servlet.GenericServlet.init(GenericServlet.java:161)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:325)
    ... 1 more

Ниже приведена запись в моем файле web.xml:

<servlet>
        <servlet-name>JAX-RS Servlet</servlet-name>
        <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.example.RestfulResourceLoader</param-value>
        </init-param>
        <init-param>
        <param-name>propertiesLocation</param-name>
        <param-value>mobilehandler.properties</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>JAX-RS Servlet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

Какую другую конфигурацию мне нужно сделать, чтобы удалить эту ошибку?


person Prerak Tiwari    schedule 10.06.2015    source источник


Ответы (1)


WebSphere Liberty поддерживает JAX-RS 1.1, поэтому вам не нужно указывать класс сервлета, просто используйте следующий фрагмент в web.xml:

<servlet>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
    <servlet-name>javax.ws.rs.core.Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

Смотрите также:

ОБНОВЛЕНИЕ

HandlersFactory из сторонних библиотек, попробуйте добавить следующий загрузчик классов (в server.xml) в свое приложение, чтобы сделать библиотеку видимой.

<webApplication... >
    <classloader apiTypeVisibility="spec,ibm-api,api,third-party">
    </classloader>
</webApplication>
person Gas    schedule 10.06.2015
comment
@Gas..Спасибо, что указали на ссылку. Но после изменения конфигурации, как только я добавляю ‹param-name›propertiesLocation‹/param-name› ‹param-value›mobilehandler.properties‹/param-value›, он снова выдает ту же ошибку. Требуется ли дополнительная настройка или какая-либо другая функция для включения? - person Prerak Tiwari; 12.06.2015
comment
@PrerakTiwari проверьте наличие обновления ответа, вам нужно будет добавить загрузчик классов в конфигурацию. - person Gas; 12.06.2015
comment
Поскольку я развертывал свое приложение, я сделал это следующим образом: ‹application location=E:\wlp\usr\servers\myserver\apps\myear.ear › ‹classloader apiTypeVisibility=spec,ibm-api,api›‹/classloader› ‹/ заявление>. Но это все еще дает мне ту же ошибку. - person Prerak Tiwari; 12.06.2015
comment
Ваш apiTypeVisibility должен включать третью сторону — у Газа она есть в обновлении ответа, но отсутствует во фрагменте в вашем комментарии. - person Azquelt; 12.06.2015