2010-01-29 93 views
3

有沒有使用XML目錄從WSDL生成Java代碼的工具?問題是我有導入XML模式的wsdl文件,這些XML模式也導入其他模式,而模式在schemaLocation url處不可用。這就是代碼生成失敗的原因。如果某個工具能夠使用XML Catalog,則無需修改每個WSDL和模式中的每個schemaLocation即可解決此問題。使用XML目錄從WSDL生成代碼

我試過Eclipse和Netbeans插件,但都失敗了。在Eclipse和Netbeans中,我使用XML Catalog配置了替代模式位置,因此他們可以無錯地驗證WSDL文件。但是,當它們從wsdl生成代碼時,它們會失敗。

回答

0

的WSDL必須是在不使用XML目錄,或者客戶端佔用的是WSDL不能消耗它的有效。

當然,如果你永遠不會使用任何不在JBoss平臺上運行的客戶端,那麼你會沒事的。

+0

我不確定你說什麼是真實的給定的情況。通常,您希望在離線模式下(例如,在構建服務器上)構建Internet不可用的JAX-WS工件。 – 2011-01-27 13:19:23

+0

@dma:那我怎麼說錯了? – 2011-01-27 18:06:13

+0

是的,你是對的。對不起,我的評論和困惑。我同意你的觀點,即在線Web服務應該在線提供樹中的所有XSD,否則服務消耗會產生問題:) – 2011-03-20 11:26:23

0

與此同時,我找到了適合我需求的最佳解決方案。有一個叫做jaxws-maven-plugin的maven插件,當從wsdl生成源代碼時,它也能夠處理XMLCatalogs。

https://jax-ws-commons.dev.java.net/jaxws-maven-plugin/

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>jaxws-maven-plugin</artifactId> 
<version>1.10</version> 
<executions> 
    <execution> 
     <id>id1</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>wsimport</goal> 
     </goals> 
     <configuration> 
      <verbose>true</verbose> 
      <keep>true</keep> 
      <catalog>${basedir}/src/main/resources/catalog.xml</catalog> 
      <packageName>org.example</packageName> 
      <wsdlDirectory> 
       ${basedir}/src/main/resources/contracts/wsdl/ExampleService/1 
      </wsdlDirectory> 
      <wsdlFiles> 
       <wsdlFile>ExampleService_1_0.wsdl</wsdlFile> 
      </wsdlFiles> 
      <xadditionalHeaders>false</xadditionalHeaders> 
     </configuration> 
    </execution> 
</executions> 
<configuration> 
</configuration> 
<dependencies> 
    <dependency> 
     <groupId>com.sun.xml.ws</groupId> 
     <artifactId>jaxws-tools</artifactId> 
     <version>2.1.7</version> 
    </dependency> 
</dependencies> 

+2

您是否可以發佈您想要欺騙的catalog.xml和WSDL的相關部分?謝謝 – 2011-01-27 12:09:03