さて、Metro について最初に知っておくべきことは、Metro がさまざまな WS 関連プロジェクトの包括的なプロジェクトであるということです。JAX-WS、JAXB、WSIT、JAX-WS-Commons など
これらの各コンポーネントには、API (仕様) と参照実装 (RI) と呼ばれる実装部分の 2 つの部分があります。仕様は「javax.xml.ws」、「javax.xml.bind」などで定義され、RI は「com.sun.xxx」パッケージに含まれます。
現在、JDK 6 アップデート 4 あたりのどこかで、sun/oracle はこれらの API と RI を JDK 自体にバンドルし始め、JDK の更新でこれらを更新し続けました。
最後の JDK 6 update31 の時点で、JDK には次のバージョンの JAXWS と JAXB API、および RI が含まれています。
JDK6 u31 - JAXB API @ 2.1 & RI @ 2.1.10、JAXWS API @ 2.1 および RI @ 2.1.6
http://jaxb.java.netおよびhttp://jax-ws.java.netページに移動し、2.1.x の下の最後のリリースを見ると、JAXB RI が 2.1.13 であることがわかります。 JAXWS RI は 2.1.7 です。つまり、最新の JDK 6 アップデートにバンドルされている 2.1 スペースの RI 実装は、Metro でリリースされたバージョンよりも数バージョン遅れています。したがって、最新の 2.1 jar を使用するには、API + RI jar をクラスパスにコピーするだけです ( http://jax-ws.java.net/2.1.7/docs/ReleaseNotes.html#Running_on_top_of_JDK_6を参照) 。
さらにややこしいことに、傘下のプロジェクトである Metro には独自のバージョン番号があり、現在は 1.5、2.0、2.0.1、2.1、2.1.1、2.2 です。
Metro 1.5 は、2.1 仕様とその仕様の最新の RI をバンドルした最後のビルドです。つまり、Metro 1.5 には、JAXWS および JAXB API @ 2.1 と JAXWS RI @ 2.1.7 および JAXB RI @ 2.1.13 が含まれています。
Metro 2.0 以降では、JAXB および JAXWS API v2.2 と、リリース データの最新の RI がバンドルされています。たとえば、最新の METRO リリース 2.2 には、JAXB RI 2.2.5 と JAXWS RI 2.2.6 がバンドルされています。
しかし、JDK 6 には JAXWS および JAXB (API + RI) 用の v2.1 がバンドルされており、クラスパスで JAXWS 、JAXB v2.2 jar を使用するだけでは機能しません。ここhttp://jax-ws.java.net/2.2.3/docs/ReleaseNotes.html#Running_on_top_of_JDK_6で説明されているように、承認された jar メカニズムを使用する必要があります。
そのため、Metro リリース 2.0 以降では、jax-ws-api.jar ファイルと jaxb-api.jar ファイルを $JAVA_HOME/jre/lib/endorsed の下にコピーするか、-Djava.endorsed.dirs システムを使用する必要があります。財産。
さらに面白いことに、Metro は jax-ws や jaxb プロジェクト (その他) を含む包括的なプロジェクトではありませんが、これらのプロジェクトから uber jar も作成します。
たとえば、metro の webservices-api.jar には jaxws-api.jar 、 jaxb-api.jar (RI) + WSIT、jax-ws-commons などの他の子プロジェクトの API が含まれています。
また、webservices-rt.jar には、jaxws-rt.jar、jaxb-rt.jar、および WSIT、jax-ws-commons などの他の子プロジェクトの RT jar が含まれています。
要約すると-
JAXWS/JAXB v2.1 仕様に基づいて WS を開発する場合は、単純に JDK 6 (u04 以降の更新) を使用してください。2.1 仕様の最新の API + RI バージョンを確実に使用したい場合は、単に jaxws および jaxb から最新の 2.1.x リリース jar を使用してください。つまり、クラスパスで jax-ws 2.1.7 と jaxb 2.1.13 を使用します。 . ]
最新の JAXWS/JAXB v2.2 仕様に対して WS を開発する場合は、jax-ws v2.2.6 および jaxb ver 2.2.5 jar を使用する必要があります [または、Metro 2.2 の webservices-api. jar および webservices-rt.jar は jaxws/jaxb/wsit をバンドルしているため..] ただし、jdk に含まれる jaxws/jaxb v2.1 jar をオーバーライドするには、上記の承認された jar メカニズムを使用する必要があります。
私の推奨事項 - v2.1 で問題ない場合は、Metro 1.5 jar (webservices-api、webservices-rt) を使用してください。v2.2 が必要な場合は、Metro 2.2 jar (webservices-api、webservices-rt) を使用し、承認されたディレクトリに webservices-api.jar を配置してください。
fastinfosets、Mtom などを JDK バンドル jar として使用する場合、または jaxws-ri.jar と jaxb- ri.jar はそれらの機能を提供しません。
このかなり長いメールが、いくつかの問題を解決するのに役立つことを願っています.