如何使用正则表达式检查连接泄漏?

时间:2010-04-21 10:15:18

标签: java regex connection

我必须检查应用程序中的连接泄漏,即打开尚未关闭的连接。

搜索之后,我发现已经打开了数千次连接,但是我无法手动转到每个代码片段并检查连接是否接近。

我认为,使用正则表达式是可能的,但事实是,我不是那么精通正则表达式,我可以写一个。

请建议使用正则表达式检查已打开的连接是否已关闭的java文件。

我的代码模式是这样的。

    try {
        /*
         Some code goes here
         */ 

     con = EJBUtil.getConnection(JNDI_NAME);

        /*
         Some code goes here
         */ 
         } 
    finally 
       {
            /*
              Some code goes here
           */ 
            DBUtil.close(con);
     or
         closeConnection.close(con);
           /*
            Some code goes here
           */ 
      } 

3 个答案:

答案 0 :(得分:2)

正则表达式不是这里的好工具。只需在您的文件中搜索getConnection,然后搜索close以查找相应的变量。

答案 1 :(得分:1)

首先,在您的代码上运行FindBugsPMD。两者都有检测源代码的规则,其中数据库资源没有或可能没有被正确关闭。他们可能会强调许多其他值得解决的问题。

答案 2 :(得分:0)

你可以编写脚本来计算开启和关闭条款 例如,这一个(perl脚本)输出带有未打开括号的行的文件:

#!/usr/bin/perl -w
# brackets.pl: output filenames with unmatched brackets (with hint to linenumber)
# example: ./brackets *.c
while(<>)
{
    if(!defined($f) or $f ne $ARGV){$f=$ARGV;$l=0}
    $l++;
    push @ar,"$f: $l" if(/{/);
    pop @ar if(/}/)
}
print"$_\n" for(@ar);

你可以用正则表达式替换括号