首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

线程示范

2013-02-17 
线程示例package com.poson.aspzimport java.io.Fileimport java.rmi.RemoteExceptionimport java.sql.

线程示例

package com.poson.aspz;import java.io.File;import java.rmi.RemoteException;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import org.apache.log4j.Logger;import com.poson.aspz.db.TranContext;import com.poson.aspz.util.Config;import com.poson.aspz.util.Const;import com.poson.aspz.util.MyLoger;import com.poson.aspz.util.Util;import java.net.MalformedURLException;import ws.clinet.axis2.WebSoapBindingImplServiceCallbackHandler;import ws.clinet.axis2.WebSoapBindingImplServiceStub;import java.sql.Connection;import java.sql.DriverManager;public class OnTimeCreditIntf  extends Thread{private boolean bSuperUser = false;private boolean working = false;private String planXMLFileFN = "";private String path = "";private String staffNo = "";private String pswd = "";private String staffId = "";private String siteId = "";private String areaId = "";private TranContext myDBTrans = null;private String curCreatePZDate = "";protected Connection conn;//private static Log log = LogFactory.getLog(Worker.class);//private static MyLoger log = new MyLoger();private Logger logger = Logger.getLogger(OnTimeCreditIntf.class);public OnTimeCreditIntf() {}public Connection getConnection() {try {conn = DriverManager.getConnection(Const.CONFIG_XML_DB_URL);return conn;} catch (Exception ex) {ex.printStackTrace();return null;}}/** * 建立连接 * @param driver * @param url * @param user * @param password * @return */public Connection getConnection(String driver, String url, String user, String password) {try {Class.forName(driver);conn = DriverManager.getConnection(url, user, password);return conn;} catch (Exception ex) {ex.printStackTrace();return null;}}public List getBJOnTimeCreditIntfSumbit() throws SQLException{ArrayList list = new ArrayList();ResultSet rs = null;StringBuffer strSql = new StringBuffer();strSql.append(" SELECT TRIM(ORDER_SERIAL_NBR) ORDER_SERIAL_NBR, ");strSql.append(" TRIM(OWE_BUSINESS_TYPE_ID) OWE_BUSINESS_TYPE_ID,TRIM(STAFF_ID) STAFF_ID, ");strSql.append(" TRIM(SERV_ID) SERV_ID,TO_CHAR(CREATED_DATE, 'yyyymmddhhmmss') CREATED_DATE,TO_CHAR(COMPLETED_DATE, 'yyyymmddhhmmss') COMPLETED_DATE, ");strSql.append(" TRIM(STATE) STATE,TO_CHAR(STATE_DATE, 'yyyymmddhhmmss') STATE_DATE,TRIM(PROCESS_COUNT) PROCESS_COUNT, ");strSql.append(" TRIM(PRE_SERV_STATE) PRE_SERV_STATE,TRIM(REMARK) REMARK,TRIM(CHARGE) CHARGE,TRIM(BALANCE) BALANCE, ");strSql.append(" TRIM(CREDIT) CREDIT,TRIM(OWE_TASK_ITEM_ID) OWE_TASK_ITEM_ID ");strSql.append(" FROM A_WORK_ORDER ");strSql.append(" WHERE STATE='P0C' AND ROWNUM<500 ORDER BY ORDER_SERIAL_NBR ");rs = myDBTrans.executeQuery(strSql.toString());while (rs.next()) {        HashMap planInfo = new HashMap();        planInfo.put("ORDER_SERIAL_NBR",rs.getString("ORDER_SERIAL_NBR"));        planInfo.put("OWE_BUSINESS_TYPE_ID",rs.getString("OWE_BUSINESS_TYPE_ID"));        planInfo.put("STAFF_ID",rs.getString("STAFF_ID"));        planInfo.put("SERV_ID",rs.getString("SERV_ID"));        planInfo.put("CREATED_DATE",rs.getString("CREATED_DATE"));        planInfo.put("COMPLETED_DATE",rs.getString("COMPLETED_DATE"));        planInfo.put("STATE",rs.getString("STATE"));        planInfo.put("STATE_DATE",rs.getString("STATE_DATE"));        planInfo.put("PROCESS_COUNT",rs.getString("PROCESS_COUNT"));        planInfo.put("PRE_SERV_STATE",rs.getString("PRE_SERV_STATE"));        planInfo.put("REMARK",rs.getString("REMARK"));        planInfo.put("CHARGE",rs.getString("CHARGE"));        planInfo.put("BALANCE",rs.getString("BALANCE"));        planInfo.put("CREDIT",rs.getString("CREDIT"));        planInfo.put("OWE_TASK_ITEM_ID",rs.getString("OWE_TASK_ITEM_ID"));list.add(planInfo);  }        if (rs != null) {        rs.close();        rs = null;          }return list;}//public void updateBJOnTimeCreditIntfPlan(String requestId,String serial) throws SQLException//{//ResultSet rs = null;//StringBuffer strSql = new StringBuffer();//strSql.append(" UPDATE A_WORK_ORDER SET STATE='P0P',REMARK='处理成功',SERIAL='" + serial + "'");//strSql.append(" WHERE ORDER_SERIAL_NBR= " + requestId);//rs = myDBTrans.executeQuery(strSql.toString());//}public void deleteBJOnTimeCreditIntfPlan(String requestId) throws SQLException{StringBuffer strSql = new StringBuffer();strSql.append(" DELETE FROM A_WORK_ORDER ");strSql.append(" WHERE ORDER_SERIAL_NBR= " + requestId);myDBTrans.doBatch(strSql.toString());}public void  insertBJOnTimeAWorkOrderLog(String requestId,String serial) throws SQLException{StringBuffer strSql = new StringBuffer();strSql.append(" INSERT INTO A_WORK_ORDER_LOG (order_serial_nbr,owe_business_type_id,staff_id, ");strSql.append(" serv_id,created_date,completed_date,state,state_date,process_count,pre_serv_state,remark,");strSql.append(" tran_manual_date,hd_staff_id,charge,balance,credit,owe_task_item_id,SERIAL) ");strSql.append(" select order_serial_nbr,owe_business_type_id,staff_id, " );strSql.append(" serv_id,created_date,completed_date,'P0P',sysdate,process_count,pre_serv_state,remark,");strSql.append(" null,null,charge,balance,credit,owe_task_item_id,'" +serial + "' from A_WORK_ORDER ");strSql.append(" WHERE ORDER_SERIAL_NBR= " + requestId);myDBTrans.doBatch(strSql.toString());}public void updateBJOnTimeCreditFailPlan(String requestId,String error, String serial) throws SQLException{StringBuffer strSql = new StringBuffer();strSql.append(" UPDATE A_WORK_ORDER SET STATE='P0E',state_date=sysdate,REMARK='" + error + "',SERIAL='" + serial + "'");strSql.append(" WHERE ORDER_SERIAL_NBR= " + requestId);myDBTrans.doBatch(strSql.toString());}public OnTimeCreditIntf(String staffNo, String pswd, String path, String planXMLFileFN){//if(this.conn == null) {//this.conn = this.getConnection();//this.conn.setAutoCommit(true);//}this.staffNo = staffNo;this.pswd = pswd;this.path = path;this.planXMLFileFN = path + File.separator + planXMLFileFN;// 启动数据库连接myDBTrans = new TranContext();}public boolean isWorking() {return working;}public void setWorking(boolean working) {this.working = working;}public void run(){// 开始无限循环工作long times = 0;int sleepTime = 60; while (working){  try   { List curSubmitReport = getBJOnTimeCreditIntfSumbit(); String xmlFileName = Util.getAppTopFolderPath() + Const.CONFIG_XML_FILE_NAME;         Config config = new Config(xmlFileName);         sleepTime = config.sleep; for (int n = 0; n < curSubmitReport.size(); n++) {try {   Date curDate = new Date();   HashMap planInfo = (HashMap) curSubmitReport.get(n);   String requestId = (String) planInfo.get("ORDER_SERIAL_NBR");   String servId = (String) planInfo.get("SERV_ID");   String synType = (String) planInfo.get("OWE_BUSINESS_TYPE_ID");   String stateTime = (String) planInfo.get("STATE_DATE");   String curBalance = (String) planInfo.get("BALANCE");   String creditValue = (String) planInfo.get("CREDIT");   String random = String.valueOf(Math.random()).substring(2,10);       Date currentTime=new Date();       SimpleDateFormat formatter=new SimpleDateFormat("yyyyMMddHHmmss");       String time=formatter.format(currentTime);       String serial = time + random + "10" + "02";       WebSoapBindingImplServiceStub.OnTimeCreditControlReq onTimeCreditControlReq = new WebSoapBindingImplServiceStub.OnTimeCreditControlReq();       WebSoapBindingImplServiceStub.OnTimeCreditControl onTimeCreditControl = new WebSoapBindingImplServiceStub.OnTimeCreditControl();       onTimeCreditControlReq.setRequestId(serial);       onTimeCreditControlReq.setServId(servId);       onTimeCreditControlReq.setStateTime(stateTime);       onTimeCreditControlReq.setSynType(Integer.parseInt(synType));       onTimeCreditControlReq.setInterfaceId("");       onTimeCreditControlReq.setCurBalance(curBalance);       onTimeCreditControlReq.setCreditValue(creditValue);       onTimeCreditControl.setIn0(onTimeCreditControlReq);   logger.info("**OnTimeCreditControl**请求参数如下:"                    + "\n RequestId(请求流水): " + onTimeCreditControlReq.getRequestId()                    + "\n ServId(用户标识): " + onTimeCreditControlReq.getServId()                    + "\n SynType(同步类型): " + onTimeCreditControlReq.getSynType()                    + "\n curBalance(实时结余): " + onTimeCreditControlReq.getCurBalance()                    + "\n creditValue(用户信用度): " + onTimeCreditControlReq.getCreditValue()                    + "\n StateTime(状态时间): " + onTimeCreditControlReq.getStateTime());   String result = callOnTimeCreditIntfWebServices(onTimeCreditControl,config);      if("0".equals(result))   {   insertBJOnTimeAWorkOrderLog(requestId,serial);   deleteBJOnTimeCreditIntfPlan(requestId);   logger.info("=========OnTimeCreditControl successful,servId:"+servId+"=========");   }   else   {  myDBTrans.roolback();  updateBJOnTimeCreditFailPlan(requestId,result,serial);  logger.info("=========OnTimeCreditControl failure,servId:"+servId+"当前流水执行失败!!!" );   }      myDBTrans.commit();   // 关闭数据集try {myDBTrans.close();} catch (Exception e) {e.printStackTrace();} } catch (RuntimeException e) {   logger.info("=========failure=========当前条目计划执行失败!!!" );   e.printStackTrace();   myDBTrans.roolback();   myDBTrans.close(); } }   }          catch(Exception ex)          {ex.printStackTrace();Util.outPutInfo("未知错误发生" + ex.getMessage());  }// 关闭数据集try {myDBTrans.close();} catch (Exception e) {e.printStackTrace();}  // 睡眠一段时间后再工作  try   {sleep(sleepTime);myDBTrans.freeCon();myDBTrans.initConnection();  }   catch(InterruptedException e)  {Util.outPutInfo("线程睡眠被打断,程序继续执行: " + e.getMessage());e.printStackTrace();  }  }}private String callOnTimeCreditIntfWebServices(WebSoapBindingImplServiceStub.OnTimeCreditControl onTimeCreditControlReq,Config config){   try    {            WebSoapBindingImplServiceStub  stub = new WebSoapBindingImplServiceStub(config.wsEndpoint); WebSoapBindingImplServiceStub.OnTimeCreditControlResponse onTimeCreditControlResp = stub.onTimeCreditControl(onTimeCreditControlReq); logger.info("result is: \n"+onTimeCreditControlResp.getOnTimeCreditControlReturn().getResult()); String result = onTimeCreditControlResp.getOnTimeCreditControlReturn().getResult(); if("0".equals(result)) return "0"; else return onTimeCreditControlResp.getOnTimeCreditControlReturn().getErrorMessage();   }    catch(Exception e)   { e.printStackTrace(); return "5000";   } }public static void main(String[] args){  String path = Util.getAppTopFolderPath();  String user = "jlz";  String pswd = "1q2w3e4r";  Thread thread = new OnTimeCreditIntf(user, pswd, path, Const.SUBMIT_PLAN_XML_FILE_NAME);  thread.setDaemon(false);  ((OnTimeCreditIntf) thread).setWorking(true);  thread.start();  // 主线程进入无限睡眠状态,其创建的子线程 thread 继续工作  try  {Thread.sleep(Long.MAX_VALUE);  }   catch(InterruptedException e)   {System.out.println("主线睡眠状态被打断,程序继续执行...\n" + e.getMessage());  }  // 当主线程睡眠被打断时,程序结束,并设置子线程状态,让其在完成必要工作后也结束  ((OnTimeCreditIntf) thread).setWorking(false);}}

?

热点排行