2015-05-07 3 views
0

Я пытаюсь реализовать очень простое веб-приложение со стороной на стороне Джерси. Я не использую Maven или eclipse или какой-либо другой инструмент. Я называю URL ниже:Простой веб-приложение с возвратом Джерси 404

http://server:port/RestfulExample/hello

Я держу след файла журнала, это то, что я вижу:

GET/RestfulExample/привет HTTP/1.1" 404 5

Я посмотрел на многие другие должности, я пытался убедиться, что мой шаблон URL сопрягает с тем, что я имею в Main.java, web.xml и URL я называю. я первоначально был следующий учебник vogella в here.

Main.java Класс:

package com.unitask.web; 

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


//Sets the path to base URL + /hello 
@Path("/hello") 

public class main{ 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String sayPlainTextHello(){ 
     return "Hello Jersey"; 
    }//end of hello 

    // This method is called if HTML is request 
    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHtmlHello() { 
    return "<html> " + "<title>" + "Hello Jersey" + "</title>" 
     + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; 
    } 

}//end of class 

web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> 

    <display-name>Restful Application Example</display-name> 
     <description> 
      Restful Server App Sample using Jersey. 
     </description> 

    <servlet> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <servlet-name>Jersey Web App</servlet-name> 
     <init-param> 
      <param-name>jersey.config.server.provider.classnames</param-name> 
      <param-value>com.unitask.web.main</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web App</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

</web-app> 
+0

Нет ли другого сообщения об ошибке в журнале, кроме 404? –

+0

На самом деле есть, я только что обнаружил в catalina.out :: SEVERE: Parse Fatal Error в строке 2 столбца 6: Целевое задание команды обработки [xX] [mM] [lL] "не разрешено. org.xml.sax.SAXParseException; systemId: jndi: /localhost/RestfulExample/WEB-INF/web.xml; lineNumber: 2; col umnNumber: 6; Согласование целевой команды обработки «[xX] [mM] [lL]» недопустимо. Я не понимаю, хотя мой web.xml выглядит корректно для меня – melis

+0

В начале моего web.xml была пустая строка. Я избавился от этой линии. Он больше не вызывает никаких ошибок. Но код HTTP превратился в 503. @Luiggi Mendoza благодарит за указание сообщений об ошибках. – melis

ответ

0

Его, потому что у вас есть два способа отображения для одного @Path("/hello") шаблона. Так что это неоднозначно.

Сопоставьте каждый метод с другим шаблоном URL, используя @Path. например

@Path("/hello") 
public class main{ 

    @Path("/sayPlain") 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String sayPlainTextHello(){ 
     return "Hello Jersey"; 
    }//end of hello 


    @Path("/sayHTML") 
    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String sayHtmlHello() { 
    return "<html> " + "<title>" + "Hello Jersey" + "</title>" 
     + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; 
    } 

}//end of class 
+1

Я добавил @Path ("/ plainHello ") до простого метода и @Path ("/htmlHello ") ко второму. Я назвал следующие URL: http: // server: port: 18081/RestfulExample/hello/plainHello и http: // server: port: 18081/RestfulExample/plainHello. Он по-прежнему возвращает 404 – melis