【问题标题】:How to check connection leak using regular expression?如何使用正则表达式检查连接泄漏?
【发布时间】:2010-04-21 10:15:17
【问题描述】:

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

经过搜索,我发现已经打开了数千次连接,但我无法手动转到每个代码片段并检查连接关闭的事情。

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

请建议一个正则表达式来检查已打开的连接是否已关闭的 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
           */ 
      } 

【问题讨论】:

    标签: java regex connection


    【解决方案1】:

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

    【讨论】:

    • 我终于做到了,搜索所有 getconnection n fix :(
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您可以编写脚本来计算打开和关闭子句
      例如,这个(perl 脚本)输出带有未关闭左括号的行的文件:

      #!/usr/bin/perl -w #brackets.pl:输出带有不匹配括号的文件名(提示行号) # 示例:./括号 *.c 而() { if(!defined($f) 或 $f ne $ARGV){$f=$ARGV;$l=0} $l++; 推 @ar,"$f: $l" if(/{/); 弹出@ar if(/}/) } 打印"$_\n" for(@ar);

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 2022-11-03
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        相关资源
        最近更新 更多