3

メソッドが 1 つだけのサービスがあるとしますint generateRandomNumbers()

wsdl2java を使用して、適切な非同期サポートを備えたスタブを生成することは可能ですか?

たとえば、生成されたクラスには次のメソッド/メッセージが含まれている必要があります。

int generateRandomNumbers()
int generateRandomNumbers_Async(callback)

wsdl2java を使用して非同期メッセージでスタブを生成する方法を知っています。ただし、これは、サービスが非同期メッセージを理解できる場合にのみ機能します。

適切な非同期サポートとは、

  • generateRandomNumbers_Asyncは新しいメッセージではありません。サービスが理解するのは だけであり、理解できgenerateRandomNumbersないからです。generateRandomNumbers_Async
  • generateRandomNumbers_Async= はgenerateRandomNumbers別のスレッドで呼び出され、バックgenerateRandomNumbersグラウンドで終了するとコールバックが呼び出されます。

何か案が?

他の Web サービス フレームワークはどうですか?

4

2 に答える 2

1

CXFを使用する場合、「2番目の」箇条書きとまったく同じように機能するはずです。「generateRandomNumbers」メッセージは呼び出し元のスレッドで送信されるため、IO エラーまたは同様のエラーが発生した場合、すぐにスローされます。(jaxws 仕様による) 次に、バックグラウンド スレッドが応答を処理し、コールバックを呼び出します。

wsdl2java でコードを生成する場合、次のようなものを含む jaxws バインディング ファイルを作成する必要があります。

<bindings
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  wsdlLocation="hello_world_async.wsdl"
  xmlns="http://java.sun.com/xml/ns/jaxws">
  <bindings node="wsdl:definitions">
    <enableAsyncMapping>true</enableAsyncMapping>
  </bindings>
</bindings>

-B フラグを付けて渡します。これにより、非同期バージョンのインターフェイスに一連の新しいメソッドが生成されます。それらを使用する必要があるだけです。

于 2011-05-06T14:08:49.510 に答える