функция базы данных Java удалена - все еще выполняется - PullRequest
2 голосов
/ 15 марта 2012

У меня есть веб-приложение Java, которое я удалил функцию из кода, и все же записи базы данных, которые пишет эта функция, все еще записываются в базу данных.

Внутри функции IssueWarrant есть вызов insertWarrantFee, который был закомментирован.

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 до того, как он был закомментирован:

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.

Есть идеи, как это могло произойти?Разработчик указывает, что это может быть проблема с кэшем соединений Tomcat?Любое другое предложение, кроме магического кода?

Спасибо!Лесли

1 Ответ

0 голосов
/ 16 марта 2012

Несколько вещей, чтобы попробовать:

  • Убедитесь, что вы повторно развернули приложение и перезапустили Tomcat. Проверьте временную метку развернутого класса, о котором идет речь.
  • Очистить каталоги Tomcat tmp и work
  • Откройте развернутый класс Java с помощью декомпилятора, чтобы увидеть, находится ли удаленный код там еще.
  • Добавьте оператор ведения журнала (или System.out.println) в закомментированный метод и в вызывающий его метод. Посмотрите, напечатаны ли один или оба после повторного развертывания изменений.
...