2015-03-14 2 views
1

Это должно быть так просто, но его дует мой разум ... Я прочитал сотни вопросов здесь, и до сих пор ни один из ответы повлияли на то, что я пробовал. Это, очевидно, время для другого набора глаз.Джерси REST Web Service с Tomcat, Eclipse и 404's - нужен еще один набор глаз, пожалуйста

Я получаю ошибку 404 при попытке выполнить самые простые тесты отдыха.

My Tomcat 7.0 Servers запускается просто отлично. Нет ошибок.

Мое имя проекта в Затмении: atomic_services_poc

Контекст в Tomcat установлен в:/atomic_services_poc Я могу успешно вернуться статические страницы с: http://localhost:8080/atomic_services_poc/index.html

Вот моя web.xml:

<servlet> 
    <servlet-name>workflowmanagerserlvet</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.tp.wfm.webservice</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>workflowmanagerserlvet</servlet-name> 
    <url-pattern>/workflowmanager/*</url-pattern> 
</servlet-mapping> 

Вот ява код WorkFlowManagerRestService.java

package com.tp.wfm.webservice; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/workflow") 
public class WorkFlowManagerRestService { 

    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String sayXMLHello() 
    { 
     return "Data Return"; 
    } 
} 

Я использую SoapUI для тестирования метода GET для остального запроса. Я пробовал множество вариаций следующего, и все они приводят к ошибке 404.

GET хост: 8080/atomic_services_poc/workflowmanager/рабочий

Помогите пожалуйста, прежде чем я бросить этот ноутбук ...

+0

Вы запросили тип носителя, созданный вашим методом? – braunpet

+0

Да, я проверил медиа-тип ... –

ответ

0

Я не вижу ничего плохого в вашей установке, от того, что вы показываете. Вы не упомянули, какую версию на Джерси вы используете, но я думаю, это больше, чем 2. (Я верю в Джерси < 2 название свойства в web.xml было другим).

Я хотел бы предложить следующее, чтобы попытаться отлаживать:

(1) На данный момент удалить

@Produces(MediaType.TEXT_XML) 

как предложено @braunpet, и просто проверить его с помощью веб-браузера

(2) Добавьте класс ResourceConfig, чтобы можно было хотя бы отладить работу сервера при запуске. Это довольно просто, вы определяете класс, как это:

package com.tp.wfm.application; 

import org.glassfish.jersey.server.ResourceConfig; 


public class MyApplication extends ResourceConfig { 

    public MyApplication() { 
     super(); 

     packages("com.tp.wfm.webservice"); 
    } 

} 

И изменить web.xml так:

<init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.tp.wfm.application.MyApplication</param-value> 
    </init-param> 

Затем добавить точку останова в Eclipse, чтобы убедиться, что ваши ресурсы загружаются.

Надеюсь, это поможет!

0

Итак, сегодня утром я вернулся к основам. Я создал совершенно новое рабочее пространство с eclipse на своем ноутбуке из урока vogella. Я получил этот, чтобы работать на моем ноутбуке всего за 10 минут. Затем я перешел на свою проблемную рабочую область и шаг за шагом добавил одни и те же элементы. Это сработало ...

Затем я начал добавлять свои компоненты и медленно один за другим, я смог заставить их работать. Должно быть, у меня было какое-то правописание или что-то не так, но я чувствую себя лучше, и никто здесь не мог этого видеть.

Хорошая новость в настоящее время работает. (Даже после того, как я удалил vogella материал) ..

:)

Спасибо всем, что помогло!

0

хорошо у меня была та же проблема. Я искал решение около 2 недель. Пройдя 20 уроков, я с ума сходил, почему мой котик все еще показывает ответ 404. Я просто хотел получить пример helloworld, но сервер показывал 404 каждый раз, когда я пытался открыть ResourcePATH (например, @Path («/ hello»)). Мой Web.xml был «настроен» для jersey 2.x, и параметр url был объявлен как «/ rest/*». URL-адрес был вызван правильно localhost:PORT/PROJECT/rest/hello .. но нет шанса.

Наконец я нашел решение для себя, что может помочь кому-то, кто вызывает беспокойство с этим (как автор этого вопроса):

  • Создайте .WAR файл вашего проекта и положить его в свой " apache_tomcat/WebApps»каталог (Eclipse: Щелкните правой кнопкой мыши на Проект-> Экспортно> как файл .war)
  • Перезапустите Tomcat-сервер
  • запустить приложение на сервере перезапущенного

После этого он работал для меня, я смог подключиться к любому @Path (""), который я реализовал. И если я хочу реализовать новый @Path, я должен обработать 3 шага. Надеюсь, это может быть полезно!

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