Restful Webservice,Tomcat Error 500

时间:2015-11-26 01:28:01

标签: java web-services rest tomcat jersey

我遇到了以下问题。我用java和tomcat编写Restful应用程序。 Sofar这很好用。例如:

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

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

然而,当我得到一个更复杂的小位并在列表中使用自己的类时:

@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;
    }
}

关于这个最奇怪的部分:我没有收到任何错误消息......既没有在下面的 img ,也没有在Tomcat创建的任何日志中。 Error 500 without stacktrace

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

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

1 个答案:

答案 0 :(得分:1)

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

我会在黑暗中拍摄,然后说你需要删除&#34;静电&#34; 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();
}