Java 通过HTTPS连接使用web服务

Java 通过HTTPS连接使用web服务,java,web-services,cxf,Java,Web Services,Cxf,我正在尝试使用ApacheCXF用Java构建一个web服务消费者。我已经使用WSDLToJava工具生成了所需的类。在那之后,我通过HTTP使用本地web服务发出了一些测试请求,这些请求成功了 由于一切正常,我为使用HTTPS进行通信的远程web服务端点生成了类。使用服务时,我需要创建生成的服务类的新实例以及端口(可用web方法的代理) 以下是我在这门课上遇到的两个问题: 服务类总是需要~20秒来实例化本地web服务没有发生的情况 当试图从服务中检索端口(代理)类时,它不会超时,而是挂起,而处

我正在尝试使用ApacheCXF用Java构建一个web服务消费者。我已经使用WSDLToJava工具生成了所需的类。在那之后,我通过HTTP使用本地web服务发出了一些测试请求,这些请求成功了

由于一切正常,我为使用HTTPS进行通信的远程web服务端点生成了类。使用服务时,我需要创建生成的服务类的新实例以及端口(可用web方法的代理)

以下是我在这门课上遇到的两个问题:

  • 服务类总是需要~20秒来实例化本地web服务没有发生的情况
  • 当试图从服务中检索端口(代理)类时,它不会超时,而是挂起,而处理器的使用率为70%,最终JVM会耗尽内存
  • 下面是我提到的两行代码。我甚至用这个工具生成了一个测试类,结果是一样的

    TestService ss=newtestservice(wsdlURL,服务名称);
    TestSoap端口=ss.getTestSoap()


    你知道为什么会出现这种行为吗

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

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

    出现这个问题是因为我运行的Ant目标使用WSDL2Java生成类,JAVA_HOME变量指向Java8。测试是在使用Java7的IDEA中进行的。我改变了使用Java8Ant的想法,现在它们可以正常工作了


    经过进一步调查,我发现了真正的问题。加载代理类时,PermGen中填充了多达7.5k个类。因为Java8没有任何PermGen,所以问题不会出现。我已经添加了JVM标志
    -XX:PermSize
    -XX:MaxPermSize
    ,并增加了Java7的JVM标志的大小。

    这里的评测应该是一个好的开始。