2016-11-11 141 views
0

我正在构建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更糟糕。

回答

1

对于您感兴趣的操作,您可以根据wsdl的请求/响应消息和xsd构建自己的SOAP消息。您可以使用Jaxb工具将XSD转换为Java类。然后,您需要使用Http客户端(如Spring RestTemplate)进行post调用,以将基于soap的POST主体发布到端点地址。这将使您的呼叫速度更快,但您必须编码更多才能获益。

+0

你能添加一些细节吗?我同意你的建议,但是这还不足以跟进?添加一些细节(例如代码可能),以便我可以将其标记为已接受 –