java如何减少Apache CXF客户端存根对象的内存大小?
我的web服务客户机应用程序使用Apache CXF生成与多个web服务对话的客户机存根。生成的CXF web服务存根对象占用了相当大的内存(10-15个web服务对象占用的内存超过64 MB)。有没有办法减少CXF对象占用空间
你可以在下面搜索框中键入要查询的问题!
我的web服务客户机应用程序使用Apache CXF生成与多个web服务对话的客户机存根。生成的CXF web服务存根对象占用了相当大的内存(10-15个web服务对象占用的内存超过64 MB)。有没有办法减少CXF对象占用空间
# 1 楼答案
我们的Axis也有类似的问题。我们遇到的问题是,我们希望对web服务执行许多并发调用,而使用WSDL生成的Axis客户端导致每个客户端使用大量内存。客户端不是线程安全的,所以我们必须为每个请求创建一个客户端
我们有两个选择。首先,我们可以删减生成的代码——但出于维护原因,这并不好
其次,我们只是删减了WSDL,删除了与我们无关的部分,并重新生成了精简的客户端。这样,如果我们调用一个服务方法,它的客户机就不会包含该线程不会使用的无关方法的批量
工作得很好,但仍然是维护的噩梦,因为每当WSDL更新时(例如,我们的合作伙伴发布新版本的web服务),我们都需要花时间创建精简的WSDL。我想,理想的解决方案是让我们的合作伙伴认识到我们的问题,并拥有减少的WSDLs
# 2 楼答案
如果您的SOAP需求非常基本,那么您可以研究真正节省内存的kSOAP2。它被设计为在J2ME手机应用程序中运行良好
# 3 楼答案
我们对CXF客户机采取了不同的方法。我没有研究过它的内存占用,这在我们的环境中不是一个问题,但它肯定是一种比创建存根更简单的开发方法。它看起来像这样:
我们只是为任何我们想在运行时连接的WS(当然,我们有它的Java接口)这样做(当然,我们已经构建了一些实用程序类来进一步简化事情)。我们的目标是让整个WS尽可能对程序员透明。我们对WSDLs和XSD本身并不感兴趣。我们怀疑我们并不孤单