2

Web サービスを生成し、EndPoint.publish() を使用してサービスを提供し、war ファイルを展開するために JAXWS を使用していますが、100 の要求を処理するとすぐに 101 番目の応答が返されません。このカウントを無制限に変更するように JAXWS を構成するにはどうすればよいですか?

編集: 解決策が見つかりました。まず、JAXWS とは関係ありませんでした。ここに投稿して申し訳ありません。最初の印象では、問題は JAXWS にあると思いましたが、深く調査してデバッグした後、永続化レイヤー (Hibernate) に問題があることがわかりました。ここで、許可されるセッションの最大数はデフォルトで 100 です。実際には意味をなさないと皆さんに考えさせて、もう一度申し訳ありません。

4

2 に答える 2

3

内部的には、スレッドプール(Executor)がリクエストの処理に使用されます。デフォルトのプールサイズは100リクエストに設定されています。Endpointインスタンスを作成した後、Endpoint#setExecutor(Executor)を使用して独自のThreadPoolExecutorを簡単に設定できます。

于 2009-11-12T16:10:19.507 に答える
2

これは非常に奇妙で、説明している動作を再現できませんでした。

次のサービスをすばやく作成しましたHello(JDK 6 の JAX-WS RI 2.1.6 を使用)。

import java.net.URL;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService()
public class Hello {

    // Business method we want to expose as Web service operation
    public String sayHello(String name) {
        return "Hello " + name + "!";
    }

    public static void main(String[] args) throws Exception {
        String address = "http://localhost:8080/HelloWebService/HelloService?WSDL";
        URL wsdlURL = new URL(address + "?wsdl");
        Endpoint ep = Endpoint.publish(address, new Hello());
    }

}

main次に、念のため、メソッドの実行中に hello サービスを 110 回呼び出す簡単な SoapUI テストをセットアップしました。実際の結果のスクリーンショットの下:

代替テキスト http://img404.imageshack.us/img404/5366/screenshotsoapui301.png

ご覧のとおり、テストは正常に実行され、110 (すべての同時呼び出しではありません) の呼び出しでエラーは 0 でした。

あなたが何をしているのかを示すコードを提供してください。どこかに違いがあるはずです(おそらく、非常に並列化されたリクエストを実行している可能性があります。その場合、同じことをテストしていません)。

于 2009-11-12T12:20:01.150 に答える