私は非常に単純な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)は、ほとんどすべてのツール(soapUIなど)で使用できる、標準に準拠した美しいWSDLを生成します。
まったく同じクラスを取得し、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の行のコメントを解除して、静的WSDLを提供できることはわかってい<parameter name="useOriginalwsdl">true</parameter>
ますが、そうすると、将来、WSDLを手動で更新し続ける必要があります。これは避けたいと思います。
Axis2を介してサービスをデプロイしてWSDLを生成する方法はありますが、Axis2のひどいWSDL生成を回避し、それをJAX-WS RIに委任しますか?