2013-07-01 65 views
10

我爲java上的tomcat應用服務器編寫了一個簡單的JAX-WS web服務。編寫jax-ws web服務並生成不帶XSD的WSDL

我有一個接口和實現類:
接口

@WebService(name = "myWs") 
@SOAPBinding(style = Style.RPC) 
public interface IMyWs { 
    @WebMethod(operationName = "getUser") 
    Response getUser(@WebParam(name = "phone", mode = Mode.IN) String phone); 

} 


實施

@WebService(endpointInterface = "ge.mari.IMyWs") 
public class MyWs implements IMyWs { 
    @Override 
    public Response getUser(String phone) { 
       // SOME CODE 
     return response; 
    } 
} 

我的問題是,在我的WSDL文件Response類在x中定義sd文件。
這是段從我的WSDL文件

<types> 
<xsd:schema> 
      <xsd:import namespace="http://ws.mari.ge/" schemaLocation="http://localhost:8080/MyServcie/MyWs?xsd=1"> 
</xsd:import> 
</xsd:schema> 
</types> 

如何使Web服務生成WSDL中的文件,而不是單獨的XSD文件中所有類型的?
我應該更改任何配置還是向我的Web服務添加一些註釋?

回答

0

AFAIK不可能讓JAX用模式內聯生成WSDL。你可能想使用架構在不同的上下文中定義的對象結構,比如將數據存儲到文件或類似的東西中)。

這就是說:如果您需要的「多合一」 WSDL(因爲一些古老的客戶端需要它),你總是可以有jax-ws最初生成WSDL,然後將其編輯成自己的心臟的內容。使用@WebService註釋的wsdlLocation參數可以包含編輯的WSDL。

+0

它確實是可能的指示JAX-WS內聯的模式。請參閱我上面的回答,瞭解如何實現這一目的的指示。 – Kallja

+0

@Kallja:我認爲OP指的是應用程序服務器生成的WSDL(因爲在WSDL片段中有一個'schemaLocation =「http:// localhost:8080/MyServcie/MyWs?xsd = 1」')。我不知道如何說服應用程序服務器生成一個全功能的WSDL ...... **但是,您的觀點是一個很好的方法,我需要記住您使用的wsgen參數。 - ) – secra

9

你可以有JAX-WS使用

-inlineSchemas 

命令行開關將所生成的模式導入您的WSDL文件。 [1]

如果你在項目中使用的Maven可以配置JAX-WS Maven插件做的inlineSchemas配置元素一樣在你的執行的配置如下:[2]

<plugin> 
    <groupId>org.jvnet.jax-ws-commons</groupId> 
    <artifactId>jaxws-maven-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
    <execution> 
     <id>SomeId</id> 
     <goals> 
     <goal>wsgen</goal> 
     </goals> 
     <phase>prepare-package</phase> 
     <configuration> 
     <sei>some.class.Name</sei> 
     <genWsdl>true</genWsdl> 
     <keep>true</keep> 
     <resourceDestDir>some/target/dir</resourceDestDir> 
     <inlineSchemas>true</inlineSchemas> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

不需要對您的Java類進行任何更改。

[1] http://jax-ws.java.net/nonav/2.2.1/docs/wsgen.html

[2] http://jax-ws-commons.java.net/jaxws-maven-plugin/wsgen-mojo.html

+0

謝謝。你的救星。 –