使用Service and Dispatch类与SOAPConnection类调用
Java代码之间的Web服务有什么区别,哲学或其他方面?
例如,这样的东西:
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = scf.createConnection(); SOAPMessage reply = soapConnection.call(soapMessage,url);
大概沿着这些线呢?
svc = Service.create(url,serviceName); Dispatch<SOAPMessage> dispatch = svc.createDispatch(portName,SOAPMessage.class,service.Mode.MESSAGE); SOAPMessage reply = (SOAPMessage)dispatch.invoke(soapMessage);
这些之间有什么区别,为什么选择一种方法呢?
解决方法
以下行摘自Java SOA Cookbook – O’Reilly
“SOAP连接允许您将SOAP消息发送到资源的末尾
一个URL.这在任何情况下都很方便,但是如果该服务没有,则是必要的
有一个定义的WSDL.这是因为调用Service.create需要传递
WSDL的位置.您可能很少有没有基于SOAP的WSDL
服务,但它确实发生,你会做好准备.
要创建一个不暴露WSDL的Web服务的连接,可以使用
SOAPConnection类与远程资源直接通信.然后,您将创建一个表示该远程的URL对象
资源(servlet)你想要调用.传递SOAP请求消息和端点
您想要调用连接对象上的调用方法,然后等待
它返回一个SOAP响应.
•传递给connection.call方法的端点URL可以是字符串或一个java.net.URL“.