2014-02-07 4 views
6

Я пытался заставить этот учебник работать: Link Я использую Apache Tomcat 7.0 и библиотеки Джерси 2.0. Это моя служба:Simple Rest Webservice, возвращающий статус http 404

package org.arpit.javapostsforlearning.webservice; 

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

@Path("ConversionService") 
public class FeetToInchAndInchToFeetConversionService { 
@GET 
@Path("/InchToFeet/{i}") 
    @Produces(MediaType.TEXT_XML) 
    public String convertInchToFeet(@PathParam("i") int i) { 

    int inch=i; 
    double feet = 0; 
    feet =(double) inch/12; 

    return "<InchToFeetService>" 
    + "<Inch>" + inch + "</Inch>" 
     + "<Feet>" + feet + "</Feet>" 
    + "</InchToFeetService>"; 
    } 

    @Path("/FeetToInch/{f}") 
    @GET 
    @Produces(MediaType.TEXT_XML) 
    public String convertFeetToInch(@PathParam("f") int f) { 
    int inch=0; 
     int feet = f; 
     inch = 12*feet; 

     return "<FeetToInchService>" 
     + "<Feet>" + feet + "</Feet>" 
     + "<Inch>" + inch + "</Inch>" 
     + "</FeetToInchService>"; 
    } 
} 

и это моя 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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 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>RESTfulWebServiceExample</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>org.arpit.javapostsforlearning.webservice</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
</web-app> 

Я попытался запустить его на сервере для развертывания, и я также пытался дать затмение экспортировать его в качестве военного файла а затем развернуть его с помощью диспетчера приложений tomcat. В обоих случаях я получаю статус HTTP 404, запрашиваемый ресурс недоступен. До этого в любых журналах появляется сообщение об ошибке. Я также попытался поместить простой файл index.html в папку Webcontent, но я также не мог получить доступ к этому в браузере. Я знаю, что на форуме много подобных сообщений, но, прочитав их и часы попыток, я все еще не могу понять, как решить мою проблему.

+0

звучит как вопрос веб-сервера. Ваш брандмауэр выключен?На каком порту работает ваш веб-сервер? – jeremyjjbrown

+0

Благодарим вас за ответ. Я попробовал развернуть его с отключенным брандмауэром, но он имел тот же результат. Мой веб-сервер работает на localhost: 8080. – SvenK

+0

Таким образом, вы даже не можете увидеть страницу администратора root Tomcat http: // localhost: 8080/manager/html /? – jeremyjjbrown

ответ

5

Иногда поиск и устранение неисправностей java webservices расстраивает, поэтому полезно выполнить некоторые простые шаги, чтобы найти ошибку.

  1. Ваш брандмауэр включен? Убедитесь, что он отключен или не заблокирован порт вашего веб-сервера. В большинстве случаев это порт 8080. Он находится в адресе localhost: 8080/mywebservice/url

  2. Проверьте исходную страницу приложения, предоставленную вашим сервером, чтобы убедиться, что сервер работает вообще. На Tomcat, который обычно localhost: 8080/manager/html

  3. Проверьте журналы вашего контейнера приложения на stacktrace при запуске, чтобы убедиться, что развертывание не является ошибкой.

  4. Попробуйте установить минимально возможный веб-сервис, такой как "Hello World" jax-rs, чтобы убедиться, что у вас есть правильные библиотеки и другие доступные конфигурации.

  5. Если вы передаете все эти и все еще не webservice, ваши аннотации jax-rs, вероятно, неверны в некотором роде. Вы можете включить запрос соответствия в свой web.xml, добавив в конфигурацию.

    <web-app> <servlet> <servlet-name>Jersey REST Service for value codes</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> ... <init-param> <param-name>com.sun.jersey.config.feature.Trace</param-name> <param-value>true</param-value> </init-param> </servlet> ... </web-app>

Вы увидите URL-адрес следы в журнале

{X-Jersey-Trace-008=[mapped exception to response: [email protected] -> 415 (Unsupported Media Type)], 
X-Jersey-Trace-002=[accept right hand path java.util.regex.Matcher[pattern=/myResource/([-0-9a-zA-Z_]+)(/.*)? region=0,17 lastmatch=/myResource/23/mySubresources]: "/myResource/23/mySubresources" -> "/myResource/23" : "/mySubresources"], 

подсказка:, вероятно, не является хорошей идеей, чтобы оставить это на в производстве

0

Пожалуйста, включите весной Ведение журнала. Он будет распечатывать все @RequestMapping при запуске, как показано ниже:

INFO 2017-09-21 10: 41: 35,822 (AbstractHandlerMethodMapping.java:531) - отображается "{[/ myapi/cal/calsalary], methods = [ GET || PUT], PARAMS = [configName & & configUserId & & & & идентификатор пользователя ASID]}»на общественное

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