2014-10-01 154 views
0

我正在使用JNDI方法通過Pentaho PDI(CE 5.0.1)連接多個MySQL數據庫服務器,並且一直工作到現在爲止,令人驚歎。其中一臺MySQL服務器故障,所以我改變了我的JNDI連接(... \ data-integration \ simple-jndi \ jdbc.properties)以連接到新的服務器,但是Kettle並沒有認識到這一改變,並且拋出如下錯誤:Pentaho Kettle無效的JNDI連接無法創建與數據庫服務器的連接

錯誤連接到數據庫[DB-名稱]:org.pentaho.di.core.exception.KettleDatabaseException: 發生錯誤嘗試連接到數據庫 無效的JNDI連接kidr_db_5:無法創建連接到數據庫服務器。嘗試重新連接3次。放棄。 org.pentaho.di.core.exception.KettleDatabaseException: 嘗試連接到數據庫時發生錯誤 無效的JNDI連接kidr_db_5:無法創建與數據庫服務器的連接。嘗試重新連接3次。放棄。

我可以直接從水壺通過本機連接到新的服務器(JDBC)連接方式,而不是通過JNDI只爲這個新的服務器。從JNDI休息DB連接工作正常。請指導我什麼錯在這裏?我錯過了什麼?或者它是一個錯誤?

+0

你有沒有在.pentaho文件夾中設置您的JNDI? JNDI的定義是 /.pentaho/simple-jndi/default.properties。在此定義的JNDI將在啓動時由PDI讀取。 – nsousa 2014-10-02 09:05:54

+0

jdbc.properties文件位於 \ simple-jndi文件夾中。請參閱(1)http://infocenter.pentaho.com/help48/index.jsp?topic=%2Fpdi_user_guide%2Fconcept_pdi_usr_working_with_jndi_carte.html和(2)http://kettle-pentaho.blogspot.in/p/use-jndi -in-pentaho.html 它工作正常,沒問題,直到我更改了jdbc.properties文件以反映最近一個DB服務器的更改。水壺不認可只有這個新的變化。在同一個JNDI文件中的其他連接細節仍然有效! – RVandakar 2014-10-07 05:29:13

回答

1

我已經解決了這個問題,最近很遺憾回覆。問題是,密碼包含了幾個特殊字符,包括#符號;但在Pentaho中,#是註釋行,因此密碼的一部分似乎是Pentaho的評論。

因此得出的結論是,不要在JNDI配置或Kettle配置文件中使用#以外的註釋。

0

快速信息。 不完全是一個水壺Pentaho錯誤。 Bug(如果不是故意製作的)在「simple-jndi」庫中。圖書館simple-jndi由Kettle使用,提供jndi上下文。雖然java.util.Properties類(http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html)Oracle文檔指出,註釋行必須以「#」符號開始,它必須是第一符號的路線,庫「簡單的JNDI」 - 使用自己的加載程序,叫做org.osjava.sj.loader.util.CustomLoader。這就是錯誤所在

int idx = line.indexOf('#'); 
// remove comment 
if(idx != -1) { 
    line = line.substring(0,idx); 
} 

所以評論是在後線「#」符號,如果u使用簡單的JNDI的一切。

0

使用的.xml代替的.properties

<?xml version="1.0" encoding="UTF-8"?> 
<something> 
<connection-name> 
    <type>javax.sql.DataSource</type> 
    <driver>org.postgresql.Driver</driver> 
    <url>jdbc:postgresql://localhost:5432/database</url> 
    <user>user</user> 
    <password>#secret#</password> 
</connection-name> 
</something> 

我的文件被稱爲connections.xml 然後你可以參考連接/事/連接名稱 在PDI爲上面的例子

相關問題