問題タブ [mtom]
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.
asp.net - クライアントは、'multipart/related;' の応答コンテンツ タイプを見つけました。type="アプリケーション/xop+xml"
Web サービス メソッドを呼び出しているときにこのエラーが発生すると、
要求は空の応答で失敗しました。」
私は今、厳しいですが、どのように応答"application/soap+xml"を得ることができますか?."application/xop+xml"
この問題を解決しなければならないのですが、
アドバイスをありがとう...
c# - MTOM - VS 2010 で読み取り時に無効な MIME コンテンツ タイプ ヘッダーが検出される
ディスクに MTOM 応答があり、応答を読み込んで解析しようとしています。MTOM リーダーの作成中にエラーが発生し続けます。
これはバグですか、それとも content-type のヘッダーは、Visual Studio がコンテンツ タイプを認識できないことを本当に意味していますか?
MTOM リーダーを作成するための簡単なコードを次に示します。
php - php、SOAP MTOM添付ファイルからファイルをデコード/保存する方法は?
コンテンツを取得しようとしています/Webサービスから返されたzipファイルを保存しようとしています。ただし、APIは、Base64バイナリ形式でエンコードされ、SOAPMTOM標準に従って応答に含まれるファイルを提供しているようです。私は2時間いくつかの回避策を試したので、どんな助けでも大歓迎です。応答は次のようになります:
java - StreamingAttachmentでMTOMを使用する-突堤の開始に失敗する
お知らせ下さい!
サーバー側で定義:
/////////////////
@StreamingAttachment(parseEagerly = true)
@MTOM(threshold = 10000000)
/////////////////
すべてがエラーなしでコンパイルされます。
突堤が始動すると、以下のエラーが表示されます。
2012-05-16 04:31:48.403 :: INFO:jetty-6.1.4重大:2012年5月16日4:31:49 AM:WSSERVLET11:ランタイム記述子の解析に失敗しました:javax.xml.ws.WebServiceException:アノテーション@ com.sun.xml.internal.ws.developer.Str mingAttachment(parseEagerly = true、dir =、memoryThreshold = 1048576)は認識できません。クラスcom.sun.xml.internal.ws.developer.StreamingAttamentFeatureの少なくとも1つのコンストラクターが必要です。 @FeatureConstructor(com.sun.xml.ws.transport.http.servlet.WSServletContextListener :: contextInitialized)でマークされますjavax.xml.ws.WebServiceException:アノテーション@ com.sun.xml.internal.ws.developer.StreamingAttachment(parseEagerly = true、dir =、memoryThreshold = 1048576)は認識できません。クラスcom.sun.xml.internal.ws.developer.StreamingAttachmentFeatureの少なくとも1つのコンストラクターは、@FeatureConstructorでマークする必要があります。
java - データハンドラからファイルへの書き込み
大きなファイル (700Mo 以上) を転送するために CXF/MTOM を使用して Web サービスを作成しました。ファイルをサーバーに転送することができました。ここでの質問は、ディスクへのデータの書き込みを最適化することです。例を挙げます。
バイトを使用すると OutOfMemory が発生する可能性があるため、これを使用したいと思います。
700Mo のアップロードには 2 分かかります。
他の効率的な方法は何ですか?
ありがとう
java - すべての添付データを取得せずに、Metro で MTOM 添付ファイルを含む受信メッセージを解析するにはどうすればよいですか?
JAX-WS-RI または Metro を使用すると、com.sun.xml.ws.api.server.AsyncProvider インターフェイスを使用して WebService を作成できます。
SOAP ヘッダーを含むメッセージ全体を取得することを選択できます
次に、メッセージを解析してそれに応じて処理するものを書くことができます
ただし、これを行う理由の一部は、既存の XML ベースのアプリケーションを SOAP スタックに適合させるためです。アプリケーションは、受け取るメッセージの完全なスキーマ セットを定義し、サービスを定義するための WSDL を簡単に生成できます。
小さな XML メッセージの場合、これはすべて正常に機能します。
ただし、メッセージがかさばる一部の操作で、よりストリーム指向の方法で XML を処理したい場合、MTOM 添付ファイルを使用すると 2 つの問題に遭遇します。プロバイダーの設定を次のように変更します。
適切な MTOM ポリシーを WSDL に追加します。
そして、この操作のメッセージ スキーマを適切に宣言します。
必要に応じてバインディングを設定します。
クライアントを生成し、コードを修正します
http ダンプは、データが「メッセージ本文」に適切な xop:include 要素を持つマルチパート MIME として送信されていることを示しています。
サーバー内で添付ファイルを受け取ります。
次に、着信メッセージを解析し、一括添付ファイルのコンテキスト (たとえば、それを囲む要素の名前) を取得しますが、一括添付ファイル自体は取得しません。
うまくいけば、添付ファイル パーサーは受信側の HTTP ストリームのその部分をまだすべて読み取っていないか、ファイルに分割されている場合は、チャンクごとに読み取ることができます。問題は、受信メッセージを添付ファイルの base64 でエンコードされたデータに変換しないメッセージを解析する方法が見つからないことです。要素の開始を示す SAX/StaX イベントを取得した後、base64 でエンコードされたデータである文字イベントが続きます。StreamMessage のコードを見ると、メッセージが既にバインドされている既存の XMLStreamReader の「前」に、XMLReader や XMLStreamReader などを「挿入」する方法はありません (メッセージ処理の途中なので驚くことではありません)。しかし、その XMLStreamReader 実装は com.sun.xml.ws.encoding.MtomCodec$MtomXMLStreamReaderEx で、常に ' の添付ファイルをインラインでメモリにアンパックします。com.sun.xml.ws.encoding.MtomCodec クラスをパラメータ化して、添付ファイルをインラインでアンパックする内部 MtomXMLStreamReaderEx クラスに最初にイベントを渡さないようにする方法はありません。
添付ファイルを一時ファイルに読み取ってから、メッセージ コンテキストの添付ファイルを FileDataSource に置き換えようとしましたが、Metro はこれらを無視するため、元の DataSource に ReadOnce タイプのエラーをスローさせる効果しかありませんでした。
アノテーションを無効に設定して、プロバイダーで MTOM をオフにしてみました。
それを削除してから StreamingAttachment アノテーションを削除しても無駄です。また、sun-jaxws.xml ファイルの endpoint 要素に enable-mtom="false" 属性を設定しましたが、やはり無駄でした。xop:Include の解析が組み込まれているようです。可能であればクライアントに MTOM を使用してもらいたいので、wsdl を変更したくありません。(ただし、以下のswaRefの回答を参照してください)
swaRef を使用すれば、Metro でやりたいことを実行できますが、サポートされているプロトコルは MTOM であると理解していますか? swaRef を使用して WSDL を編集する必要があります。
また、新しいクライアントを生成し、sendBulk メソッドを別の方法で呼び出す必要があります。
しかし、データ要素を解析すると、対応するcidが取得され、それを使用して必要に応じて添付ファイルを取得できます。
したがって、MTOM と Metro を使用すると、データ要素を解析する時点まで添付ファイルが読み取られていないか、実際にチャンクで効率的に一時ファイルにストリーミングされていない可能性がありますが、入力メッセージの「残り」を読み取る方法がありません。愛着の全体をメモリに読み込まずに、自滅しているように見えますか? Metro のダンプとは別に - 提案 re: Axis、CXF を歓迎します - 誰かが発見したこれを回避する方法はありますか?
機能リクエストを記録しました。
soap - MTOM アタッチメントを使用した wsdl2cpp クライアント側での wso2 cpp コード生成
アクション応答として、名前を持つ Person などの POJO をシリアル化する axis2 (Java) で公開された SOAP Web サービスがあります。さらに、バイナリ添付ファイルを使用して応答に入れるためにシリアル化された DataHandler を使用するアクションがあります<xop:Include ...></xop:Include>
wso2 wsfcpp が提供する wsdl2cpp を使用して、c++ でクライアント側コードを生成しました。getPerson(personId) アクションは正常に機能し、結果は期待どおりです。ただし、生成されたコードは正しく動作していないように見えますが、getFile(someId) アクションは成功しています。
サービスは、クライアントと同様に axis2.xml で enableMTOM=true に設定されます。クライアント側のメインに確実に Options.setEnableMTOM(true) を追加しました。
getFile(someId) 応答のエンベロープが有効であるため、問題は wsdl から生成されるコードにあると思います (そして、axis2c API を使用して手動でテストし、期待どおりにファイルを取得できます)。
以下は、レスポンスの wsdl (axis2 Java から生成されたもの) に含まれるスキーマです。
クライアント コードの生成に使用するコマンド ラインは次のとおりです。
サービスから受け取った応答は次のとおりです。
wsdl に何か欠けているものがありますか、それともその機能 (MTOM クライアント コード生成を伴う SOAP) が wsfcpp によって実装されていませんか?
前もって感謝します!
java - Java XML 検証と MTOM
Java XML Validation は MTOM 対応メッセージをサポートしていますか? 検証中に次のエラーがスローされました。
ただし、メッセージが MTOM なしで送信された場合、検証はパスします。
何か案は?