2013-08-23 12 views
5

CASESpokojny wezwanie WebService z wersji klienckiej Jersey 2,2

Próbuję pobrać danych użytkownika do Servlet filtr przy użyciu usługi REST.

pom.xml

<dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>2.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.2</version> 
     <scope>provided</scope> 
    </dependency> 

KOD

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 

    Client client = ClientBuilder.newClient(new ClientConfig()); 

    String entity = client.target("http://localhost:8080/insame/webresources/com.insame.entity.users") 
     .path("count") 
     .request(MediaType.TEXT_PLAIN) 
     .get(String.class); 

    System.out.println("entity-------->" +entity); 

spoczynku:

@GET 
@Path("count") 
@Produces("text/plain") 
public String countREST() { 
    return String.valueOf(super.count()); 
} 

PROBLEMU

javax.ws.rs.ProcessingException: java.net.SocketException: Unexpected end of file from server 
at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:202) 
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:215) 
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:650) 

WARNING: StandardWrapperValve[com.insame.service.ApplicationConfig]: Servlet.service() for servlet com.insame.service.ApplicationConfig threw exception 
javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error 
    at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:904) 
    at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:749) 
    at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:88) 
    at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:650) 

PYTANIE

0) Co jest nie tak w moim kodu?

1) Jaki jest najmądrzejszy sposób pobierania danych z filtru serwletów za pomocą REST + JPA?

2) Jeśli jest inny sposób, aby to zrobić, lepiej mam na myśli, pls daj mi znać?

3) Czy Jersey Klientowi jedynym sposobem

4) Jak można uzyskać EntityManager i wezwać serwis odpoczynek prosto z filtrem bez Jersey Klientem?

dokumentacja Jersey i przykłady: http://jersey.java.net/documentation/latest/user-guide.html#d0e2481

Dzięki Sami

Odpowiedz

0

0) 500 kod błędu oznacza, że ​​niektóre rzeczy nie tak po stronie serwera. Być może działanie akcji spowodowało błąd, mimo że REST został przetworzony. 1) dla prostego REST, użyłem Restlet i HttpClient. Nawet jerseyClient z JAXB przetwarza odpowiedź jako POJO. Z mojego doświadczenia wynika, że ​​prosty HTTP jest najlepszym i najprostszym sposobem na przetworzenie odpowiedzi REST. Możesz łatwo napisać opakowanie na kodzie http (java.net), aby przetworzyć żądanie/odpowiedź, utworzyć Dom wokół tego 2) i 3) otrzymasz odpowiedź powyżej