2012-03-15 7 views
2

코드에서 함수를 제거했지만 아직이 함수가 작성한 데이터베이스 항목이 데이터베이스에 계속 쓰여지고있는 Java 웹 응용 프로그램이 있습니다.java 데이터베이스 함수가 ​​제거되었습니다 - 여전히 실행 중입니다.

IssueWarrant 함수 내부에 주석 처리 된 insertWarrantFee에 대한 호출이 있습니다.

private void insertWarrantFee(String CasePrefix, String CaseNumber, String SummSeq, String WarrantNumber) 
    { 
     Statement localstmt = null; 
     String localqueryString; 
     ResultSet localrSet = null; 
     String feeAmt = null; 

     localqueryString = "SELECT AUTO$$ FROM " + library3 + "CMPDKTTP WHERE DKTTYP = 'W'"; 
     try 
     { 
      localstmt = conn.createStatement(); 
      localrSet = localstmt.executeQuery(localqueryString);   
      while (localrSet.next()) 
      { 
       feeAmt = localrSet.getString("AUTO$$"); 
      } 
      localstmt.close(); 
      localrSet.close(); 

     } catch (SQLException e) 
      { 
       System.out.println("IssueWarr - Error in Insert Warrant Fee SQL1"); 
       e.printStackTrace(); 
       ReturnInfo = "Issuing Warrants Failed."; 
       success = false; 
      }finally 
      { 
       try 
       { 
        if (!localstmt.isClosed()) 
        { 
         localstmt.close(); 
        }     
       } catch (SQLException sql2) 
        { 
         System.out.println("Error trying to close connections. Exception: " + sql2.getMessage()); 
        } 
      } 

     localqueryString = "INSERT INTO " + library7 + "CMPBWTRN" 
      + " (CASPRE, CASNUM, DEFSEQ, SUMSEQ, BWNBR, FEEAMT, DKTTYP, TUSER, LUPDAT)" 
      + " VALUES ('" + CasePrefix + "', " + CaseNumber + ", 1, " + SummSeq + ", '" + WarrantNumber 
      + "', " + feeAmt + ", 'W', 'TAAD', " + getShortDate() + ")";     
     try 
     { 
      localstmt = conn.createStatement(); 
      localstmt.executeUpdate(localqueryString); 
      localstmt.close(); 

     } catch (SQLException e) 
      { 
       System.out.println("IssueWarr - Insert Warrant Fee SQL2"); 
       e.printStackTrace(); 
       ReturnInfo = "Issuing Warrants Failed."; 
       success = false; 
      }finally 
      { 
       try 
       { 
        if (!localstmt.isClosed()) 
        { 
         localstmt.close(); 
        }     
       } catch (SQLException sql2) 
        { 
         System.out.println("Error trying to close connections. Exception: " + sql2.getMessage()); 
        } 
      } 
    } 

그래서 insertWarrantFee라는 라인이 주석에도 기록이 여전히 CMPBWTRN에 삽입되고 : 여기

