2017-04-17 25 views
1

我工作的一個Java EE 7應用程序上的任何文件。我正在使用Payara micro來部署我的WAR文件。現在,我需要JDBC連接在我的應用程序,但我需要保持數據庫的IP /用戶名/密碼的地方,我可以改變以後,無需重新上傳,再部署WAR文件。的Java EE 7:如何從屬性文件加載JDBC連接信息/文件系統

有誰請告訴我怎樣才能做到這一點?

編輯:

我來到翻過一個解決方案,即在SO: https://stackoverflow.com/a/6296375/1931698

但是,我要尋找一個解決方案,而所有的管道。繼承DataSource只是爲了讓某些外部文件中的連接信息看起來像是過度殺傷。

編輯:

而且,這將是真正有用的,如果我可以只提供一個配置面板的用戶,他/她可以進入JDBC連接信息。有沒有辦法在運行時更改該信息(有效地丟棄現有的連接池並創建一個新的連接池)?

+2

在Payara中配置數據源本身,並使用JNDI來查找它,其他解決方案過於寬泛,並且涉及編寫管道查找外部配置文件等。您可以全部開箱即用。 –

回答

-1

利用java.utils.Properties用一個單獨的myproperties.properties文件在您的src文件夾(在類路徑)。

Properties prop = null; 
try { 
prop = new Properties(); 
InputStream inputStream = getClass().getClassLoader() 
          .getResourceAsStream("myProperty.‌​properties"); 
    if (inputStream != null) { 
    prop.load(inputStream); 
    } 
} catch (IOException e) { 
    errorLog.error("Property file not found in classpath: 
          ClientChecking Class."); 
} 
String userName = prop.getProperty("USERNAME"); 

myproperties.properties文件必須包含:

USERNAME=user123 

如果您在使用Apache Tomcat託管,那麼你可以找到和編輯路徑的WebContent的propertyfile(根目錄)/WEB -INF/classes/

+0

如何使這個屬性文件可用於Java EE容器,以獲得Java EE的所有連接池優勢? –

+0

雖然開發將您的屬性文件放在classpath中(即在源文件夾中),並且在應用程序運行時,此文件將位於類路徑中,並帶有.class文件。 –

0

Payara Micro應該允許數據源定義中的系統屬性替換使用語法$ {system.property.name}您可以使用它來定義數據庫用戶名和密碼以及連接字符串。

使用語法$ {ENV = env.name}在171.1以後也有環境變量支持,其中env.name是環境變量名稱。

相關問題