1

JAX-WSを使用してExchange2010Webサービスインターフェイスを使用しようとしています。JAX-WS 2.2 RI(Metro 2.0)を使用しています。2.1でも同じ問題が発生しました。

Exchangeで問題が発生しました。「HTTP/1.1415コンテンツタイプ'text/ xml; charset=utf-8'が予期されたタイプ'text/ xml; charset = utf-8'ではなかったため、メッセージを処理できません」 。」応答として(2.1は文字セット値を引用しましたが、それ以外は同じ応答です)。

どうやら私はExchangeが満足するために正確なContent-typeヘッダーを指示する必要があります。

依存関係を手動で再構築することを強制せずにこれを行う方法はありますか?私は現在、公開されているMavenアーティファクトに依存しており、可能な限りこれを継続したいと考えています。

消費プロセスは通常のJ2SEアプリであり、コンテナーは表示されません。私はアプリケーションを制御でき、アプリケーションスコープに必要なほとんどすべてのものを追加できますが、プロキシサーバーなどのアウトプロセスアイテムを追加することはできません。クライアントクラスはローカルWSDLから生成されましたが、文字セット仕様は、生成されたコードではなく、jaxwsRI実装で宣言された定数から派生しています。したがって、結果のHTTPトランスポートは、SunJRE5またはJRE6の標準のhttp/httpsクライアントによって処理されます。

4

1 に答える 1

1

このスレッドから(現在java.netフォーラムがダウンしているため、キャッシュされたリンクを提供します)、障害は最終的にExchange WebService2010がセミコロンの後にスペースを要求することであるように見えます-w3c仕様の一部ではありません。

解決策は、(セットアップに応じて)メトロの前に何かを置いてヘッダーを変更することです。

次のアプローチのいくつかを試すことができます。

  • 反射を使用してメトロ定数を変更します。
  • AOPを使用します(正確にはわかりません)
  • この定数がMetroで定義されている場所を確認し、パッケージを作成しjavax.xml.ws.etc(またはcom.sun.etc..ソース内で、そのクラスのソースをコピーして貼り付け、定数を変更します。
于 2009-12-16T11:15:29.700 に答える