3

一連の WSDL (それぞれ独自の XSD を持つ) からソース コード スタブを生成しようとしています。これは問題なく実行でき、JDK1.6 で完全に動作しますが、JDK1.5 で動作する必要があります。

ソースコードを生成するために jaxws-maven-plugin を使用していますが、利用可能な wsimport バイナリに依存します (これは JDK1.5 では利用できません)。これに対する回避策が見つかり、ソース コードを生成できるようになりました。

最後の問題は、生成されたクライアント コードとのインターフェイスに JaxWsPortProxyFactoryBean を使用している Spring (2.5.6) でコンパイル済みのスタブ コードを使用しようとしたときに発生します。java.lang.NoClassDefFoundError: javax/xml/ws/soap/Addressing が発生します。その理由を調べたところ、javax.xml.ws/javax-api/2.1 の依存関係にこのクラスが含まれていないことがわかりました。バージョン番号を 2.1-1 にアップグレードしましたが、(ソース コードを生成するために) プロジェクトをビルドすると、次のエラーが発生します。

cannot find symbol
symbol : method partName()
location : @interface javax.jws.WebParam

JAXWS クライアント スタブ コードを生成し、それを JaxWsPortProxyFactoryBean で動作させることができるように、だれかがこれに対する解決策を提供できますか?

前もって感謝します

ジョナサン

4

3 に答える 3

3

彼らはこの瓶をいじっているようです。このリンクを参照してください。

回避策は次のとおりです。

  1. M2_REPO/javax/xml/ws/jaxws-api/2.1/ディレクトリを削除
  2. この依存関係を使用する

    <dependency>
     <groupId>javax.xml.ws</groupId>
     <artifactId>jaxws-api</artifactId>
     <version>2.1</version>
    </dependency>
    
  3. これらのリポジトリをリストの一番上に置きます:

    <repository>
     <id>javanet</id>
     <url>http://download.java.net/maven/2/</url>
    </repository>
    <repository>
     <id>javanet legacy</id>
     <url>http://download.java.net/maven/1/</url>
     <layout>legacy</layout>
    </repository>
    
于 2009-11-19T17:17:09.897 に答える
2

何時間も依存関係を調べて、それぞれが内部に何を持っているかを調べた後、私はこれを解決することができました。依存関係javax.xml.ws:jaxws-api:2.1-1が必要であることがわかりましたが、コピーをとる必要がありました。この依存関係を削除します。

<dependency>
    <groupId>javax.jws</groupId>
    <artifactId>jsr181</artifactId>
    <version>1.0</version>
</dependency>

次に、アプリケーションのpom.xmlに次の依存関係を含める必要がありました。

<dependency>
    <groupId>javax.jws</groupId>
    <artifactId>jsr181-api</artifactId>
    <version>1.0-MR1</version>
</dependency>

これは理想からはほど遠いので、Mavenリポジトリに独自の依存関係を維持し、この依存関係を含めることを忘れないでください。厄介なのは、Mavenではバージョン番号(groupIdとartifactIdのみ)で除外できないことです。誰かがこの解決策をより良くするための提案を持っているなら、私に知らせてください。

ご協力いただきありがとうございます。

于 2009-11-03T09:46:44.193 に答える
0

ソースコードの生成にはjaxws-maven-pluginを使用していますが、使用可能なwsimportバイナリによって異なります(これはJDK1.5では使用できません)。これに対する回避策を見つけました。これで、ソースコードを生成できます。

実際、wsimportJAX-WSの一部であるはJava 5には含まれていません(JAX-WS2.xを含むJava6とは異なり、Java6u14にはJAX-WS2.1.6が含まれています)が、Java5使用できるのはあなたはそれを提供します。奇妙な部分は、jaxws-maven-pluginがこれらの依存関係を宣言していることです(たとえば、jaxws-maven-plugin-1.12.pomを参照)。どこかにクラスローディングの問題があるはずなので、「回避策」があります。

最後の問題は、コンパイルされたスタブコードをSpring(2.5.6)で使用して、生成されたクライアントコードとインターフェイスするためにJaxWsPortProxyFactoryBeanを使用している場合に発生します。java.lang.NoClassDefFoundError:javax / xml / ws / soap/Addressingを取得します。[...]

正確に使用しているプラ​​グインのバージョンは何ですか?バージョン1.12と、プラグインと同じバージョンのjax-wsを使用することをお勧めしますpom.xml

<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-tools</artifactId>
  <version>2.1.7</version>
</dependency>
于 2009-10-30T19:03:47.307 に答える