2016-11-11 139 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

你能添加一些細節嗎?我同意你的建議,但是這還不足以跟進?添加一些細節(例如代碼可能),以便我可以將其標記爲已接受 –