2

私は非常に単純な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に委任しますか?

4

1 に答える 1

1

これは、Axis2の実装を変更またはフックしないと不可能であることが判明しました。これにより、後でメンテナンスの問題が発生することは明らかです。そのため、Axis2が生成するくだらないWSDLを使用するだけだと思います。

于 2012-10-09T14:46:43.363 に答える