Java SOAP 客户端非常慢
Java SOAP client very slow
我正在为 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 更糟糕。
对于您感兴趣的操作,您可以根据 wsdl 的 Request/Response 消息和 xsd 构建自己的 SOAP 消息。您可以使用 Jaxb 工具将 XSD 转换为 Java 类。然后,您需要使用 Http 客户端(如 Spring RestTemplate)进行 post 调用,以 post POST 基于 soap 的主体到端点地址。这将使您的通话速度更快,但您必须编写更多代码才能受益。
我正在为 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 更糟糕。
对于您感兴趣的操作,您可以根据 wsdl 的 Request/Response 消息和 xsd 构建自己的 SOAP 消息。您可以使用 Jaxb 工具将 XSD 转换为 Java 类。然后,您需要使用 Http 客户端(如 Spring RestTemplate)进行 post 调用,以 post POST 基于 soap 的主体到端点地址。这将使您的通话速度更快,但您必须编写更多代码才能受益。