Услуги Джерси с Tomcat и Eclipse

Я разрабатываю службу отдыха с помощью Джерси 2.0 (я скачал с http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jaxrs-ri/2.5/jaxrs-ri-2.5)..zip) и я м с помощью Tomcat 7.0.47. Я запускаю Tomcat из Eclipse, и моя машина — Mac.

Я использую инструмент Eclipse для создания WAR и развертывания службы.

Это мой web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 70 more
0.xsd" id="WebApp_ID" version="3.0"> <display-name>MyServices</display-name> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.service.services.Services</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>

Я включаю все jar-файлы из Джерси в WEB-INF/lib, кроме javax.servlet-api-3.0.1.jar, который находится в Apache/lib. Когда я развертываю в Tomcat, он показывает очень странную ошибку, вызванную:

Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 70 more

person jjmartinez    schedule 26.12.2013    source источник
comment
Вы уверены, что поняли ClassNotFoundExceptions? Я спрашиваю, потому что в последнее время у вас был похожий вопрос... stackoverflow.com/questions/20762707/   -  person pogopaule    schedule 26.12.2013
comment
Хе-хе, конечно, мой друг. У меня те же проблемы, что и с Resteasy.   -  person jjmartinez    schedule 26.12.2013
comment
И, конечно же, я делаю то же самое: подключаю библиотеки в web-inf/lib и т.д.   -  person jjmartinez    schedule 26.12.2013
comment
Хорошо, тогда, возможно, вы захотите взглянуть на tomee.apache.org/apache-tomee.html. . Это tomcat + javaee libs сверху. Обратите особое внимание на версию JAX-RS. tomee.apache.org/downloads.html   -  person pogopaule    schedule 26.12.2013
comment
Под Mac работает?? О, мне нужно использовать Tomcat, потому что это часть проекта, использующего Tomcat :(   -  person jjmartinez    schedule 26.12.2013
comment
да, это Java, он работает на Mac. хорошо, тогда как вы упаковываете свой военный файл? знаток? муравей? рукой?   -  person pogopaule    schedule 26.12.2013
comment
Вручную, с помощью инструмента экспорта Eclipse. Я экспортирую в войну автоматически   -  person jjmartinez    schedule 26.12.2013
comment
Затем, пожалуйста, извлеките файл войны и скажите мне, что находится внутри папки библиотеки wars Web-Inf. Я предполагаю, что вы не правильно упаковали войну   -  person pogopaule    schedule 26.12.2013
comment
Только папка META-INF и WEB-INF   -  person jjmartinez    schedule 26.12.2013
comment
хорошо, у вас есть проблема. Ваши библиотеки должны находиться в папке WEB-INF/lib. Пересмотрите этапы упаковки. Каким-то образом вы пропускаете включение необходимых библиотек. Убедитесь, что вы понимаете, что должно быть внутри войны, если вы упаковываете это вручную, в противном случае следуйте ответу Николаса Карла. Удачи.   -  person pogopaule    schedule 27.12.2013


Ответы (4)


Мое решение:

  1. Добавьте в Tomcat/lib все библиотеки, которые вы загружаете с Джерси и включаете в папку /ext .zip на Джерси.
  2. Добавить в Web-Inf/lib моего проекта только те библиотеки, которые находятся в папке /lib zip-файла Джерси.
  3. Добавьте в Web-Inf/lib моего проекта javax.ws.rs-api-2.jar, который вы можете найти в папке /api Джерси

При этом у меня нет проблем с запуском Tomcat с Джерси.

А это мой web.xml для Jersey 2.0

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>MyRESTServices</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
             <param-name>jersey.config.server.provider.packages</param-name>
             <param-value>com.myservice.services</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

</web-app>

Где com.myservice.services это пакет, в котором у меня есть мои услуги

Спасибо за ваши комментарии!!

person jjmartinez    schedule 27.12.2013
comment
Спасибо, что указали на банки в папке /ext, я сначала пропустил их. И, конечно же, часть отображения сервлета очень важна и не упоминается в руководстве по началу работы на Джерси. - person nerdherd; 04.03.2014
comment
Спасибо @jjmartinez +1 - person Jossef Harush; 30.03.2014

У меня работает на ПК. Вы сделали проект eclipse проектом maven? Если вы это сделаете, вы можете использовать org.glassfish.jersey.bundles jaxrs-ri версии 2.5 (или любую другую) в качестве зависимости в вашем pom, а затем, когда вы запустите- > maven-install из eclipse, он создаст файл войны с все необходимые зависимости в нем.

person NicholasKarl    schedule 26.12.2013
comment
Я не использую мавен. И это требование проекта использовать Tomcat :( - person jjmartinez; 27.12.2013
comment
Я использую плагин m2e (maven to eclipse) для eclipse. Это то, что дает мне maven в eclipse. Вы должны использовать это. - person NicholasKarl; 27.12.2013
comment
Но нужно ли использовать maven для создания файла войны? - person jjmartinez; 27.12.2013
comment
Ну, это зависит от того, хочешь ты этого или нет. - person NicholasKarl; 27.12.2013
comment
На данный момент я предпочитаю не включать maven в проект. Я знаю maven, но я не хочу использовать - person jjmartinez; 27.12.2013

Добавить Jersey в проект Eclipse без maven очень просто: щелкните свойства проекта, перейдите к пути сборки Java. Нажмите «Добавить библиотеку» слева, выберите пользовательскую библиотеку. После того, как вы нажмете «Далее», вы увидите «пользовательские библиотеки» в правом верхнем углу. Щелкните это. Нажмите новый. Добавьте имя: например, jaxrs-ri-2.5. Нажмите «Добавить внешние банки» и добавьте банки в папки api, lib и ext. Готово. Это, вероятно, также будет включать их в любой файл войны, который вы создаете с помощью eclipse.

Работал на меня.

person NicholasKarl    schedule 28.12.2013
comment
Нет, прежде чем задать свой вопрос здесь, я сделал все эти шаги, и это не сработало. Мне пришлось поставить библиотеки так, как я поставил в своем собственном ответе. - person jjmartinez; 29.12.2013

Перейдите с jdk1.7.0_04 и установите apache-tomcat-7.0.55 и установите переменную среды для этого параметра и установите eclipse для того же самого для компиляции сборки и времени выполнения. тогда для Jax-RS-2.1 все будет ОК

person siddmuk2005    schedule 04.08.2014