2014-05-12 76 views
-1

嗨,我有以下web服务在java中。Java休息webservice与球衣异常

LifeEvent.java:

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("LifeEventService") 
public class LifeEvent { 

    // @GET here defines, this method will method will process HTTP GET 
    // requests. 
    @GET 
    // @Path here defines method level path. Identifies the URI path that a 
    // resource class method will serve requests for. 
    @Path("/place/{numPlaces}") 
    // @Produces here defines the media type(s) that the methods 
    // of a resource class can produce. 
    @Produces(MediaType.TEXT_XML) 
    // @PathParam injects the value of URI parameter that defined in @Path 
    // expression, into the method. 
    public String xPlaces(@PathParam("numPlaces") int numPlaces) { 

     // String name = i; 
     // return "<User>" + "<Name>" + /*name +*/ "</Name>" + "</User>"; 
     String xmlFile = ""; 
     xmlFile = "<Place>" + "<Location>" + "<Name>" + "Campo Grande, Lisboa" 
       + "</Name>" + "<Picture>" + "<Description>" 
       + "Last day of school kakakaka" + "</Description>" + "<Image>" 
       + "12182621051540x13" + "</Image>" + "</Picture>" + "<People>" 
       + "<Name>" + "Fábio Santos" + "</Name>" + "<Relation>" 
       + "Amigo" + "</Relation>" + "</People>" + "<People>" + "<Name>" 
       + "José Carilho" + "</Name>" + "<Relation>" + "Amigo" 
       + "</Relation>" + "</People>" + "</Location>" + "<Place>"; 
     return xmlFile; 
    } 

    @GET 
    @Path("/place/{begin}/to/{end}") 
    @Produces(MediaType.TEXT_XML) 
    public String getPlaceToPlace(@PathParam("begin") int begin, 
      @PathParam("end") int end) { 

     // String name = i; 
     // return "<User>" + "<Name>" + /*name +*/ "</Name>" + "</User>"; 
     return ""; 
    } 

    @GET 
    @Path("/people/{type}") 
    @Produces(MediaType.TEXT_XML) 
    public String xPeople(@PathParam("type") String type) { 

     // String name = i; 
     // return "<User>" + "<Name>" + /*name +*/ "</Name>" + "</User>"; 
     return ""; 
    } 

    @GET 
    @Path("/people/{begin}/to/{end}") 
    @Produces(MediaType.TEXT_XML) 
    public String getPeopleToPeople(@PathParam("begin") int begin, 
      @PathParam("end") int end) { 

     // String name = i; 
     // return "<User>" + "<Name>" + /*name +*/ "</Name>" + "</User>"; 
     return ""; 
    } 

    @GET 
    @Path("/people/{numPeople}/important") 
    @Produces(MediaType.TEXT_XML) 
    public String getPeopleByImportance(@PathParam("numPeople") int numPeople) { 

     // String name = i; 
     // return "<User>" + "<Name>" + /*name +*/ "</Name>" + "</User>"; 
     return ""; 
    } 

    @GET 
    @Path("/people/{numPictures}/important") 
    @Produces(MediaType.TEXT_XML) 
    public String getPicturesByImportance(
      @PathParam("numPictures") int numPictures) { 

     // String name = i; 
     // return "<User>" + "<Name>" + /*name +*/ "</Name>" + "</User>"; 
     return ""; 
    } 

} 

和下面的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_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>RememberMeServer</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
    <param-name>com.sun.jersey.config.property.packages</param-name> 
    <param-value>autobiographical.aid.webservices</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 7来运行这个。我使用泽西来让事情发生。当我在浏览器上运行时收到错误消息。 http://localhost:8181/RememberMeServer/rest/LifeEventService/place/10

Exception report 

message Servlet.init() for servlet Jersey REST Service threw exception 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    java.lang.Thread.run(Unknown Source) 
root cause 

com.sun.jersey.spi.inject.Errors$ErrorMessagesException 
    com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) 
    com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) 
    com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) 
    com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:491) 
    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321) 
    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) 
    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) 
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376) 
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559) 
    javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    java.lang.Thread.run(Unknown Source) 

你们能帮我吗?我按照这个教程http://java.dzone.com/articles/restful-web-services-java。唯一不同于我的是我使用端口8181,这是正确的,我使它与教程的工作,但不是我目前的版本,我不知道为什么。

编辑:

一些测试后,它似乎最后两个方法是我认为它的方式,路径设置的问题。但我仍然无法弄清楚为什么。

回答

-1

问题是我在编辑中提到的特定Web服务中的路径集。

替换为另一个没有这个问题解决了它。

0

此问题与泽西包通过参数名称和参数值的初始化有关。你的网址看起来很完美

参数值应该包含有效的包名称。

确保LifeEvent类在这个包存在(autobiographical.aid.webservices)

能解决问题。

+0

它在包内。我不知道为什么会发生这种情况。它应该工作。 – JoaoFilipeClementeMartins

+0

我已编辑答案请检查出来 – JoaoFilipeClementeMartins