前面介紹過關於在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";
若是有其餘意見和建議,你們能夠一塊兒交流,學無止境,一塊兒進步。