繁体   English   中英

通过HTTPS连接使用Web服务

[英]Consuming a web service over a HTTPS connection

我正在尝试使用Apache CXF在Java中构建Web服务使用者。 我已经设法使用WSDLToJava工具生成所需的类。 在那之后,我通过HTTP使用本地Web服务做了一些测试请求,他们工作了。

由于一切都井然有序,我为远程Web服务端点生成了类,该端点使用HTTPS进行通信。 在使用服务时,我需要创建一个生成的Service类的新实例,还需要一个端口(可用的Web方法的代理)。

以下是这两个课程的两个问题:

  1. 服务类总是需要大约20秒来实例化本地Web服务没有发生的事情
  2. 尝试从服务中检索端口(代理)类时,它不会超时,但会挂起,而处理器使用率为70%,最终JVM内存不足。

以下是我所谈到的两行代码。 我甚至使用该实用程序生成测试类,结果是相同的。

TestService ss = new TestService(wsdlURL, SERVICE_NAME); TestSoap port = ss.getTestSoap();

您有任何想法出现此行为的原因吗?

我设法解决了这个问题。 我会告诉你,因为也许有人可能觉得这很有用。

我做了一些测试,似乎经过一段时间后,测试方法开始挂起java.lang.ClassLoader.defineClass1()

出现这个问题是因为我运行的Ant目标使用WSDL2Java生成类,而JAVA_HOME变量指向Java 8.测试是在使用Java 7的IDEA中进行的。我将IDEA转换为使用Java 8 ant,现在它们正常工作。

经过进一步调查,我发现了真正的问题。 在加载代理类时,PermGen正在填充许多类(~7.5k)。 由于Java 8没有任何PermGen,因此不会出现问题。 我添加了JVM标志-XX:PermSize-XX:MaxPermSize并增加了Java 7的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM