19

Axis2によってWSDLから生成されたクライアントスタブはスレッドセーフですか?

もちろん、「スレッドセーフ」は厳密に定義された用語である必要はないので、少なくとも次のことに興味があります。

同じスタブクラスの異なるインスタンスに、シングルスレッド実行と同じ効果的な動作で、異なるスレッドから同時にアクセスできますか?

同じスタブクラスの単一のインスタンスは、異なるスレッドから同時にアクセスでき、同じ呼び出しがシングルスレッド実行で任意の方法でインターリーブされるのと同じ効果的な動作をしますか?

また、ここで説明されている(およびここで発生している)用語を使用して、これをより正確に説明することもできます。

4

3 に答える 3

21

axis2についてはよくわかりませんが、少なくともaxis1はスレッドセーフではないクライアントスタブを生成します。他のほとんどすべてのSOAPクライアントもスレッドセーフではないという印象を受けました。私の記憶が正しければ、問題はクライアントスタブによってスレッドセーフではない方法で使用されているXML解析ライブラリにありました。

ただし、apache commons-poolingを使用してインスタンスをプールし、一度に1つのスレッドから各インスタンスを使用するとうまくいきました。

更新:Axis2については、https ://issues.apache.org/jira/browse/AXIS2-4357を参照してください(設計上、Axis2はスレッドセーフではないと主張しています)

于 2010-01-01T21:49:14.347 に答える
3

私が行ったさらなる研究についての最新情報を提供することによって、私自身の質問に答えようと思うと思います。デフォルトでは、古いバージョンのAxis2スタブは「スレッド互換」でしかなかったようです(同じスタブインスタンスで複数のスレッドから同時に呼び出しを行うことはできませんが、異なるインスタンスへの呼び出しは問題ありません)。

たとえば、次を参照してください。

http://markmail.org/message/3lu7x7pfo47vgnck http://markmail.org/message/sljyf6lpecxqllgx

このスレッドおよび関連する多くのスレッドのように、cleanup / cleanupTransportを呼び出さないと、ソケットリークが発生し、ソケットが不足する可能性があります。

http://issues.apache.org/jira/browse/AXIS2-3670

場合によっては、少なくとも基盤となるHttpClientはスレッドセーフのように見えますが、クライアントの生成方法によっては、スタブ全体が次のようにならない場合があります。

http://amilachinthaka.blogspot.com/2009/05/improving-axis2-client-http-transport.html

于 2010-01-11T19:23:06.177 に答える
2

これらのスタブはステートレスであり、スタブインスタンスの再利用が可能です。Axis2で直面している問題について詳しく教えてください。人々は通常、AxisよりもXfireを推奨しています。

于 2009-12-28T06:10:56.473 に答える