JavaEE Soap Services版本控制

时间:2018-09-11 13:34:53

标签: java soap versioning

我有一个SOAP Web服务,该服务返回带有行详细信息的订单信息(OrderViewWS)。

我必须在标头和Line Objects中添加新元素,这会导致合同违约,并且我有很多使用此服务的客户端应用程序。

我打算进行服务版本控制,但是我在网上发现的唯一一件事是需要复制所有类和代码,并创建另一个服务(OrderViewWSv2),该服务将返回带有额外参数的新类。

是否有更好的方法将元素添加到SOAP服务的输出类中,而无需重新复制所有内容?

我正在使用JavaEE和JBOSS EAP7.1,Java 1.8

这是服务界面的示例

@WebService(targetNamespace = "http://orderview.csws.com", name = "OrderViewWSv2")
public interface OrderViewWSv2 
{
    @WebResult(name = "getOrderInfoReturn", targetNamespace = "")
    @RequestWrapper(localName = "getOrderInfo", targetNamespace = "http://orderview.csws.com", className = "com.csws.orderview.GetOrderInfo")
    @WebMethod(action = "getOrderInfo")
    @ResponseWrapper(localName = "getOrderInfoResponse", targetNamespace = "http://orderview.csws.com", className = "com.csws.orderview.GetOrderInfoResponse")
    public com.csws.orderview.v2.OrderView getOrderInfo(
        @WebParam(name = "orderNbr", targetNamespace = "")
        java.lang.String orderNbr
    ) throws SOAPException;
}

orderViewWSvs现在返回com.csws.orderview.v2.OrderView对象,其中版本一返回com.csws.orderview.OrderView。并且每个子类的所有子类都重复。

wsdl由容器基于注释动态生成。

有什么建议可以更好地解决此问题吗?

0 个答案:

没有答案