2

改进 java 应用程序,我们现在面临从 Axis 到 Jax-WS 的迁移。

目前我们遇到如下问题:在我们生成的服务类中,继承自有javax.xml.ws.Service一个调用Service#getPort

@WebEndpoint(name = "SomeServiceSoap")
public SomeServiceSoap getSomeServiceSoap() {
    return super.getPort(new QName("http://something", "SomeServiceSoap"), SomeServiceSoap.class);
}

每次我们想在这个服务上执行方法时都会调用这个方法。但是,在测试中它会导致 permgen 中的 OOM。

我是否应该通过为返回的对象创建缓存/池或其他存储来避免多次调用它?或者我错过了这个实现的其他一些重要特性。

4

1 回答 1

1

虽然我没有发现 jax-ws 实现究竟是如何做到这一点的,但我发现为了避免出现问题,我需要从版本中更改 jaxws-rt 2.2.6(在我们的 pom 文件中使用,但已经快两年了) 到2.2.8.

此库版本更改完全解决了该问题。我已经在 J​​ava 6 和 Java 7 中对其进行了测试。

于 2013-10-01T13:41:26.297 回答