問題タブ [soaphandler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ハンドラーなしで SOAP メッセージの署名を検証する
署名検証のための Soaphandler に問題があります。soapmessage をキャッチする方法、またはハンドラーなしで Soapmessage 署名を検証する方法はありますか?
java - Springを使用してSOAPハンドラーを構成する
SOAPメッセージのスキーマ検証に使用しているカスタムSOAPハンドラーがあります。Webサービスで動作します。他の人にも使用できるようにしたいと思います。検証自体を行うコードは非常に一般的です。実際に入力されるのは、検証に使用するスキーマの名前だけです。Springを使用してさまざまなサービスのSOAPハンドラーのさまざまなインスタンスを構成する方法/方法に頭を悩ませています。
Webサービスは次のように宣言されています。
ファイルは次のhandler-chain.xml
ようになります。
カスタムSOAPハンドラー内には、次のものがあります。
Springを使用してに基づいて複数のBeanを作成しMyCustomSoapHandler
、それらに異なる値を与えることができることは知っていますschemaLocation
が、それらのBeanをアプリケーションの正しいWebサービスに接続するにはどうすればよいですか?それは通り抜けるhandler-chain.xml
でしょうか?それともプログラムで行う必要がありますか?
java - カスタム SOAP ハンドラーで操作名を取得する保証された方法はありますか?
どの操作が呼び出されているかに基づいて異なるコードを実行する受信メッセージ用のカスタム SOAP メッセージ ハンドラーがあります。操作名を取得する最初の試みは、次のようになりました。
プロパティが設定されていないように見えるため、これは失敗しましたMessageContext.WSDL_OPERATION
。次に、これを使用してみました:
これは機能しますが、ヘッダー プロパティ「SOAPAction」が設定されていない (または存在すらしていない) か、期待する値を持っていない可能性があるのではないかと心配しています。これが操作名を取得する「公式」の方法であるかどうかわからないため、少し心配です-context
デバッガーの内容を見てわかりました。
着信 SOAP メッセージを処理するときに操作名を取得するより良い方法はありますか?
java - SOAPHandler が送信メッセージをインターセプトするのは正確にはどの時点か
SOAPHandler.handleMessage(...) を使用して、クライアントからサーバーへの送信 SOAP メッセージをインターセプトしています。
メッセージの送信後に傍受が行われたことを確認する必要があります。これが本当に当てはまるかどうかはわかりません。何か案は?
java - WebServices で SOAPHandler を介してパラメーターを渡す
Web サービスがデプロイされている JBoss AS があります。この Web サービスへの呼び出しは、別の JBoss AS 内の別の Web サービスへの呼び出しを生成します。SOAP メッセージのヘッダーでいくつかのパラメーターを渡すことに関心があるため、SOAP メッセージが最初の JBoss AS に到着すると、ヘッダーパラメーターを読み取り、それらに対していくつかの操作を実行し、それらをメッセージのヘッダーに配置します。 2 番目の JBoss AS。私は 2 つの SOAPHandler を使用しており、最初に使用する AS でパラメーターを Web サービスに渡します。
そのため、Web サービスで次のことができます。
2 番目の SOAPHandler では、2 番目の AS に向けられたメッセージを管理します。
これは機能しますが、新しいメッセージがパラメーターなしで最初の AS に到着した場合、以前のメッセージはコンテキストに残り、古いパラメーターが 2 番目の AS に送信されます。多分これは以下に関連しています:MessageContext.Scope.APPLICATION
?
soap - 大きなメッセージを持つ JAX-WS SoapHandler: OutOfMemoryError
JAX-WS 2 を使用すると、他の人が同様に話している問題が見られます。問題は、SOAP メッセージがハンドラー内で受信され、その SOAP メッセージが大きい場合 (たまたま大量のコンテンツを含むインライン SOAP 本文要素が原因であるか、MTOM 添付ファイルが原因であるかに関係なく)、危険なほど簡単に取得できることです。 OutOfMemory エラー。
その理由は、getMessage() の呼び出しが、ネットワーク上の SOAP メッセージ全体を読み取り、ネットワーク上にあったものを表すオブジェクトを作成する一連のイベントを開始するように見えるためです。
例えば:
私の質問は次のとおりです。これに対処するための既知のメカニズム/回避策はありますか? 具体的には、添付ファイル (たとえば MTOM の場合) も強制的にバキュームすることなく、SOAP メッセージの SOAP 部分にアクセスできれば便利です。
web-services - JavaWebサービスのHandlerクラスの場所
WebサービスにSOAPハンドラーを追加しようとしています。
@WebServiceアノテーションの直後にWebサービスに追加されるアノテーションは次のとおりです。
WebサービスはWEB-INF/classesの下のサービスクラスにパッケージ化されており、ハンドラークラスはWEB-INF/libの下にあるjarにあります。
例えば:
MyHandler.xml(完全修飾名を変更):
Webサービスをデプロイしようとすると、MyHandler.xmlで参照されているハンドラークラス(MyHandler.class)のClassNotFoundExceptionが発生します。
Eclipseを使用して、Eclipseのダイアログを使用して独自のハンドラーを追加することができました。Eclipseは、ハンドラークラスをサービスクラスと同じ場所に配置しました。ただし、jarファイルで提供されたハンドラーを使用できる必要があります。
WebサービスはearファイルでWebLogic10.3にデプロイされています
もっと良いことを説明する必要がある場合はお知らせください。私はWebサービスとJavaを初めて使用します。
ありがとう。
java - JAX-WS クライアントから XML 応答本文を取得するにはどうすればよいですか?
JAX-WS クライアントから XML 応答を取得する方法について、ここでいくつかのスレッドを読んでいることがわかりました。私の場合、クライアントは Oracle の JDeveloper 製品を介して WSDL から生成され、.NET で記述された Document/Literal サービス エンドポイントを呼び出します。私がやりたいことは、ハンドラー内からではなく、呼び出し元のクライアントからの呼び出しから XML 応答を取得することです。
この問題に最も近いスレッドは次のとおりです: http://www.coderanch.com/t/453537/Web-Services/java/capture-SoapRequest-xml-SoapResponse-xml
SOAP パケットのエンドポイントの XML スキーマはかなり複雑であり、自動プロキシによって呼び出しが簡単になるため、Dispatch 呼び出しを生成する必要はないと思います。生成された Bean にデータを入力し、単純に XML を生成するメソッドを呼び出して呼び出しを行う他の方法がない限り?
私の考えは、呼び出しへの応答をハンドラー内の ThreadLocal に保存し、呼び出し後にそれを読み取ることでした。それは合理的ですか?したがって、ハンドラーが handleMessage と handleFault で上記のコードを実行した後、コードを呼び出すクライアントはこのメソッドを呼び出します。
結局のところ、別の方法があるようです。jax-ws-handlersを読んだ後、ハンドラーが Application スコープの変数を導入できることがわかりました。これを行うようにハンドラーを変更しました:
クライアントは次のように読み取ります。
java - 要素を SOAP ヘッダーに添付するときの WRONG_DOCUMENT_ERR
現在、送信クライアント側メッセージ中に javax.xml.ws.handler.soap.SOAPHandler の既存の SOAPHeader に org.w3c.dom.Element をアタッチしようとすると、次のエラーが発生します。
org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: ノードを作成したドキュメントとは別のドキュメントでノードが使用されています
この問題は、handleMessage() 関数内から別の Web サービスに対して別の jax-ws クライアント呼び出しを行った場合にのみ発生します。いくつかの質問に答えるために、Element オブジェクトをアタッチしようとするときに、Element オブジェクトを適切にインポートして複製していますが、上で述べたように、その後の Web サービス呼び出しを行わない限り、正常に実行できます。クライアント側の呼び出しと Web サービスの両方が JBoss EAP 5.1 で実行されています。考え?提案?使用例を以下に示します。
私を最も困惑させているのは、この他のWebサービス呼び出しが元のWebサービスSOAPHeaderに影響を与えないはずですが、Webサービス呼び出しを削除すると問題が解決することです。