找个线程是通过打开相关JSP,传入参数,然后启动,例如:<% ...........
  //fileName,xmltype,bgndt,enddt,userinfo.userId 是传入的变量
ThreadRunner tr = new ThreadRunner(fileName,xmltype,bgndt,enddt,userinfo.userId);
tr.start();
%>
来启动的,启动后,调用run()方法,在run() 里面,调用数据源,但是调用不到,也就是找不到数据源,是不是线程安全的问题造成的?

解决方案 »

  1.   

    ThreadRunner类:
    package zt.ccr.buss.crtfile;import java.util.*;
    import zt.ccr.buss.crtfile.prepdata.cusbase;
    import zt.plat.db.DBProcessor;
    import sun.jdbc.rowset.CachedRowSet;public class ThreadRunner extends Thread {
      public static int status_value;
      public static String status_message;
      private String xml_types[];
      private String fileName;
      private String bgndt;
      private String enddt;
      private String userid;
      public ThreadRunner() {
      }
      public ThreadRunner(String fileName, String xmltype[], String bgndt, String enddt, String userid) {
        this.xml_types = xmltype;
        this.fileName = fileName;
        this.bgndt = bgndt;
        this.enddt = enddt;
        this.userid = userid;
      }
      public void test1() {
         System.out.println(" ThreadRunner 测试 ***********");
           DBProcessor dbp = new DBProcessor();//获取数据源的类!!在这里有代码:dtsr = (DataSource) initctx.lookup("java:comp/env/jdbc/ccrdb"); 数据源已经配置好了       String sql ="select * from ccr.pmuser ";        CachedRowSet crs = dbp.getCrs(sql);
             try {
               while(crs.next()){
                 System.out.println(" ThreadRunner  **************####################"+crs.getString("USERID"));
               }         } catch (Exception e) {
            e.printStackTrace();
            dbp.rollback();
            dbp.release();
            //  System.out.println(e.toString());
          }
     }  public void run() {
        try {
            test1();
          }         }
        catch (Throwable e) {
          ThreadRunner.status_value = -1;
          ThreadRunner.status_message = "报文生成过程出错:<br><pre>" + e + "</pre>";
          e.printStackTrace();
        }
      }
    }
    但是获取数据源的时候报错:Name comp/env/jdbc not found in context "java:".
    这个数据源在其他非线程里面是没有问题的,可以获得的