我有一个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由容器基于注释动态生成。
有什么建议可以更好地解决此问题吗?