首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能的内存泄漏CXF 2.4.2 Glassfish 3

可能的内存泄漏CXF 2.4.2 Glassfish 3
EN

Stack Overflow用户
提问于 2011-12-08 14:58:22
回答 1查看 617关注 0票数 1

我正在努力理解我的代码中可能存在的内存泄漏。我有一个简单的web服务,它接收XML格式的消息并将它们写入数据库。我注意到,在处理大约500K消息后,应用程序死于内存不足错误。在经历了一段陡峭的学习曲线之后,我设法分析了正在运行的应用程序,并很快发现,每次调用服务时,堆上都会持有一个web服务实现对象。为了减少我的代码是原因的可能性,我修改了实现,使其在不执行任何操作后返回。然而,堆继续增长。我的环境是Glassfish 3,CXF 2.4.2和Eclipse (动态web项目)。我已经在下面包含了服务和实现类。说得更清楚一点--在处理了500,000条消息之后,堆上有500,000个HL7ServiceImpl。

我真的对此感到困惑,所以任何帮助都将不胜感激。

代码语言:javascript
复制
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService(name = "HL7Service", targetNamespace = "http://ws.foo.bar.com/")
public interface HL7Service {
    @WebMethod(operationName = "submit", action = "urn:Submit")
    public void submit(@WebParam(name = "msg") String msg);
}
代码语言:javascript
复制
import javax.jws.WebService;

@WebService(targetNamespace = "http://ws.foo.bar.com/", endpointInterface = "com.bar.foo.ws.HL7Service", portName = "HL7ServiceImplPort", serviceName = "HL7ServiceImplService")
public class HL7ServiceImpl implements HL7Service {
    public void submit (String msg) {

    //  if (msg == null)
    //      return ("NAK"); 
    //  else
    //      EventQueue.getInstance().submit(msg);
    //    
    //  return "ACK";

        if (msg != null) { // temp
            // DO nothing
        }
    }
}
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
        <jaxws:endpoint id="hl7service"
        implementor="com.bar.foo.ws.HL7ServiceImpl" address="/hl7service">
        <jaxws:features>
            <bean class="org.apache.cxf.feature.LoggingFeature" />
        </jaxws:features>
    </jaxws:endpoint>
</beans>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-07 16:34:56

好的,以防别人发现这个问题。这个问题似乎与Glassfish的本地Metro实现和CXF之间的冲突有关。从CXF迁移到Metro解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8427329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档