2014-09-14 3 views
0

Итак, я пытаюсь настроить Jetty для школьного проекта, используя Джерси на стороне сервера и Gradle для его создания и запуска. У меня есть мой web.xml и тест, который я пытаюсь ударить локон. Вот что я получил:Jetty web.xml 503

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"> 

<servlet> 
    <servlet-name>Project</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer 
    </servlet-class> 
    <welcome-file-list> 
    <welcome-file>../index.html</welcome-file> 
    </welcome-file-list> 
    <init-param> 
     <param-name>Project</param-name> 
     <param-value>main.java.package</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Reservations</servlet-name> 
    <url-pattern>api/*</url-pattern> 
</servlet-mapping> 

Web.java

package main.java.package; 
import javax.ws.rs.Path; 
Import javax.ws.rx.GET; 
@Path("api/") 
public class Web { 

    @GET 
    @Path("test/") 
    public String test() { 
     return "it works!"; 
    } 

} 

Когда я свернуться http://localhost:8080/project/api/test я просто получить 503. Таким образом, я предполагаю, что это что-то с моим web.xml но Я просто не могу понять, что.

ответ

1

Неправильное отображение сервлета - нет сервлета, объявленного с именем Reservations в любом месте.

<servlet-mapping> 
    <!-- <servlet-name>Reservations</servlet-name> --> 
    <servlet-name>Project</servlet-name> 
    <url-pattern>api/*</url-pattern> 
</servlet-mapping> 

Тогда пожалуйста читать путь user-guide for jaxrs resources

ресурса будет соответствовать ./project/api/api/test и не ./project/api/test.

Так вот некоторые исправления:

<servlet-mapping> 
    <servlet-name>Project</servlet-name> 
    <url-pattern>/api/*</url-pattern> <!-- ApplicationPath --> 
</servlet-mapping> 
@Path("/test") // resource path 
public class Test { // changed from class Web, 'cause resource is ./test 

    @GET // [GET] ./project/api/test 
    // @Path("test/") - path is already given by class path 
    public String test() { 
     return "it works!"; 
    } 

    @GET // [GET] ./project/api/test/foo 
    @Path("/foo") 
    public String testFoo() { 
     return "it works for foo!"; 
    } 

} 

Надеется, что это было полезно как-то :)

1

Добавить @javax.ws.rs.GET в ваш метод test().

+0

Ах, я не забуду, но он по-прежнему дает мне 503 – user3280133

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