Java SOAP客户端很慢
问题描述:
我正在构建Web服务的客户端。我不想客户端每次下载wsdl,并得到this答案。Java SOAP客户端很慢
但评估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更糟糕。
答
对于您感兴趣的操作,您可以根据wsdl的请求/响应消息和xsd构建自己的SOAP消息。您可以使用Jaxb工具将XSD转换为Java类。然后,您需要使用Http客户端(如Spring RestTemplate)进行post调用,以将基于soap的POST主体发布到端点地址。这将使您的呼叫速度更快,但您必须编码更多才能获益。
你能添加一些细节吗?我同意你的建议,但是这还不足以跟进?添加一些细节(例如代码可能),以便我可以将其标记为已接受 –