いくつかのサーブレットを備えた Tomcat アプリがあります。このアプリは、埋め込まれた Java アプレットと GWT Web ページを実行します。
問題は、別の要求が別のサーブレット要求 (別のサーブレット) で処理されている間に、Tomcat から一部のデータをフェッチする POST 要求がブロックされることです。
これは、データを取得するための私のアプレット コードです。
Integer code = new Integer(FETCH_IMAGE);
Serializable objs[] = { code, username, id.getID(), id.getSeriesID(), id.getStudyID() };
//URLConnection con = postObjects(servletUrl, objs);
System.out.println("---->POST image request start...");
URLConnection con = servletHttpConnection.postObjects(objs);
System.out.println("---->POST image request end...");
System.out.println("---->ObjectInputStream start...");
ObjectInputStream in = new ObjectInputStream( con.getInputStream());
System.out.println("---->ObjectInputStream end...");
//Read the value as an Object
System.out.println("---->Read stream for image start...");
Object obj = in.readObject();
System.out.println("---->Read stream for image end...");
Tomcat インスタンスが I/O を実行していると同時に、アプレットが上記のコードを実行してデータを取得しようとしています。また、「doPost」メソッドの開始時にログをダンプしましたが、リクエスト #1 が終了するまでそこに到達しません。私のアプレットは次の場所でブロックされています:
ObjectInputStream in = new ObjectInputStream( con.getInputStream());
この問題を回避する設計はできますか? または、なぜそこでブロックされているのですか? #1 が機能しているのに、Tomcat が私の要求 #2 に応答しないのはなぜですか?