【问题标题】:CXF service and getport takes a lot of timeCXF服务和getport需要很多时间
【发布时间】:2016-05-17 14:24:10
【问题描述】:

我正在使用 CXF 开发一个 SOAP 客户端。 我有 wsdl2java 生成的代码。 我已经做了一个 JAR 可执行文件来测试。 当我尝试提出请求时,我会先这样做:

Service ss = Service.create(wsdlURL, SERVICE_NAME);
 MiNTService port = ss.getPort(MiNTServiceSOAP, MiNTService.class);
  • wsdl 是 Web 服务的 URL。
  • SERVICE_NAME 是服务的 QName。
  • MiNTService 是从 wsdl2java 代码生成的类。
  • MiNTServiceSOAP 是端点的 QName
  • MintSErvice.class 是 wsld2java 生成的类的名称

service.create 耗时 10 分钟 gerPort() 也需要 10 分钟。 过了这么久……请求完成了。

我尝试将所有 wsdl 放在本地,但结果相同。 会发生什么????。

系统有:

  • 4GB 内存
  • 5GB 可用空间磁盘。
  • CPU 2.5 GHz
  • Ping 到服务器正常...
  • 通过 https 连接
  • 使用 Axis2 没有时间请求的问题,但是我们不能使用axis2,因为签名请求有很多问题......我们正在尝试CXF。

谢谢大家

【问题讨论】:

  • 在不知道您的确切设置(cpu、ram、网络拓扑)和更多代码的情况下,很难猜测是什么消耗了这么多时间。我知道第一次调用服务可能需要一些时间在服务器上初始化所有内容,但 10 分钟很奇怪。

标签: soap cxf


【解决方案1】:

解决方案: 问题在于从 Eclipse 导出“可运行 jar 文件”的方式。

如果将库打包到 jar 中...它会变慢。

解决方案是在导出过程中选择“将所需库复制到生成的jar旁边的子文件夹中”选项。

Tremendo el asunto.....

再见

【讨论】:

    【解决方案2】:

    当提供的Web服务关闭时,我也遇到了在Service构造函数下面直接调用的相同问题。 Service.create(wsdlURL, SERVICE_NAME) 也在内部调用下面的构造函数。

    就我而言,当网络服务在线时,一切正常。 如果不挂很长时间就无法初始化,我期望的是服务初始化的快速响应。

    • 我们可以为此调用设置超时吗?
    • 有什么具体的方法吗?
    • 或者这是CXF的一个已知问题?

    这是我正在使用的服务构造器:

     protected Service(java.net.URL wsdlDocumentLocation, QName serviceName) {
            delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
                serviceName,
                this.getClass());
     }
    

    【讨论】:

    • 这不是答案,而是基于原始帖子的另一个问题。考虑发布您自己的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 2020-03-19
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多