問題タブ [xop]
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 - JAX-WS を使用した大きな MTOM/XOP メッセージの作成
JAX-WS での MTOM/XOP の使用について質問があります。大量のバイナリ データを送信する Web サービスを作成しています。クライアントは多数のファイルを要求し、サーバーは応答でファイルを返します。
XOPを正しく実装するように応答を正しく構築することはできますが、送信する前に応答全体をメモリに保存するため、メモリ関連の問題が発生します。この Web サービスが送信するファイルは非常に大きくなる可能性があるため (ギガバイト単位など)、応答をメモリに格納することはできません。
このオラクルのウェブサイト(およびこれと一緒に)はこの問題を解決しているようですが、私はそれを理解していません. オブジェクトを使用してリクエスト/レスポンスをストリーミングしていると思いますDataHandler
が、インスタンス化する方法がわかりません。
を使用して、既存の WSDL から JAX-WS クラス ファイルを生成していますwsimport
。Java 6 で JAX-WS RI 2.1.6 を使用しています。
最初にすべてをメモリに保存することなく、ビルド中に応答を送信するにはどうすればよいですか?
よろしくお願いします。
UPDATE 12/17:バイナリ データを保持する WSDL のスキーマ要素に次の属性を追加しました。これにより、オブジェクトが JAXB クラスwsimport
に追加されます。DataHandler
次に、ファイルの内容全体を追加する代わりに、応答にAFileDataHandler
を追加して、サーバーが各ファイルの内容をすべてメモリに保持する代わりにストリーミングできるようにします。
そのため、サーバーは応答を正しく作成し、クライアントは要求を受信したときに各ファイルをディスクに適切に保存します。ただし、何らかの理由で、クライアントは引き続き応答全体をメモリに読み込みます。
サーバーコード (SIB):
クライアントコード:
java - rest + xop / xml 応答に埋め込まれたバイナリ データ
REST インターフェイス経由でパッケージ全体を公開するために、バイナリ データ (画像、音楽、サムネイルなど) を xml メタデータ コンテナーに埋め込むタスクが与えられました。現在、プロジェクトではジャージーとスプリングを使用しています。私は実際には、soap/wsdl (すべての ws ベースの問題に対するデフォルトの回答のようです) または zip のようなコンテナー形式にフォールバックしたくありません。適切な解決策。
SOAPで使用されるMTOMプロトコルの一部であるxmlにコンテンツを埋め込むためのXOP形式を推奨していることがわかりましたが、RESTを介してXML + XOP応答を直接提供するソリューションは見当たりません。
私の質問:誰かがJersey / springを使用してXOP + RESTを実装する方法のヒントを教えてくれますか? 誰かが以前にそれを行ったことをほのめかす投稿を見たことがあります...
敬具、
ティム
wcf - BizTalk2006R2でのMTOM/XOPサポート?
現在、Webサービスリクエストを介してバイナリデータをXOP添付ファイルとして返すBizTalkソリューションに取り組んでいます。BizTalkはWCFアダプターを介してMTOMをサポートしていますが、BizTalkがXOPもサポートしているかどうかわかりませんか?
( BizTalk添付ファイルパターンに関するブログ投稿を見つけましたが、それは私に好ましい解決策を与えません)
BizTalk 2006 R2、VisualStudio2005を使用しています
web-services - Silverlight3のWSResponseからXOPガンクを削除します
Webサービスを呼び出す必要があるSilverlightクライアントがあります。WebサービスはJavaで構築されており、XOPエンコーディングを使用して、その呼び出しの一部にバイナリメッセージを添付します。ただし、Silverlightサービスは、バイナリエンコーディングを含まない呼び出しのみを使用します。ただし、Webサービスを制御できないため、XOPマルチパートメッセージを処理する必要があります(例を以下に示します)。
Webサービスからの応答例(データが削除されました)
現在の実装では、文字列置換を使用して手動でsoapメッセージを作成し、WebClientクラスを使用して要求を送信し、応答を文字列としてダウンロードします。その後、データをXMLとして手動で解析することに固執します。これは問題ありませんが、少し難しいので、とにかくそのためのRESTサービスを利用できます。サービスプロキシがオブジェクトで応答することを本当に望んでいます。
私が本当にやりたいのは、WSスタックがSOAPを逆シリアル化してXOPガンクを削除しようとする前にメッセージをインターセプトするカスタム動作を実装することですが、これまでのところ、そのようなことを可能にするものは何も見つかりませんでした。
私の見方では、いくつかの選択肢があります。
サーバー(私が制御する)にプロキシサービスを作成します。このプロキシサービスは、Javaサービスに要求を再送信し、実際にXOPを処理できます。このオプションは、私が避けたいパフォーマンスへの影響があります。
XOPを処理するカスタムMessageEncodingBindingElement、MessageEncoderFactory、およびMessageEncoderを実装します。このオプションは最初は最適のように見えますが、TextMessageEncoderFactoryまたはTextMessageEncoder(これらは内部クラスです)を拡張できないため、基本的にメッセージエンコーディング全体を最初から書き直す必要があります(Microsoftに感謝します)。
そのままにしておきます。
表示されていないオプションはありますか?
web-services - WSDL で MTOM / XOP サポートを示す方法を指定する標準は?
Home Grown アプリサーバーの既存の Web サービス サポートに MTOM 添付ファイルのサポートを追加しています。Web サービス フレームワークは JavaEE5 と同様のパターンに従い、注釈付きのサービスとオブジェクトは、自動 WSDL 生成を使用して WebService として自動的に公開されます。
実際の解析と生成を行っていますが、WSDL 生成を更新して、MTOM がサポートされ優先されることをクライアントに示す必要があるかどうかを判断できませんでした。MTOM サポートを示す方法について複数の矛盾する標準を見つけてきましたが、現実の世界で何が使用されているのか途方に暮れています。
これまでのところ、私は見つけました:
- MTOM シリアライゼーション ポリシー アサーション (WS-MTOMPolicy) バージョン 1.0 - XML Soap から
- MTOM シリアライゼーション ポリシー アサーション 1.1 - W3Cより
私が見る限り、W3c のものは XMLSoap のものの新しいバージョンのように見えますが、アサーションのために別の名前空間で別の要素を使用しているようです:
- W3C の使用 - http://www.w3.org/2007/08/soap12-mtom-policy名前空間の MTOM
- XML Soap の使用 - http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization名前空間の OptimizedMimeSerialization
また、Glassfish が XML Soap を使用していたことを示すランダムなフォーラム投稿も気に入っています。W3C 標準は草案ですが、2007 年に草案が作成されたようです。
これらの仕様のどれが一般的に使用されているか知っている人はいますか? それとも、MTOM に関しては WSDL を無視するのが一般的ですか?
attachment - Spring WS と Axiom を使用して、大きな XOP 添付ファイルを含む SOAP メッセージからデータを読み取る方法
大きなファイルを受け取り、SOAP メッセージで指定された名前で保存する Web サービスを構築しようとしています。リクエストメッセージの例を次に示します
私はすでにいくつかのものを構築しました: OutOfMemoryError なしで大きな XOP ファイルを受け取ることができます。問題は、リクエストの ProjectName ノードにアクセスできないことです。それを取得しようとすると、添付ファイルがリクエストにインライン化されるためです。そして、それ自体が OutOfMemoryError につながります
これが私が現在その目的で使用しているコードです
Spring WS と Axiom を使用して、大きな XOP 添付ファイルと ProjectName ノード コンテンツの両方を抽出するのを手伝ってくれる人はいますか?
前もって感謝します
python - MIME 添付ファイル付きの HTTP POST 要求とヘッダー multipart/related および xop?
FileTransfer API を使用して eBay に一括データ交換呼び出しをアップロードしようとしています。これを行うには、xml 要求文字列を eBay サーバーに POST する必要がありますが、xml 要求には<Data>
、転送するデータを含める必要があるセクションが含まれています (この場合は、別の xml ドキュメントを含む base64 でエンコードされた zip ファイルです)。 . eBay は、そのようなドキュメントを作成する方法の C# の例を示しています: https://ebay.custhelp.com/app/answers/detail/a_id/1561
httplib を使用して Python でこの例を再作成して、例とほぼ同じ方法で作成した文字列を POST しようとしました (3 つの UUID は一意です)。
次のようなヘッダーを使用します。
そして私の投稿:
MIME 添付情報なしで xml リクエストを送信すると、ファイルは問題なく受け入れられます。<xop>
しかし、上記のコードのように、MIME マルチパート/関連の添付ファイルと添付ファイル内のデータの場所を示すタグを使用して実行しようとすると、POST が成功せず、「エラー 302: 一時的に移動しました」という応答が返されます。 . これにより、MIME multipart/related xml リクエストの作成方法、「Content-type」ヘッダー宣言の作成方法、xop の使用、または 3 つすべての組み合わせに問題があると思われます。もの。
私の質問は次のとおりだと思います: MIME マルチパート/関連セクションを含み、xop も使用する xml リクエストを作成するにはどうすればよいですか?
助けてくれてありがとう!
ウェス
php - PHP での SOAP MTOM/XOP サポート
をサポートできる Web サービスを PHP で作成したいと考えていますMTOM/XOP
。私の Web サービス処理関数は、添付ファイルを抽出できるようにする必要があります。私がグーグルで検索したとき、私はWSF(Web Service Framework)
答えとしてしか見つけることができませんでした。
代替手段はありますか?私はこの MTOM/XOP のことは初めてです。現在使用しNuSoap
ていますが、MTOM/XOP をサポートしていません。