08-22-2011, 06:05 PM,
|
|||||
|
|||||
SOAP非同期通信のキャンセルについて
こんばんは。度々古いVerの話で申し訳ないのですが
COM.CURL.WSDK1.0 を使用した非同期通信 キャンセルの実装について SOAP通信のRead時に SOAPHTTPRPCPostCaller の async-call メソッドを使用し ResponseをRead中 待ちうけイベントの SOAPHTTPRPCPostAsyncWorker cancel メソッドを使用すると SOAPHTTPRPCPostCaller IOException[HTTPAsyncWinInetBufferedByteInputStream @0x0D1AAC04]がオープンされていません。 が発生する事象が起きております。 Response が返却される前の キャンセルは Post→Close で正常キャンセルが可能です。 当方でもオープンソースを、追ってはいるのですが、 このエラーを回避または、ハンドリングしたいと思っておりますが 該当箇所がどの辺りになるのか、ご教授願えませんでしょうか。 |
|||||
08-22-2011, 06:48 PM,
(This post was last modified: 08-22-2011, 06:52 PM by hokada.)
|
|||||
|
|||||
RE: SOAP非同期通信のキャンセルについて
onyoさん
WSDKには詳しくないので参考になるかどうかわかりませんし、想像での回答ですが、 このエラー内容からは、非同期処理が開始して、AsyncWorker (ここではそのサブクラスのSOAPHTTPRPCPostAsyncWorker)が生成されているようですが、 取得すべきInputStreamは、まだオープンされていないので、IOExceptionが発生しているように見受けられますね。 原因を探るのに、soap/SOAPHTTP.scurlファイルのSOAPHTTPRPCPostAsyncWorker.cancelメソッドの最初の行でbreakpointを付ければ、デバッグが早いかと思います。 もしくは、パニックレポート(=スタックトレース)を見てみると、WSDK内のどこで落ちているかわかると思います。 |
|||||
08-22-2011, 07:42 PM,
|
|||||
|
|||||
RE: SOAP非同期通信のキャンセルについて
hokada 様
ご返信ありがとうございます。 前者の cancel メソッドで止める手法は メソッド内でステップ実行している最中にReadが終わってしまいそうです。 WSDLをパッケージとして使用してましたので コールスタックでも追えず、困っておりました。 オープンソースでのDebugを試みるという、初歩的なことを忘れていました。。。 IOException自体をcatchさえできれば、握りつぶしても、 仕様的には問題ない(Readを受取らなくてもよい)ので、 どこで落ちてるのか探ってみます。 ありがとうございました。 |
|||||
08-22-2011, 07:51 PM,
(This post was last modified: 08-22-2011, 07:52 PM by hokada.)
|
|||||
|
|||||
RE: SOAP非同期通信のキャンセルについて
> WSDLをパッケージとして使用してましたので
> コールスタックでも追えず、困っておりました。 確かにそうですね・・・。 > WSDLをパッケージとして使用してましたので > コールスタックでも追えず、困っておりました。 恐らくpcurlをお使いいただいていると思うので、現在はpcurlへのマニフェストファイルにdelegate-toしているところ変更して、ソースコードを見るようにすれば、デバッグできると思います。 |
|||||
08-23-2011, 09:24 PM,
(This post was last modified: 08-23-2011, 09:27 PM by onyo.)
|
|||||
|
|||||
RE: SOAP非同期通信のキャンセルについて
COM.CURL.WSDK.1.0 で非同期通信キャンセルを実装するような
方は今現在いないでしょうが・・・ 最新の WSDK+UTIL-V7_090925 でも同じ実装でしたので、 結果を報告までに。 COM.CURL.WSDK.SOAP SOAPHTTP.scurl 内 SOAPHTTPRPCPostAsyncWorker の cancel メソッド が Code: {method public open {cancel}:bool となっていましたが、 {self.close} の位置が、{async-worker.cancel} の前であるため、イベント内でRead中に落ちるようです。 Code: {method public open {cancel}:bool と改修してみると、落ちなくなりました。 ご回答くれた皆様有難う御座いました。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
3 Guest(s)
3 Guest(s)