改进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。
我应该避免多次调用它 - 通过为返回的对象创建缓存/池或其他存储吗?或者我错过了这个实现的其他重要功能。
答案 0 :(得分:1)
虽然我没有发现jax-ws的实现是如何完成这个讨厌的伎俩,但我发现为了避免问题,我需要从版本2.2.6
更改jaxws-rt(我们的pom中使用了它)文件,但差不多两年了)到2.2.8
。
此库版本更改完全解决了该问题。我已经在Java 6和Java 7中对它进行了测试。