【问题标题】:500 Internal Server Error in RESTfullRESTful 中的 500 内部服务器错误
【发布时间】:2014-11-27 14:03:12
【问题描述】:

当我尝试访问此资源时,我收到此错误消息 500 内部服务器错误

我是网络服务的新手,我正在努力解决这个问题

休息服务

@Path("travelgood1")
public class TravelGood {

private LameDuck lameDuckClient;
private NiceView niceViewClient;
private SimpleDateFormat parserSDF;
private HashMap<String, List<Itinerary>> userItineraries;
private int lastItineraryId;

 public TravelGood() {
    LameDuck_Service service = new LameDuck_Service();
    lameDuckClient = service.getLameDuck();

    NiceView_Service niceViewService = new NiceView_Service();
    niceViewClient = niceViewService.getNiceView();

    parserSDF = new SimpleDateFormat("yyyy-MM-dd");

    userItineraries = new HashMap<String, List<Itinerary>>();
}

@POST
@Path("{uid}/itineraries")
@Produces(MediaType.APPLICATION_JSON)
public int createItinerary(@PathParam("uid") String userId) {
    if (!userItineraries.containsKey(userId)) {
        userItineraries.put(userId, new LinkedList<Itinerary>());
    }

    Itinerary itinerary = new Itinerary(++lastItineraryId);
    userItineraries.get(userId).add(itinerary);

    return itinerary.getId();
}
}

客户

@Test
    public void TestP1() {

    WebResource clientItinerariesResource = client.resource("http://localhost:8080/tg/webresources/travelgood1/AnneStrandberg/itineraries");
        int itineraryId = clientItinerariesResource.post(Integer.class);

【问题讨论】:

  • 您应该查看服务器日志文件。我相信你会在那里发现异常。如果您自己无法理解异常,请在此处发布。

标签: java rest post


【解决方案1】:

我猜你在这行有NullPointerException

if (!userItineraries.containsKey(userId)) {

这是因为userItineraries 未初始化。据我了解,您尝试使用 map 实现某种缓存。在这种情况下初始化它:

private Map<String, List<Itinerary>> userItineraries = new HashMap<String, List<Itinerary>>();

【讨论】:

  • 我忘了添加构造函数 public TravelGood() { LameDuck_Service service = new LameDuck_Service(); lameDuckClient = service.getLameDuck(); NiceView_Service niceViewService = new NiceView_Service(); niceViewClient = niceViewService.getNiceView(); parserSDF = new SimpleDateFormat("yyyy-MM-dd"); userItineraries = new HashMap>(); }
  • @Mitsos,以后尽量避免在评论中发布长代码 sn-ps。将这样的 sn-ps 放入您的问题中,如果需要,请写下简短的评论,说明您已经编辑了您的问题。
【解决方案2】:

尝试将原语 int 序列化为 JSON 时,Jersey 发生错误。如果您使用Integer,也会发生同样的情况。为您的返回类型使用包装器对象/DTO(请参阅JAX-RS / Jersey ".get(Integer.class)" and single JSON primitive (Integer) values?

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 2018-02-22
    • 2019-01-17
    • 2011-10-17
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多