在我的项目中,我们使用webservices。令我感到困惑的是,有些网络服务(比如A
)只是使用HttpURLConnection
调用,而req / response是使用JAXB编组/解组的
还有另一个Web服务(比如说B
),我看到许多类使用JAX WSRI,而不使用HttpURLConnection
调用它。我还看到了这些web服务的.wsdl文件。
/**
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.1.1 in JDK 6
* Generated source version: 2.0
*
*/
@WebService(name = "ABPortType", targetNamespace "http://www.ups.com/WSDL/XOLTWS/DCR/v1.0")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface ABCPortType {
@WebMethod(operationName = "ProcessAB", action = = "http://example.com/webservices/xxBinding/v1.0")
@WebResult(name = "xxResponse", targetNamespace = "http://xx.com/XMLSchema/XXWS/AB/v1.0", partName = "Body")
}
我怀疑是
为什么我们使用所有这些额外的膨胀来调用webservice B
(终点,JAX WS RI而不是HttpURLConnection
?
可以HttpULConnection
用于调用此网络服务B
对于使用HttpURLConnection
调用的Web服务A,没有WSDL(只是从xsd创建的jaxb类),但是使用JAXWS RI生成的类调用的WS具有WSDL。 Web服务A和B是否以不同方式实现,这就是我们以不同方式调用它们的原因
请帮助我理解
-Venkat
答案 0 :(得分:0)
根据您的问题顺序:
如果您使用的是JAX-WS API,可能是您想要从WebService生成客户端代理类,例如使用wsimport
工具从WSDL文档文件生成客户端存根。这样您就可以使用Java对象而不使用XML。仅在特殊情况下,您需要用于高级功能的XML处理程序,例如WS-Security。
是。您需要直接使用XML并使用JAX-B进行策划/解组消息。
WSDL文档文件描述了SOAP服务以及服务中可用的所有操作的签名。如果A
没有描述符(WSDL文档文件),则可能不使用JAX-WS API,例如Java WSDP,或服务提供者未公开WSDL。