使用java调用kettle 总结(二)

使用java调用kettle 总结(二)

java调用本地kjb、ktr文件

1:java代码

public class Test extends HttpServlet {


	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		 
		 
		 StartKettleJob.runJob(null, "kettle/test/job_1.kjb");
	}
	
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		 
	doGet(req, resp);
	}
}

public static String runJob(String[] params, String jobPath ) {
	 
	try {

		System.out.println("jobpath" + jobPath);
		 
		KettleEnvironment.init();
		// jobname 是Job脚本的路径及名称
		JobMeta jobMeta = new JobMeta(jobPath, null);
		Job job = new Job(null, jobMeta);
		job.setParameterValue("id", null);
		job.start();

		job.waitUntilFinished();

		String msg = msgFactory.getMsg("5");
		if (job.getErrors() > 0) {
			return msg;
			// Exception("There are errors during job exception!(执行job发生异常)");
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return  "";
}

###2出错信息

  • 提示在对应位置找不到文件,如下图,把文件放在tomcat的 bin目录下
Unable to read file [file:///D:/soft/myeclipse/apache-tomcat-7.0.70-windows-x64/apache-tomcat-7.0.70/bin/kettle/test/job_1.kjb]
Could not read from "file:///D:/soft/myeclipse/apache-tomcat-7.0.70-windows-x64/apache-tomcat-7.0.70/bin/kettle/test/job_1.kjb" because it is not a file.

  • 数据库连接出错(使用jndi)
    • java.io.File parameter must be a directory. [D:\soft\myeclipse\apache-tomcat-7.0.70-windows-x64\apache-tomcat-7.0.70\bin\simple-jndi]

      根据提示把simple-jndi文件夹放在 tomcat的bin目录下

weblogic服务器文件放置位置

如图

如果使用绝对路径和jdbc的方式配置数据库不会出现上诉情况

JNDI文件位置 请参考https://blog.csdn.net/u012848709/article/details/89044633

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值