Джърси услуги с Tomcat и Eclipse

Разработвам услуга за почивка с Jersey 2.0 (изтеглих от http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jaxrs-ri/2.5/jaxrs-ri-2.5.zip) и аз m с помощта на 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>

Включвам всички буркани на Jersey в 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. добре, тогава как пакетирате военния си файл? maven? мравка? на ръка?   -  person pogopaule    schedule 26.12.2013
comment
На ръка, с инструмента за експортиране на Eclipse. Изнасям на война автоматично   -  person jjmartinez    schedule 26.12.2013
comment
След това, моля, извлечете war файла и ми кажете какво има в папката wars Web-Inf lib. Предполагам, че не сте опаковали войната правилно   -  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 всички библиотеки, които изтегляте от Jersey и включвате в папка /ext на Jersey .zip
  2. Добавете в Web-Inf/lib на моя проект само библиотеки, които са под папка /lib на zip файла на Джърси
  3. Добавете в Web-Inf/lib на моя проект javax.ws.rs-api-2.jar, който можете да намерите в папка /api на Джърси

С това нямам проблеми да стартирам Tomcat с Jersey.

И това е моят 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
Не използвам maven. И това е изискване на проекта да използва 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

Добавянето на Джърси към проект на 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