我正在为Web服务构建客户端。我不想让客户每次都下载wsdl并得到this回答。
但是评估WSServiceDelegate
,
URL url = wsdl.getSystemId()==null ? null : JAXWSUtils.getEncodedURL(wsdl.getSystemId());
WSDLModel model = parseWSDL(url, wsdl, serviceClass);
service = model.getService(this.serviceName);
if (service == null)
throw new WebServiceException(
ClientMessages.INVALID_SERVICE_NAME(this.serviceName,
buildNameList(model.getServices().keySet())));
// fill in statically known ports
for (WSDLPort port : service.getPorts())
ports.put(port.getName(), new PortInfo(this, port));
我看到它仍解析wsdl以获取服务。我怎么能解决这个问题。我使用上下文提供了端点url。
我需要客户端尽可能快和尽可能小,在那里添加一个巨大的wsdl比下载wsdl更糟糕。
答案 0 :(得分:1)
对于您感兴趣的操作,您可以根据wsdl的请求/响应消息和xsd构建自己的SOAP消息。您可以使用Jaxb工具从XSD转换为Java类。然后,您需要使用Http客户端(如Spring RestTemplate)进行发布调用,以将POST主体(基于soap)发布到端点地址。这将使您的通话更快,但您必须编写更多代码才能获益。