проблема в использовании клиентской библиотеки джерси при вызове остальных веб-сервисов - PullRequest
2 голосов
/ 14 января 2011

У меня есть сервлет, который вызывает остальную веб-службу, используя клиентскую среду jersey, вот код клиента -

response.setContentType("application/json");
    String adCategoryId = request.getParameter("adCategoryId");
    String requirement = request.getParameter("requirement");
    Client client = Client.create();
    WebResource wr = client.resource("http://localhost:8080/com.pandora.services/service");
    String adResult = wr.path("search-ad").path(requirement).path(adCategoryId).get(String.class);

код на стороне службы это -

@ Путь ( "/ услуга") общественный класс Сервис { @ПОЛУЧИТЬ @Path ( "/ поиск-объявления / {необходимо} / {запроса}")
public String searchAd (@PathParam ("need") строковое требование, @ PathParam ("query") строковый идентификатор) { System.out.println («внутренние сервисы»); String adResult = "";

    AdServiceProvider ad = new AdServiceProviderImpl();
    List<AdBean> adBean = ad.getAdById(Long.parseLong(id.trim()),requirement);
    adResult = gson.toJson(adBean);
    System.out.println(adResult);
    return adResult;

}

}

однако, когда я звоню ... я получаю следующую ошибку - Обновлено

Servlet.service () для сервлета Resteasy бросил исключение java.lang.NullPointerException в org.jboss.resteasy.plugins.server.servlet.HttpServletInputMessage. (HttpServletInputMessage.java:60) в org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.createHttpRequest (HttpServletDispatcher.java:71) в org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.createResteasyHttpRequest (HttpServletDispatcher.java:60) в org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service (ServletContainerDispatcher.java:197) в org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:55) в org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:50) на javax.servlet.http.HttpServlet.service (HttpServlet.java:820) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:298) в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:857) в org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.java:588) в org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:489) at java.lang.Thread.run (неизвестный источник) 14 января 2011 21:58:05 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service () для исключения броска теста сервлета com.sun.jersey.api.client.UniformInterfaceException: GET http://localhost:8080/com.pandora.services/service/hello вернул статус ответа 500 в com.sun.jersey.api.client.WebResource.handle (WebResource.java:565) на com.sun.jersey.api.client.WebResource.get (WebResource.java:182) на com.pandora.client.servlets.test.doPost (test.java:45) на com.pandora.client.servlets.test.doGet (test.java:33) на javax.servlet.http.HttpServlet.service (HttpServlet.java:707) на javax.servlet.http.HttpServlet.service (HttpServlet.java:820) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:298)в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:857) в org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.java:588) в org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:489) at java.lang.Thread.run (неизвестный источник)

Спасибо ...

1 Ответ

0 голосов
/ 14 января 2011

Всего два дня назад был похожий вопрос относительно Apache Wink.

Основная причина вашей проблемы: неверный тип носителя в вашем запросе. Это должно быть */*, а не просто *. Исключение очень ясно об этом.
В последней версии Wink стало больше прощать неправильные форматы медиа-типа. Я не знаю, что насчет Джерси. Но IMO лучше исправить проблему с рутом.
Я думаю, что неправильный заголовок в вашем случае это «Принять». Вы можете проверить это с помощью любого HTTP Sniffer (например, Fiddler). Поэтому, если вы установили правильный заголовок Accept по вашему запросу, это должно решить проблему.

...