2013-12-26 2 views
4

Я развиваю службу отдыха с Джерси 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.Услуги Джерси с Tomcat и Eclipse

Я использую инструмент 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_3_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> 

я включаю все Джерси банки в 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 
+1

Вы уверены, что поняли ClassNotFoundExceptions? Я спрашиваю, потому что в последнее время у вас был аналогичный вопрос ... http://stackoverflow.com/questions/20762707/resteasy-service-deploy-in-tomcat-7-0-47 – pogopaule

+0

Хехеэ, конечно, мой друг. У меня те же проблемы, что и в Resteasy. – jjmartinez

+0

И, конечно же, я делаю то же самое: включите библиотеки в web-inf/lib и т. Д. – jjmartinez

ответ

9

Мое решение:

  1. Добавить в Tomcat/Lib все библиотеки, которые вы загружаете из Джерси и включаем в /ext папку Джерси .zip
  2. Добавить в WEB-INF/Lib моего проекта только библиотеки, которые находятся под /lib папку почтового индекса Джерси файл
  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 это пакет, где у меня есть свои услуги

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

+1

Спасибо за указание банок в папке '/ ext', я сначала пропустил их. И, конечно же, набор карт сервлетов очень важен и не упоминается в руководстве по началу работы в Джерси. – nerdherd

+0

Добро пожаловать :) – jjmartinez

+1

Уже сделал! Еще раз спасибо. – nerdherd

0

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

+0

Я не использую maven. И это требование проекта использовать Tomcat :( – jjmartinez

+0

Я использую плагин m2e (maven to eclipse) для затмения. Это то, что дает мне maven в затмении. Вы должны использовать это. – NicholasKarl

+0

Но нужно ли использовать maven для создания военного файла? – jjmartinez

0

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

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

+0

Нет, прежде чем я поставил свой вопрос здесь, я сделал все эти шаги, и это не сработало. Мне пришлось поместить библиотеки так, как я добавил в свою собственную программу. – jjmartinez

-1

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

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