2015-11-26 86 views
0

我得到以下问题。 Iam使用java和tomcat编写Restful应用程序。沙发这工作正常。例如:Restful Webservice,Tomcat错误500

@GET 
    @Path("/String/") 
    @Produces(MediaType.APPLICATION_JSON) 
    public String getText() 
    { 
     String data = dothat(); 
     return data; 
    } 

(dothat();连接到java服务器,获取一个字符串并返回它)。当我在浏览器中调用这个方法时,我可以看到返回的字符串。

然而,当我得到一个littlebit更加复杂,在列表中使用自己的类,如:

@GET 
@Path("/test/") 
@Produces(MediaType.APPLICATION_XML) 
static public Response test3() 
{ 
    List<GpioPin> list = new ArrayList<GpioPin>(); 

    GpioPin one = new GpioPin(0, "HIGH", "GPIO-5"); 
    GpioPin two = new GpioPin(1, "LOW", "GPIO-1"); 

    list.add(one); 
    list.add(two); 

    GenericEntity<List<GpioPin>> result = new GenericEntity<List<GpioPin>>(list) { 
     }; 

    return Response.status(Status.OK).entity(result).build(); 
} 

我得到一个错误500代码返回。

MYCLASS GpioPin:

@XmlRootElement 
public class GpioPin implements Serializable 
{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = -7583074316192202903L; 
    private int boardPosition; 
    private String gpioStatus; 
    private String gpioPort; 



    public GpioPin(int pos,String pinstate,String gpioPo) 
    { 
     boardPosition=pos; 
     gpioStatus=pinstate; 
     gpioPort=gpioPo; 
    } 
    public int getBoardPosition() { 
     return boardPosition; 
    } 
    public void setBoardPosition(int boardPosition) { 
     this.boardPosition = boardPosition; 
    } 
    public String getGpioStatus() { 
     return gpioStatus; 
    } 
    public void setGpioStatus(String gpioStatus) { 
     this.gpioStatus = gpioStatus; 
    } 

    public void setGpioPort(String gpioPort) { 
     this.gpioPort = gpioPort; 
    } 

    public String getGpioPort() { 
     return gpioPort; 
    } 
} 

关于这个奇怪的一部分:我没有得到任何错误信息......无论是在下面也不能从事由Tomcat的所有日志createt的brwoser IMG。 Error 500 without stacktrace

在阅读了关于登录Tomcat的几个线程后,我设法将日志记录交换到log4j。但是在调试级别上的log4j也不会告诉我有关错误的任何信息。

我无法解决这个问题。有人有想法吗?

回答

1

您肯定需要更正日志记录,因为这会为您提供有关问题的线索。

我会在黑暗中拍摄一张照片,并说您需要从test3()方法中删除“静态”关键字。所以它看起来像这样:

@GET 
@Path("/test/") 
@Produces(MediaType.APPLICATION_XML) 
public Response test3() 
{ 
    List<GpioPin> list = new ArrayList<GpioPin>(); 

    GpioPin one = new GpioPin(0, "HIGH", "GPIO-5"); 
    GpioPin two = new GpioPin(1, "LOW", "GPIO-1"); 

    list.add(one); 
    list.add(two); 

    GenericEntity<List<GpioPin>> result = new GenericEntity<List<GpioPin>>(list) { 
     }; 

    return Response.status(Status.OK).entity(result).build(); 
}