- PR -

axis2について二点

1
投稿者投稿内容
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 2008-05-18 00:31
ご無沙汰しております。この度、少しWebサービスを齧ってみようと思い立ち、axis2を試しています。二点ほど皆様のアドバイスをお願い出来ればと存じますので、よろしくお願いします。

(1)違う引数で同じレスポンスが返ってくる?
 %表題%の通りで、何回か呼び出すと引数が違っても同じレスポンスが返ってくることがあります。スタブ#_getServiceClient().getServiceContext().setCachingOperationContext(false)とすると正しいレスポンスを得られるようになったのですが、これはサーバ側(サービス提供側)のキャッシュの問題でしょうか?
※本家のjavadocにも、このメソッドについての解説がありません(汗)

(2)途中で通信を打ち切る場合はどうすればよいか?
 リッチクライアントなどでプログレスバーを表示させて別スレッドで走らせているような場合、処理がキャンセルされた時にどうすればよいでしょうか?
要は(axis2でも使っている)org.apache.commons.httpclientのHttpMethod#abortのようなメソッドを明示的に呼び出さなければならないのか、それともただ単に処理を抜け出してしまえばよいのかということです。

以上二点、アドバイスを頂ければ幸いです。よろしくお願いします。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-05-18 01:56
(1)
http://www.mail-archive.com/axis-user@ws.apache.org/msg32774.html
を読む限りはキャッシュされているようですね

(2)
基本的には通信のキャンセルは困難です。
サーバーでの処理が長いのであれば、キャンセルをサーバーに送信するWebサービスを追加する方が良いかと思います。
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 2008-05-18 13:15
早速のお返事ありがとうございます

(1)私の拙い英語力で頑張って読んでみました(汗) どうやら、axis2側でキャッシュしているようですね。
 (もちろん、サービス提供側の負担を減らす方策は別途必要なのでしょうが)falseに設定して特に問題はなさそうですね。

(2)解りました。さしあたりそれほど重いサーバ側処理を実行させる事は無さそうですので、とりあえずは放置ということで。
 ちょっと心配なのが、ファイルのダウンロード(添付ファイル付SOAPメッセージ)などの長いコネクションが必要な場合です。このような場合はどのような対処をされておられるでしょうか?
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 2008-05-19 20:01
訂正です。
どうやら、(1)の現象はサーバ側の問題のようですね。「ぽすたん」で同じ手順からアクセスした場合には、特にこのような問題(違う引数で同じ結果が返ってくる)はおきませんでした。
http://www.postan.jp/postanws.htm

現在、サービス提供者に問い合わせ中です。
ちなみに利用しようとしているサービスは
http://bearmini.net/publicholidays/Default.aspx
です。
田舎の開発者
会議室デビュー日: 2007/02/20
投稿数: 18
投稿日時: 2008-05-26 11:58
たぶん、解決したと思います。
上記のWebサービス提供者と連絡を取り、送信リクエストを比較したところ、axis2の(デフォルトの)リクエストには
Transfer-Encoding: chunked
が付加されており、これが悪さをしていたようです。
org.apache.axis2.client.ServiceClient#.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Constants.VALUE_FALSE);
としたところ、問題なくリクエストが取得できるようになりました。

上記の「ぽすたん」のように、同じ.netで構築されたサーバでも(Transfer-Encoding: chunkedをつけたままで)特に問題がないサーバもあるようですから、これはサーバ側の設定に依存するようですね。
1

スキルアップ/キャリアアップ(JOB@IT)