前面介绍过关于在kettle工具中怎么使用JNDI配置,更多的咱们多是须要在java项目中使用JNDI的配置,刚开始网上查了好多资料,都是说的在tomcat的配置文件里面配置JNDI链接信息,按照此,怎么配置都不对,后来仔细分析了下,是不适用的。java
为了解决这个问题,本身搭建了kettle的源码,我搭建的是kettle8.0.0的版本,注意的是,kettle8.0.0的源码文件结构和以前的版本已经不同了,因此搭建的时候要注意,若是后面有时间,必定分享给你们。本篇博客说下java项目中怎么使用JNDI的配置。tomcat
其实也是简单的,经过kettle的源码便可分析出来,其实代码也是kettle源码的。工具
1.将JNDI配置文件放在一个指定的目录下(这个看本身),如个人就在项目根目录下simple-jndi/jdbc.properties:ui
里面的配置信息同kettle工具里面的JNDI文件配置。blog
2.除了kettle的几个jar以外,记得将kettle工具下的simple-jndi的jar包放进项目。get
3.调用kettle的环境初始化方法KettleEnvironment.init(true);看kettle源码便可知道,该方法的参数为true就表示为须要调用初始化jndi。源码
4.在调用该方法以前,除了其它的参数以外,须要下面几行代码,这就是最重要的了:博客
File file = new File(path);//这个path就是jdbc.prtoperties文件的配置路径,指向上层文件夹路径便可,建议是绝对路径。
path = file.getCanonicalPath();string
Const.JNDI_DIRECTORY = path;it
System.setProperty( "java.naming.factory.initial", "org.osjava.sj.SimpleContextFactory" );
System.setProperty( "org.osjava.sj.root", path);
System.setProperty( "org.osjava.sj.delimiter", "/" );
5.调用其它方法便可。
基于上面获取绝对路径的方法,能够参照我下面的,固然我感受个人比较繁琐一点,这个根据本身实际项目来便可。
String mClassPath = Thread.currentThread().getContextClassLoader().getResource("").toString();
String tClassPath=mClassPath.substring(mClassPath.indexOf("/")+1, mClassPath.indexOf("ui"))+"simple-jndi";
若是有其余意见和建议,你们能够一块儿交流,学无止境,一块儿进步。