Java 是否将Axis2 WSDL生成委托给JAX-WSRI?
我有一个非常简单的JAX-WS+JAXB SOAP服务,由于我的工作性质,我被迫通过Axis2部署该服务 如果我使用JAXB类和服务类,并通过JDK中烘焙的JAX-WS参考实现进行部署,例如Java 是否将Axis2 WSDL生成委托给JAX-WSRI?,java,soap,wsdl,jax-ws,axis2,Java,Soap,Wsdl,Jax Ws,Axis2,我有一个非常简单的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)生成了一个漂亮的、符合标准的WSD
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>
我的服务端点
com.service.my.MyService
Axis2的WSDL生成接管并生成几乎任何工具都无法使用的完全垃圾
我知道我可以取消对我的services.xml中的true
行的注释,并提供一个静态WSDL,但这样做会迫使我在将来手动更新WSDL,这是我希望避免的
有没有办法通过Axis2部署我的服务并生成WSDL,但绕过Axis2糟糕的WSDL生成并将其委托给JAX-WS RI?事实证明,如果不修改或挂接Axis2的实现,这是不可能的,这显然会在以后造成维护问题。因此,我想我只能接受Axis2生成的糟糕的WSDL