我正在寻找一种不使用wsimport和类似工具来使用soap webservices的方法。到目前为止,我发现的每一个都需要生成wsdl工件,我想避免它,因为我不知道将使用webservices。
这个想法是让用户可以添加几个WSDL的url /方法,程序会使用它们并将它的响应发送到另一个url。
我不是在寻找开箱即用的解决方案/代码或类似的东西。 我需要的是知道它是否可能以及如何解决这个问题,想法和类似的东西。
谢谢!
答案 0 :(得分:0)
SOAP要求客户端和服务器之间签订合同。合同是客户提出请求XML是XYZ格式,服务器将以ABC格式给出响应。没有它,SOAP就不起作用。这是WSDL中定义的内容。所以我们必须使用WSDL。
像wsimport这样的工具,wsdl4j将这些WSDL文件转换为对象层次结构,并为您准备一个JAXB包装器,让生活更轻松!
现在,如果您不想使用自动将WSDL转换为Java Bean或任何类型的工具,请注意SOAP仅基于XML。如果您知道如何在java中解析XML,那就差不多了。您可以使用JAX Parser来实现此目的,并且可以读取SOAP请求和响应中的所有内容。
您将面临的问题是,随着SOAP XML复杂性的增加,您很难正确解析XML,正确识别节点,值和关系。并且在没有适当的对象层次结构的情况下,除了相隔一定距离的节点之间的相关性之外,还有问题。意思是,从第100行开始,你不能返回并关联第10行节点,除非你开始维护你自己的对象,关系等(我想这不是你想要的)
使用Java Beans维护对象层次结构,因此您可以轻松地在不同节点的不同对象之间轻松关联它们。但JAXB比JAX慢。