2013-08-23 25 views
5

CASERESTfulなWebサービスの呼び出し2.2

私は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> 

CODE

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); 

REST:

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

問題

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) 

QUESTION

0)私のコードで間違っていますか?

1) REST + JPAを使用してサーブレットフィルタからデータをフェッチする最も賢い方法は何ですか?

2)これを行う別の方法がある場合は、より良い意味で、 plsに教えてください。

3)が唯一の方法

4)どのように私はEntityManagerを取得し、ジャージークライアントなしでストレートフィルタ からRESTサービスを呼び出すことができます ジャージークライアントはありますか?

ジャージーのドキュメントとサンプル: http://jersey.java.net/documentation/latest/user-guide.html#d0e2481

おかげで、 サミ

答えて

0

0)500エラーコードは、サーバー側の誤ったいくつかのことがあることを意味します。 RESTが処理されたにもかかわらず、アクションアクションが何らかのエラーを投げた可能性があります。 1)単純なRESTでは、RestletとHttpClientを使用しました。 POJOとして応答を処理するJAXBを持つjerseyClient私の経験上、単純なHTTPはREST応答を処理するための最も簡単で簡単な方法です。リクエスト/レスポンスを処理するためにhttpコード(java.net)にラッパーを簡単に書くことができます。 2)と3)の周りにDomを作成します。

関連する問題