private void issueWarrant(String CasePrefix, String CaseNumber, String HearingType, String Suspend) 
    { 
     int i = 0, intDivision = 0, pos = 0; 
     String SummSeq = getSummSeq(CasePrefix, CaseNumber); 
     String Charges = getCharges(CasePrefix, CaseNumber, HearingType); 
     boolean isVacated = false, isHearingFound = false; 
     NextBWNumber warrNbr = new NextBWNumber(); 
     String WarrantNumber = warrNbr.getNextBWNumber(); 
     String warrStatus = warrNbr.getNextBWNStatus(); 
     String HearingDesc = "", Division = ""; 
     isVacated = getVacatedStatus(CasePrefix, CaseNumber, HearingType); 
     isHearingFound = getHearingStatus (CasePrefix, CaseNumber, HearingType); 

     HearingDesc = getFormatToday() + " " + getHearingDesc(HearingType); 
     if (HearingDesc.length() > 30) 
     { 
      HearingDesc = HearingDesc.substring(0,30); 
     } 
     Division = getHearingJudge(CasePrefix,CaseNumber,HearingType); 
     intDivision = Integer.parseInt(Division); 
     if (intDivision < 10) 
     { Division = "0" + Division; } 

     Statement localstmt = null; 
     String localqueryString; 

     localqueryString = "INSERT INTO " + library7 + "CMPBWPND" + 
      " (CASPRE, CASNUM, DEFSEQ, CHGSEQ, SUMSEQ, STSCOD, STSDAT," + 
      " STATUT, CHGABV, BWNBR, JUDCOD, PRVFLG, CT2FLG, DIVISN, BNDAMT," + 
      " BTYPE, CMNT, CUSER, TUSER, LUPDAT, SCRDAT, STATSDAT, SUMCRDAT, LUPDATE)" + 
      " VALUES ('" + CasePrefix + "', " + CaseNumber + ", 1, " + Charges.substring(i, i + 1) + 
      ", " + SummSeq + ", 9, " + getShortDate() + ", 'RCP 12-A TA', 'WARRANT', '" + 
      WarrantNumber + "', " + intDivision + ", 'N', 1, '" + Division + "', " + 
      BondAmt + ", '" + BondType + "', '" + HearingDesc + "', 'TAAD', 'TAAD', " + 
      getShortDate() + ", " + getShortDate() + ", " + getLongDate() + ", " + getLongDate() + 
      ", " + getLongDate() + ")"; 

     try 
     { 
      if (!isVacated && isHearingFound) 
      { 
       localstmt = conn.createStatement(); 
       localstmt.executeUpdate(localqueryString); 
       localstmt.close(); 
       StatusMsg = "Client No Show-WI"; 
      } 
      if (isVacated) 
      { 
       StatusMsg = "Client Vacated Case"; 
      } 
      if (!isHearingFound) 
      { 
       StatusMsg = "Client Hearing Missing"; 
      } 

     } catch (SQLException e) 
      { 
       System.out.println("IssueWarr - Error in IssueWarrant"); 
       e.printStackTrace(); 
       ReturnInfo = "Issuing Warrants Failed."; 
       success = false; 
      }finally 
      { 
       try 
       { 
        if (!localstmt.isClosed()) 
        { 
         localstmt.close(); 
        }     
       } catch (SQLException sql2) 
        { 
         System.out.println("Error trying to close connections. Exception: " + sql2.getMessage()); 
        } 
      } 

     **//insertWarrantFee(CasePrefix, CaseNumber, SummSeq, WarrantNumber);**  
     updateHearingRecord(CasePrefix, CaseNumber, HearingType, Charges.substring(i, i + 1), Suspend); 

     for (i = 1; i < Charges.length(); i++) 
     { 
      insertBWPTFRecord(CasePrefix, CaseNumber, SummSeq, Charges.substring(i, i + 1)); 
     } 
     if (!success) 
     { 
      StatusMsg = "Client Iss. Warrant Failure"; 
     } 
    } 

은 주석되기 전에 insertWarrantFee라는 코드입니다.

어떻게 이런 일이 발생할 수 있으리라 생각하십니까? 개발자가 바람둥이 연결 캐시 문제 일 수 있음을 나타냅니다. 마법의 코드 옆에 다른 제안이 있습니까?

감사합니다. 레슬리

+1

실제로 실행중인 코드가 제거 된 코드없이 컴파일 되었습니까? – cdeszaq

+1

일반적으로 SQL을 연결 문자열로 사용하면 안됩니다. 이것은 SQL 주입 공격을위한 초대입니다. 대신에'PreparedStatement'를 사용하십시오. – nwinkler

+0

cdeszaq - 아니, 잘 모르겠다. 우리가 항상 배포하는 것처럼 응용 프로그램이 배포되었음을 압니다. 나는 우리가 자동으로 짓기 때문에 그것이 배치되기 전에 그것이 지어 졌다고 가정하고있다. – Leslie

답변

0

몇 가지 시도합니다 :

  • 이 응용 프로그램을 다시 배포했고 Tomcat을 다시 시작했는지 확인하십시오. 문제가있는 배포 된 클래스의 타임 스탬프를 확인하십시오.
  • 청소 Tomcat의 tmpwork 디렉토리
  • 열기 제거 된 코드가 여전히 있는지 여부를 확인하기 위해 디 컴파일러를 사용하여 배포 된 Java 클래스
  • .
  • 주석 처리 된 메서드와이를 호출하는 메서드에 로깅 (또는 System.out.println) 문을 추가하십시오. 변경 사항을 재배포 한 후에 둘 다 인쇄되는지 여부를 확인하십시오.
+0

감사합니다. 새 클래스가 배포 된 것처럼 보이지 않습니다. 아직 오래된 날짜가 있습니다. 우리는 오늘 밤 재배포 할 예정이며 나쁜 모조를 고칠 수 있기를 바랍니다! – Leslie

관련 문제