Java 调用 webservice 接口,为什么这么慢

2021-01-08 13:45:00 +08:00
 changeTheGame

Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来。 之前用 cxf 的 JaxWsDynamicClientFactory 速度更加慢,400ms 、500ms 都出现过。

这是现在使用 httpClient 的调用代码

public static String callWebSV(String urlWsdl,String soap,String soapAction){
        String result=null;
        try {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(urlWsdl);
            httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");
            httpPost.setHeader("SOAPAction", soapAction);
            InputStreamEntity entity = new InputStreamEntity(new ByteArrayInputStream(soap.getBytes()));
            httpPost.setEntity(entity);
            CloseableHttpResponse response = httpClient.execute( httpPost);
            if (response.getStatusLine().getStatusCode() == org.apache.http.HttpStatus.SC_OK) {
                HttpEntity responseEntity = response.getEntity();
                String back = EntityUtils.toString(responseEntity);
                //log.info("httpClient 返回 soap:" + back);
                result=parseResult(back);
                log.info("httpClient 返回结果:" + result);
            } else {
                log.error("HttpClinet 返回状态码:" + response.getStatusLine().getStatusCode());
            }
        } catch (Exception e) {
            log.error("调用错误:",e);
        }
        return result;
    }
3516 次点击
所在节点    程序员
24 条回复
changeTheGame
2021-01-09 07:12:59 +08:00
@hantsy 谢谢大佬,我是用 soapui 测试工具生成的 soap 消息,目前放弃使用 http client 了,改回 cxf 调用了,领导急着要没时间改了,有空在看吧
Kirsk
2021-01-09 10:22:00 +08:00
这不是你的问题 是对方做了状态存储以至于越来越慢 真的吗这个问题需要链路分析?
hantsy
2021-01-09 11:19:04 +08:00
@changeTheGame

SOAP WebService 调用还是用 SOAP Client 比较好,操作上一般可以将 SOAP WSDL 操作,直接映射到本地接口,然后直接调用。

NetBeans 集成应该最智能的,Metro 是 SUN 当年与 MS 和解后,在 Web Service 上合作的产物, 也是应用很广泛的。
生成 Client 代码的例子网上大把,花几分配置一下就完了。

其他也 SOAP Client 也不难,Apache CXF 个人我也不喜欢,但它的确应用很广。
changeTheGame
2021-01-09 13:00:11 +08:00
@hantsy 嗯嗯,知道了,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/742964

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX