3

Java クライアントが WCF wshttpbinding WebService と通信できるようにしようとしています。しかし、私はこれまで失敗してきました。呼び出しがハングするか、「SOAPFaultException: メッセージを処理できませんでした。これは、アクション「http://tempuri.org/ISampleService/GetServiceName」が正しくないか、メッセージに無効または期限切れのセキュリティ コンテキスト トークンが含まれているか、バインディング間に不一致があるためである可能性があります。非アクティブのためにサービスがチャネルを中止した場合、セキュリティ コンテキスト トークンは無効になります。サービスがアイドル セッションを途中で中止しないようにするには、サービス エンドポイントのバインディングで受信タイムアウトを早めに増やしてください。」

私のWebサービスは、デフォルトのVisual Studio 2010で生成された「WCF Service Library Template」です。

私の Java クライアントは netBeans 7.0.1 で生成され、新しい [その他] --> [Web サービス] --> [Web サービス クライアント] を使用してスタブが生成され、ローカル WSDL を参照しています。

WebServiceFeature wsAddressing = new AddressingFeature(true); を追加してみました。生成されたスタブでは、上記の例外がスローされるだけです。

同様の問題を抱えている人が他にもいます。ただし、真の解決策はありません。どんな提案でも大歓迎です。

4

1 に答える 1

0

石鹸のフォーマットに問題があるようです。Java クライアントは、WCF サービスにとって意味のある SOAP XML を生成していません。サービスが予期している SOAP XML を把握するには、WcfTestClient コマンド ライン アプリを使用してサービスを呼び出します。このアプリは、WinForm アプリでサービス プロキシを動的に作成します。アプリでサービス操作を呼び出し、[XML] タブ (右ペインの下部にある [書式設定済み] タブの横) をクリックします。このタブには、リクエスト ソープとレスポンス ソープの両方が表示されます。

次に、メッセージ トレース用に WCF サービスを構成し、Java クライアントから呼び出して、送信されている SOAP XML を確認します。これで、2 つの SOAP メッセージを比較して、違いを確認できます。Java クライアントは、WCF が期待する SOAP 形式を生成するように構成する必要があります。

WCF チームは最近、Java 専用のWCF 相互運用バインディングをいくつかリリースしました。これらは特定の状況には当てはまらないかもしれませんが、おそらく確認する価値があります。

于 2011-08-26T14:24:30.193 に答える