我有一個非常簡單的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?