2012-05-03 25 views
0

私は単純なJava Webサービスを持っています。私は、Webメソッドを呼び出すたびに独自のスレッドを取得して処理する、スレッド化されたWebサービスを作成したいと考えています。処理に時間がかかり、Webメソッドへの他の呼び出しが起こらないようにブロックしたくありません。代わりに、私はWebメソッドがスレッドを作成するだけで、Thread自体が完了した処理の後にクライアントに値を返す/返すようにします。それは可能ですか?Webサービスで複数のスレッドを使用する方法

編集:ここでは

は、私が今持っているものの半擬似コードです:私は何をしたいか

@WebService(endpointInterface="Service") 
public class ServiceImpl { 

    public ServiceImpl() 
    { 
     // Initialization 
    } 

    public String GetResult(input) 
    { 
     // Does long processing 

     return Result; 
    } 
} 

は、(代わりのgetResultである)長い処理を行って、私はそれが唯一のspawnたいです長い処理を行い、GetResult()を返して別の要求を処理する準備ができているRunnable私はまた、Runnableが待機中のクライアントに応答するようにします。

EDIT 2:

私はちょうど私が愚かな質問を求めていることに気づきました。私はWSを実装するのにかなり新しいです。私は、WSが一度に1つの要求を逐一取ったと思っていました。私は各リクエストが既に自動的にスレッド化されているのか分からなかった。

+1

可能です。あなたは何を試しましたか?何の検索をしましたか?どのようなコードを見ましたか?質問を編集して詳細を入力してください。 – Gray

+0

どのような種類のクライアントがありますか?サーバ側?コマンドライン/バッチ? GUI?スイング? JavaFX? – Puce

+0

WSが非同期であることを本当に求めているようです。それも可能です。 – vkraemer

答えて

2

はい、JMSを使用して非同期呼び出しを行うことができます。それが最善の方法です。

スレッドを起動して、自分で管理することもできます。それは一般的に推奨されていません。スレッドプールをうまく管理し、どのスレッドが長くかかっているかを把握するには、多くのオーバーヘッドコードが必要です。

+0

私は応答を待っている間にクライアントが中断されていても気にしないので(私はタイムアウトを延長しました)、私は非同期呼び出しを探していません。私は、WSが処理時間がかなり長い(〜10分)ので、一度に1つのクライアントにしかサービスできないことをより心配しています。 –

関連する問題