2012-09-26 42 views
2

我有一個非常簡單的JAX-WS + JAXB SOAP服務,根據我的工作性質,我被迫通過Axis2進行部署。將Axis2 WSDL生成委託給JAX-WS RI?

如果我把JAXB類和我的服務類,並通過JAX-WS參考實現部署到JDK中,例如,

public static void main(final String... args) { 
    Endpoint.publish("http://0.0.0.0:9090/MyService", new MyService()); 
} 

的RI(2.2.4,JDK7)生成一個美麗的,符合標準的WSDL,可以通過幾乎任何工具(的soapUI等)消耗。


如果我採用了相同的類並通過Axis2中的services.xml文件部署它們,例如

<service name="MyService" scope="soapsession" targetNamespace="http://com.service.my"> 
    <Description>My Service Endpoint</Description> 
    <messageReceivers> 
     <messageReceiver class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver" mep="http://www.w3.org/2004/08/wsdl/in-out"/> 
    </messageReceivers> 
    <!-- <parameter name="useOriginalwsdl">true</parameter> --> 
    <parameter locked="false" name="ServiceClass">com.service.my.MyService</parameter> 
</service> 

Axis2的WSDL代接管併產生完整的垃圾,到幾乎任何工具是不可用的。

我知道我可以在我的services.xml中取消<parameter name="useOriginalwsdl">true</parameter>行的註釋並提供一個靜態WSDL,但這樣做會迫使我將來手動更新WSDL,我寧願避免這種情況。

是否有任何方式通過Axis2部署我的服務,並生成WSDL,但規避了Axis2糟糕的WSDL生成並將其委託給JAX-WS RI?

回答

1

事實證明,如果不修改或掛接到Axis2的實現中,這是不可能的,這顯然會在以後出現維護問題。因此,我想我只會接受Axis2生成的蹩腳WSDL。