Java SOAP客户端非常慢

时间:2016-11-11 09:36:32

标签: wsdl jax-ws

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

1 个答案:

答案 0 :(得分:1)

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