2013-01-10 3 views
6

jaxws-maven-pluginバージョン2.1を使用しています。だから、WSDLファイルがディレクトリで検索されjaxws-maven-pluginは、クラスの場所に関連してWSDLの場所を解決します。なぜですか?

static { 
    URL url = null; 
    try { 
     URL baseUrl; 
     baseUrl = my.package.gen.My_Service.class.getResource("."); 
     url = new URL(baseUrl, "wsdl/mywsdl.wsdl"); 
    } catch (MalformedURLException e) { 
     logger.warning("Failed to create URL for the wsdl Location: 'wsdl/mywsdl.wsdl', retrying as a local file"); 
     logger.warning(e.getMessage()); 
    } 
    MYSERVICE_WSDL_LOCATION = url; } 

(パッケージ):

   <configuration> 
        <keep>true</keep> 
        <sourceDestDir>${basedir}/src/main/java</sourceDestDir> 
        <extension>true</extension> 
        <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory> 
        <packageName>my.package.gen</packageName> 
        <wsdlLocation>wsdl/*</wsdlLocation> 
        <wsdlFiles> 
         <wsdlFile>mywsdl.wsdl</wsdlFile>        
        </wsdlFiles> 
       </configuration> 

そして、生成されたコードは次のとおりです。私は非常に奇妙なコードがジャー資源からWSDLの場所のために生成されていました生成されたクラスの居住者であり、論理的であるように、メインのjarディレクトリには存在しません。そして、WSDLが見つかりません。

jaxws-maven-pluginのバグですか、それとも私の設定ではエラーですか?

url = new URL(baseUrl, "wsdl/mywsdl.wsdl"); 

の世代のために

+0

はその間、あなたは問題の解決策を見つけることができますか?私はあなたと同じ問題に直面しています.Samuelsのソリューションは実際には醜いハックです。 – Vadimo

+0

これは別の解決策と同じ問題です。 http://stackoverflow.com/questions/4163586/jax-ws-client-whats-the-correct-path-to-access-the-local-wsdl – Vadimo

答えて

2

あなたはJAXWS-のmaven-pluginのバージョン2.3ではなく2.1を使用する必要がありますし、あなたが期待されるだろうと結果はになります。

このようなバージョン2.3の出力(あなたのwsdlフォルダはSRC /メイン/リソース下にある場合):

URL url = <Any>.class.getClassLoader().getResource("wsdl/anywsdl.wsdl"); 
+0

jaxws-maven-pluginのバージョン2.3で修正されましたか?私は私の会社のネクサスをチェックして、不幸にも最高のバージョンは2.2です(私はそこからアーティファクトを除いて何も使用できません)。だから私はバージョンを更新するようにそれらを提案する必要がありますか?情報の問題へのリンクはありますか?バージョンは固定されていますか?私はそのような更新が必要であることを証明するために何かが必要です。 –

+0

はい、それは本当です。私は2.3から2.1へのビルドのバージョンだけを変更して、結果が@Łukasz웃いLツと同じになることを確認しました。そしてそれはそれでした:-) jax-ws 2.1.4を使ったwsimportタスクで私のgradle buildもチェックしました。それも間違っていましたので、jax-ws 2.2.8にアップデートして問題を解決しました。したがって、JAX-WSツール2.2.8も必要に応じて動作します。 –

+0

私はその情報を私の会社に渡します。彼らがプラグインを更新したり、手で修正することで問題を解決したら、それは彼らの責任です:) –

1

これは、それはあなたが何をしたいかに依存し、これによると、

http://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html#wsdlLocation

意図した動作です。

何をトラブルは

My_Service.class.getResource( "")である場合には、

あなたのような何かをポイント(相対パス)を取り除くことができます

<plugin> 
     <groupId>com.google.code.maven-replacer-plugin</groupId> 
     <artifactId>replacer</artifactId> 
     <version>1.5.0</version> 
     <executions> 
      <execution> 
      <phase>process-sources</phase> 
      <goals> 
       <goal>replace</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <file>target/generated-sources/wsimport/lu/hitec/webservices/pssu/${wsdl.app}/${interface.name}_Service.java</file> 
      <replacements> 
      <replacement> 
       <token>_Service\.class\.getResource\("\."\)</token> 
       <value>_Service\.class\.getResource\(""\)</value> 
      </replacement> 
      </replacements> 
     </configuration> 
     </plugin> 
+2

ええ、回避策は、外部ライブラリ(プラグインを使用する必要があります)。 Miklos Krivan氏が書いているように、jaxws-maven-pluginのバージョン2.3で修正されたことを願っています。jaxwsプラグインの新しいバージョンを使用するように会社に納得させるのは難しく、新しいプラグインを使用することは事実上不可能です。 –

関連する問題