2014-11-27 3 views
0

Когда я пытаюсь получить доступ к этому ресурсу это я получаю сообщение об ошибке 500 Internal Server Error500 Внутренняя ошибка сервера в RESTfull

Я новичок в веб-сервисов, а я пытаюсь реализовать этот вопрос

Rest Услуги

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

Client

@Test 
    public void TestP1() { 

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

Вы должны посмотреть файлы журналов сервера. Я уверен, что вы найдете там исключение. Если вы не можете понять исключение, пожалуйста, отправьте его здесь. – AlexR

ответ

2

I Gué сс, что у вас есть NullPointerException в этой строке:

if (!userItineraries.containsKey(userId)) { 

Это происходит потому, что userItineraries не инициализирован. Насколько я понимаю, вы пытаетесь реализовать какой-то кеш, используя карту. В этом случае его инициализации:

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

Я забыл добавить конструктор public TravelGood() { LameDuck_Service service = new LameDuck_Service(); lameDuckClient = service.getLameDuck(); NiceView_Service niceViewService = новый NiceView_Service(); niceViewClient = niceViewService.getNiceView(); parserSDF = новый SimpleDateFormat ("yyyy-MM-dd"); userItineraries = new HashMap >(); } – dimitrisdan

+1

@Mitsos, в дальнейшем старайтесь избегать публикации длинного фрагмента кода в комментарии. Поместите такие фрагменты в свой вопрос, и если потребуется, напишите короткий комментарий, в котором говорится, что вы отредактировали свой вопрос. – AlexR