kettle job如何利用java的反射机制获取执行的sql语句

kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制获取执行的sql。

如:

var sqlObj = getJobStep("SQL");
var sql = sqlObj.environmentSubstitute(sqlObj.getSQL());

var logWriter = org.pentaho.di.core.logging.LogWriter.getInstance();
logWriter.logBasic(parent_job.getJobname(), "作业SQL语句打印===================>"+sql);
true;

function getJobStep(stepName){
  var jobMeta = parent_job.getJobMeta();
  var jobStep = jobMeta.findJobEntry(stepName, 0, false);
  var stepObj = jobStep.getEntry();
  return stepObj;
}

这样就可以将日志优雅地记录在日志文件中了。

时间: 2024-10-27 10:14:30

kettle job如何利用java的反射机制获取执行的sql语句的相关文章

java的反射机制的问题

问题描述 java的反射机制的问题 111111111111111111111111111111111111111111111 解决方案 反射机制,好像是这样子,在public类里我创建了一个接口,可惜,我都不知道我什么时候用它,所以我就不初始化它了,突然有一天,我要初始化他一次,于是我就用反射机制来给它初始化一下.不知道对不对? 解决方案二: java反射机制及性能优化问题Java进阶(六)Java反射机制可恶问题NoSuchFieldExceptionJAVA中的反射机制 解决方案三: 这个

Java的反射机制---动态调用对象的简单方法_java

唉!我还真是在面试中学习新东东啊,一个公司刚刚给了个测试,不过我很奇怪的是为什么web developer的职位居然考java的反射机制题,不过学习研究一下反射机制对我来说是件好事啦! 先说说什么是java反射机制吧,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这 种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.主要功能:在运行时判断任意一个对象所属的类:在运行时构造任意一个类的对 象:在运行时判断任意一个

简单总结Java的反射机制的运用_java

Java 的反射机制是使其具有动态特性的非常关键的一种机制,也是在JavaBean 中广泛应用的一种特性. 简单来说,一个类或者一个对象是拥有下面几种属性的: Method,Constructor,Field,其大致结构类图如下: 我们现在用代码来说明问题: 首先,我们看Class类,在Class类中,我们可以看见下面的几个重要的方法: getInterfaces() getSuperClass(); isInterface(); 这是用来得到一个类的接口或者超类,以及判断这个类是不是一个接口:

Java通过反射机制动态设置对象属性值的方法_java

/** * MethodName: getReflection<br> * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7-19下午12:42:55 * @param clzzName * @param respXML * @return * @throws ClassNotFoundException * @throws DocumentException * @throws IllegalArgumentE

能否通过反射机制获取系统电话com.android.phone的实例,并执行其中一些方法

问题描述 能否通过反射机制获取系统电话com.android.phone的实例,并执行其中一些方法???? 问题补充:我想实现这么一个事情,就是在非人工通话的过程中,不用按数字按钮(也比如返回到手机桌面了),然后也能发送某个数字按键,比如自动选择了1号键,又或者是选择了*号键 解决方案 java反射有很多例子的 网上找找 Class phone= Class.forName("com.android.phone"); com.android.phone phoneInstance =

请问大神在数据库中可以执行的sql语句,为什么通过java类连接数据库执行报错

问题描述 请问大神在数据库中可以执行的sql语句,为什么通过java类连接数据库执行报错 报错信息: java.sql.SQLException: Already closed. 解决方案 这个错误提示并不是SQL语句的错误,而是Java的SQL操作类的连接对象已经关闭了,不能执行SQL而报出的异常. 解决方案二: 连接已经关了,当然出错了 解决方案三: 数据库为open,先open 在进行相应cmd命令执行. 解决方案四: 你的连接关闭了,jdbc去连接数据库啊 解决方案五: 这个问题还不是你

java跟踪执行的sql语句示例分享_java

代码: 复制代码 代码如下: package com.lwj.test.proxy; import java.lang.reflect.InvocationHandler;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.sql.Connection;import java.sql.SQLExce

在java类中写带中文的sql语句,查询结果为空

问题描述 在java类中写带中文的sql语句,查询结果为空 String query="select * from Restaurant where Restaurant_name='紅樹林';"; rs=stm.executeQuery(query); 这是我在封装好的数据库类中写的sql语句,查询结果为空(rs.next() 为false ) 如果改用id查询,即: String query="select * from Restaurant where Restaura

java 通过反射怎么获取方法中参数值

问题描述 publicUserinfofindById(Stringid){} 例如我有上面的一个方法我现在通过反射已经得到了参数名也就是得到了参数类型是java.util.String但我现在要获取到id这个值应该怎么获取 解决方案 解决方案二:上面的代码是一个接口的实现类我已经在一个类中调用了这个接口并传入了id值但我现在想做的功能是通过java反射在这个接口的实现类里做一些逻辑处理现在我通过反射已经获取该接口实现类的方法名及方法参数类型但不知道如何获取传过来的这个id值我要通过这个不通的i