我有一个非常简单的 JAX-WS + JAXB SOAP 服务,由于我的工作性质,我被迫通过 Axis2 进行部署。
如果我使用我的 JAXB 类和我的服务类,并通过烘焙到 JDK 中的 JAX-WS 参考实现来部署它们,例如
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 生成接管并生成几乎任何工具都无法使用的完全垃圾。
我知道我可以<parameter name="useOriginalwsdl">true</parameter>
在 services.xml 中取消注释该行并提供静态 WSDL,但这样做会迫使我在将来手动更新 WSDL,而我希望避免这种情况。
有没有办法通过 Axis2 部署我的服务并生成 WSDL,但绕过 Axis2 糟糕的 WSDL 生成并将其委托给 JAX-WS RI?