请帮忙,因为我在onEndCall方法中得到空指针异常,请参考下面的代码
公共类GET_END_DETAILS扩展了Thread实现的EndCallInterface {
public String strCallId= "";
public String strVxmlServerIp= "";
public String strCli= "";
public String strDnis= "";
public String strCallStDateTime="";
public String strCallEndDateTime="";
public Connection conn;
public CallableStatement SQLStm;
//public ResultSet rs=null;
public int res;
public CallEndAPI callEndAPI;
Thread t;
public void onEndCall(CallEndAPI callEndAPI) throws AudiumException{
try{
//设置来电结束日期时间
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//24hrs
Date date = new Date();
strCallEndDateTime=dateFormat.format(date);
callEndAPI.addToLog("Call End Time : ", strCallEndDateTime);
callEndAPI.setSessionData("S_CALL_ENDDATETIME", strCallEndDateTime);
strCallId= callEndAPI.getSessionData("CallID").toString();
callEndAPI.addToLog("CallID : ", strCallId);
strVxmlServerIp= callEndAPI.getSessionData("S_VXMLSERVER_IP").toString();
callEndAPI.addToLog("Vxml Server IP : ", strVxmlServerIp);
strCli=callEndAPI.getSessionData("S_ANI").toString();
callEndAPI.addToLog("CLI : ", strCli);
strDnis=callEndAPI.getSessionData("S_DNIS").toString();
callEndAPI.addToLog("DNIS : ", strDnis);
strCallStDateTime=callEndAPI.getSessionData("S_CALL_STARTDATETIME").toString();
callEndAPI.addToLog("Call Start Time : ", strCallStDateTime);
//callEndAPI.addToLog("Call End :", "Call ID=" + sCID );
callEndAPI.addToLog("Starting the Java Thread to insert values into EWT table","");
t.start();
}catch (Exception e){
callEndAPI.addToLog("Call End Exception: ", e.getMessage().toString());
}
}
public void run(){
try{
callEndAPI.addToLog("Inside run() method","");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:sqlserver://172.18.150.154;user=ivr_user;password=aircel123;database=AircelInterimReport");
//Statement SQLStm= conn.createStatement();
//String sSQL="insert into CALL_END_DETAILS_EWT (CALL_ID,VXMLSERVER_IP) values ('" + sCID + "','" + sVxmlIP + "')";
String sSQL="{call LOG_CALLEND_DETAILS_EWT(?, ?, ?, ?, ?, ?)}";
SQLStm= conn.prepareCall(sSQL);
SQLStm.setString(1, strCallId);
SQLStm.setString(2, strVxmlServerIp);
SQLStm.setString(3, strCli);
SQLStm.setString(4, strDnis);
SQLStm.setString(5, strCallStDateTime);
SQLStm.setString(6, strCallEndDateTime);
callEndAPI.addToLog("Call End : ", "Insert Statement " + sSQL);
res =SQLStm.executeUpdate();
callEndAPI.addToLog("","Values inserted to EWT SQL table successfully");
/*int res;
res=Call_Log_EWT(sCID,"172.18.150.66" , "121313", "4555");
if(res>0)
callEndAPI.addToLog("Call End API", "Database Connection successfull and Table Record Count is : " + res);
else
callEndAPI.addToLog("Call End API", "Database Connection failed");*/
}catch(Exception e){
callEndAPI.addToLog("Exception occured",e.getMessage().toString());
}
finally
{
try
{
conn.close();
SQLStm.close();
}
catch(SQLException sqlEx)
{
callEndAPI.addToLog("SQL Exception while closing connection : " , sqlEx.getMessage().toString());
}
}
} }