使用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目录下
- 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]
weblogic服务器文件放置位置
如图
如果使用绝对路径和jdbc的方式配置数据库不会出现上诉情况
JNDI文件位置 请参考https://blog.csdn.net/u012848709/article/details/89044633