2017-03-01 14 views
-1

多くのスレッドが終了しましたが、RESTサービスが作成されたWebサービスコールでスレッドプールを実装する方法について具体的な解決策はありませんでした。事前のリクエストがで完全に処理されていない場合は、Webサービスを打つサーブレットに来るすべての要求がキューに入れるべきである)サーブレット 2を介してWebサービスを呼び出すJavaでREST Webサービスのスレッドプールを実装するのに手助けが必要

1) - ジャストハイレベルのアイデアを与える

応答の返信 3)アプリケーションサーバーが起動して8080ポートで稼動していると仮定すると、エラーを返すスレッドプールを実装するのが難しいです - java.net.BindException:既に使用中のアドレス:JVM_Bind 4)わからないサーブレットでのWebサービスコールのキューにリクエストを入れるためのエンドツーエンドの処理方法

どこに誰もが、私を助けることができる

import java.io.Serializable; 

import org.codehaus.jackson.annotate.JsonPropertyOrder; 

import org.codehaus.jackson.annotate.JsonWriteNullProperties; 

import org.codehaus.jackson.map.annotate.JsonSerialize; 

@JsonWriteNullProperties(false) 

@JsonPropertyOrder({ 
     "param1", 
     "param2" 
    }) 

public class TestExecuteRequest implements Serializable { 

     private static final long serialVersionUID = 1L; 

     @JsonSerialize(include=JsonSerialize.Inclusion.ALWAYS) 
     protected String param1; 
     @JsonSerialize(include=JsonSerialize.Inclusion.ALWAYS) 
     protected String param2; 

     /** 
     * @return the param1 
     */ 
     public String getParam1() { 
      return param1; 
     } 
     /** 
     * @param param1 the param1 to set 
     */ 
     public void setParam1(String param1) { 
      this.param1 = param1; 
     } 
     /** 
     * @return the param2 
     */ 
     public String getParam2() { 
      return param2; 
     } 
     /** 
     * @param param2 the param2 to set 
     */ 
     public void setParam2(String param2) { 
      this.param2 = param2; 
     } 
    } 

Class having web service definition - 

import javax.ws.rs.Consumes; 

import javax.ws.rs.POST; 

import javax.ws.rs.Path; 

import javax.ws.rs.Produces; 

import javax.ws.rs.core.Response; 

import org.jboss.resteasy.annotations.providers.jaxb.Formatted; 

@Path("test") 

public interface TestFrame { 

    @POST 

    @Consumes("application/json") 

    @Formatted 

    @Produces("application/json") 

    @Path("/testExecute.service") 

    Response executeTestSuite(TestExecuteRequest testExeRequest); 

} 

Web service performing some operations in TestService class 

public class TestService implements TestFrame { 

    // Logic to perform all operations after web service has been called 

} 

-

1)のdoPostとサーブレットクラス()

HttpClient httpClient = HttpClientBuilder.create().build(); 
    String requrl = "http://myappserver:8080/TestApp/test/testExecute.service"; 

    String jsonvalue = "{\"param1\":\"value1"," + 
         "\"param2\":\"value2\"}"; 

    LOG.info("json value: " + jsonvalue); 

    HttpPost postRequest = new HttpPost(requrl); 

    String message = jsonvalue; 

    StringEntity input = new StringEntity(message); 

    input.setContentType("application/json"); 

    postRequest.setEntity(input); 

    HttpResponse response = httpClient.execute(postRequest); 

2私のRESTサービスを呼び出す)、Webサービス - ここ

は、コードの記述があります上記のいずれかのクラスにスレッドプールを作成して、上記のWebサービスをサーブレットで呼び出すときにリクエストを順番に処理できるようにしますか?

ご協力いただきありがとうございます。

は MN

答えて

0

がスレッドに関連しないエラー「を既に使用ポート」最初解決するために試してみてください、ありがとうございます。

私はエラーを与えてスレッドプールを実装することは困難である - java.net.BindException:使用中のすでに住所:JVM_Bind

それはあなたのポートがすでに別のプロセスによって使用されていることを意味します。 netstatコマンドを使用すると、ポートを使用しているプロセスを確認できます。あなたがLinuxマシン上にある場合は-pフラグはあなたに8080ポートを使用しているプロセスIDを与えることをこの

netstat -annp | grep 8080 

注意をしてみてください。

+0

私は、私の問題を解決しなかった小さな仕事のためにインターネット上で利用可能なThreadPoolロジックを試してみました。そして私にBindExceptionを与えました。それが私がすべてのコードの詳細を提供した理由です。Webサービスコールの複数の要求を処理するために必要なキューやスレッドプールをどうやって処理することができますか? – user3896624

+0

executeTestSuiteの実装に以下を追加できますか?現在のスレッド名を表示して、コンテナが複数のスレッドをまだ作成していないかどうかを確認します。 – nono

関連する問題