Java 将WSDL与客户端分离';s应用程序

Java 将WSDL与客户端分离';s应用程序,java,web-services,axis,Java,Web Services,Axis,我有一个使用web服务的javaweb服务客户机。客户端是使用WSDL2Java工具生成的。在web服务提供者通过添加一个非必需字段来更改其中一个模式对象之前,所有这些都可以正常工作。当调用web服务时,响应应该返回这些模式对象的数组,因为返回的对象有一个额外的字段,所以一切都会中断。据我所知,有一种方法可以在不破坏客户端应用程序的情况下允许进行此类更改。 你能告诉我如何解决这个问题的正确方向吗? 如有任何建议,我们将不胜感激。 非常感谢。 Nadiaweb服务不符合WSDL? 也许您可以edi

我有一个使用web服务的javaweb服务客户机。客户端是使用WSDL2Java工具生成的。在web服务提供者通过添加一个非必需字段来更改其中一个模式对象之前,所有这些都可以正常工作。当调用web服务时,响应应该返回这些模式对象的数组,因为返回的对象有一个额外的字段,所以一切都会中断。据我所知,有一种方法可以在不破坏客户端应用程序的情况下允许进行此类更改。
你能告诉我如何解决这个问题的正确方向吗? 如有任何建议,我们将不胜感激。 非常感谢。
Nadia

web服务不符合WSDL? 也许您可以edirt WSDL并添加非必填字段

还是WSDL被更改了?
如果更改了WSDL,您需要使用WSDL2Java工具重新生成代码。

这个问题通常很难解决,这就是为什么面向客户端的XML模式不应该经常更改的原因。您可以尝试禁用模式验证,但如果模式更改过多,您的客户端应用程序仍将崩溃


推荐的enterprisey实现这一点的方法(用行话来说就是“松耦合”)是拥有一个单独的域对象层,并在生成的Java类和域对象之间映射。您只需在模式更改时更新映射,这不应深入应用程序的各个层。但是每次架构更改时,您仍然需要重新编译应用程序。

尝试为您的客户端使用不同的绑定选项。如果我没有错,那么使用JAXBRI(od-JiBX)应该可以解决这个问题。尝试
WSDL2Java-djaxbri

默认设置为adb更多信息位于

欢迎使用StackOverflow。这是一个问Java问题的好地方。如果您将java问题标记为java,将会有更多的人看到它们!帮你修好了。看到这一点的人越多,你就越有可能得到帮助。是的,WSDL已经改变了,它可能再次发生。我希望我的客户能够忽略这些WSDL更改,有可能吗?谢谢,我将检查模式验证,但除此之外-没有一种方法可以更独立于WSDL更改吗?嗯。。。。好的,所以无论我是否添加了一层域对象,对象都必须随着WSDL的更改而更改。没有无缝的方式来适应或“忽略”这些变化。松耦合仍然需要更改和重新编译。。谢谢你的回复!