java 整合Web调用kettle本地转换

来源:互联网 发布:java内存模型视频教程 编辑:程序博客网 时间:2024/06/05 06:40
@RequestMapping("/kettle")
 public void kettle(HttpServletRequest request){
  try {
   String user_dir = System.getProperty("user.dir");
   /*String kettleHome = this.getServletContext().getRealPath(File.separator + "WEB-INF");*/
   String kettleHome = request.getSession().getServletContext().getRealPath(File.separator + "WEB-INF/kettle");   
   // Kettle初始化需要修改相应的配置路径  
   System.setProperty("user.dir", kettleHome);
   System.setProperty("KETTLE_HOME", kettleHome);
   KettleEnvironment.init();
  } catch (KettleException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  String[] params = {"1","content","test.txt"};
  runTransfer(params,"12.ktr");
  
 }
 
 
 private Object getServletContext() {
  // TODO Auto-generated method stub
  return null;
 }
 public  void runTransfer(String[] params, String ktrPath) { 
        Trans trans = null; 
        try { 
            // // 初始化 
            // 转换元对象 
            /*if (!KettleEnvironment.isInitialized()) {
             KettleEnvironment.init();
            }*/
            // 初始化 
         
            //EnvUtil.environmentInit(); 
           
            //StepLoader.init();
            TransMeta transMeta = new TransMeta(ktrPath); 
            //TransMeta transMeta = new TransMeta(System.getProperty("user.dir")+ktrPath);
            // 转换 
            trans = new Trans(transMeta);
             
            // 执行转换 
            trans.execute(params); 
            // 等待转换执行结束 
            trans.waitUntilFinished(); 
            // 抛出异常 
            if (trans.getErrors() > 0) { 
                throw new Exception( 
                        "There are errors during transformation exception!(传输过程中发生异常)"); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }