2013-05-27 122 views
2

我有SOAP客戶端用的wsimport產生的來源。
我在pom.xml中JAX-WS的wsimport使用本地WSDL一個XSD文件

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <version>1.10</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsimport</goal> 
        </goals> 
        <configuration> 
         <wsdlFiles> 
          <wsdlFile>example.com_8080/services/test.wsdl</wsdlFile> 
         </wsdlFiles> 
         <wsdlLocation>http://example.com:8080/services/test?wsdl</wsdlLocation> 
         <staleFile>${project.build.directory}/jaxws/stale/test.stale</staleFile> 
        </configuration> 
        <id>wsimport-generate-test</id> 
        <phase>generate-sources</phase> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>javax.xml</groupId> 
        <artifactId>webservices-api</artifactId> 
        <version>1.4</version> 
       </dependency> 
      </dependencies> 
      <configuration> 
       <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir> 
       <xnocompile>true</xnocompile> 
       <verbose>true</verbose> 
       <extension>true</extension> 
       <catalog>${basedir}/src/jax-ws-catalog.xml</catalog> 
      </configuration> 
     </plugin> 

使用下面的設置,我期待的最好的辦法HOWTO不做從遠程服務器每次WSDL/XSD(http://example.com:8080/services/test?wsdl)請求。 所以,我想使用本地的wsdl/xsd文件。是否有可能做到這一點?genra

+0

只需在瀏覽器中查看xsd url並保存本地副本 – kolossus

回答

0

有類似的問題。 wsimport應該生成一個名爲your_ws_nameService.java的.java文件。在這個文件中,你應該有部分看起來是這樣的:

static { 
    URL url = null; 
    try { 
     URL baseUrl; 
     baseUrl = com.oracle.xmlns.orawsv.ORAWSVService.class.getResource("."); 
     url = new URL(baseUrl, "http://127.0.0.1:7101/test/test?WSDL"); 
    } catch (MalformedURLException e) { 
     logger.warning("Failed to create URL for the wsdl Location: 'http://127.0.0.1:7101/test/test?WSDL', retrying as a local file"); 
     logger.warning(e.getMessage()); 
    } 
    ORAWSVSERVICE_WSDL_LOCATION = url; 
} 

更改本節進行到這樣的事情:

static { 
    URL url = null; 
    try { 
     URL baseUrl; 
     baseUrl = mypackage.my_ws_client.my_ws_clientService.class.getResource("my_ws.wsdl"); 
     url = new URL(baseUrl,""); 
    } catch (MalformedURLException e) { 
     logger.warning("Failed to create URL for the local wsdl file."); 
     logger.warning(e.getMessage()); 
    } 
    SENDINFOSERVICE_WSDL_LOCATION = url; 
} 

這將讀取位於您的客戶端中的WSDL文件。當然,你需要先把它放在那裏,就像kolossus建議的那樣,你可以從瀏覽器下載。