[Seasar-user:18722] Re: [S2Axis2]SAStrutsのAcitonから呼び出した際にソケットクローズされない
秋山 俊郎
[E-MAIL ADDRESS DELETED]
2009年 10月 22日 (木) 00:31:34 JST
秋山です。
いつもサポートありがとうございます。
途中結果ですが、結果から申しますと
ご教授のとおり、client.diconで HTTP/1.0 を設定しても変わりませんでした。
s2Axis2内のソースを追いかけて値が設定されているところまで
確認しました。Axis2のソースがないとできないような設定だったかと
思います。
今手元にdiconがないため添付できなくてすみません。
本日調査したところ、サーバ側(Apache+Webサービス)ではなく、クライアント側
(SAStruts+S2Axis2)のコネクションがCLOSE_WAITになっているいることを理解し
ました。
(実は同一マシンなのでわかりずらかったのです。)
ですので、サーバ側のApacheで対処しても、サーバ側はすでにきちんと
コネクションをきっていたので無意味でした。(事実Webサービス側サーバと
SAStruts内S2Axis2側を別マシンにしたところ、サーバ側は問題なく、クライア
ント側でCLOSE_WAITが大量に残っていました。)
たとえクライアント側でHTTP/1.0で呼び出しても、クライアントでS2Axis2が使
用しているcommons-httpclientがクローズ処理をしていない以上、クライアント
側コネクションは長時間残ると理解しています。
(SaStrutsのActionで呼び出しているためTomcatを落とすまで、もしくは
commons-httpclient内のソケットをキープアライブ設定して接続していれば、
サーバ側はすでに落ちているためOSのキープアライブの時間で落ちると思われま
す。)
ですので、commons-httpclientに手を加えるべくcommons-httpclientのソース
調査を検討していますが、良い対処方法をご存知でしたら、あるいはcommons-
httpclientでクローズを呼び出す方法をどなたかご存知でしたら
お教えいただければ幸いです。
以上よろしくお願いします。
Koichi Kobayashi さんは書きました:
> 小林 (koichik) です.
>
> Date: Tue, 20 Oct 2009 01:01:12 +0900
> From: 秋山 俊郎 <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:18680] [S2Axis2]SAStrutsのAcitonから呼び出した際にソケットクローズされない
>
>> SAStrutsアクションクラス内のS2Axis2クライアントからWebサービスへアクセス
>> しアクションクラスのメソッドが終了してもソケットのCLOSE_WAITが残るので良
>> い回避策があれば教えていただけないでしょうか?
>>
>> ソースを追うとWebサービスの性能向上のためcommons-httpclient内でコネク
>> ションを使いまわすようなつくりになっているようです。そのためソケットク
>> ローズが走っていないようです。
>
> HTTP/1.1 では KeepAlive を使うのが標準なので
> そうなっているのでしょう.
> 以下を参考に HTTP/1.0 を使うように設定すれば
> KeepAlive は使われなくなるのではないかと.
>
> http://ws.apache.org/axis2/1_4/http-transport.html#version_config
>
> Axis2 の設定ファイル (axis2.xml) については
> 以下を参考に.
>
> http://ws.apache.org/axis2/1_4/axis2config.html
>
> それを S2Axis2 で指定するには AbstractAxisConnector の
> properties プロパティで指定できるようです.
>
> http://s2axis.seasar.org/ja/s2axis2/references.html#ref-dicon-compo-connector
>
> s2axis2-examples の s2axis2-client.dicon に
> 設定方法がコメントで記述されているのでそれを
> 参考にしてください.
>
>
Seasar-user メーリングリストの案内