2010-11-17 79 views
3

我有一些我想要公開的代碼。代碼通過服務器發送電子郵件,連接到數據庫以及其他需要用戶名/密碼的任務。如何將敏感數據存儲在Java配置文件中?

我想密碼和存儲等在一個單獨的配置文件,這樣我就不必清理我的代碼在每次提交。

我該怎麼做?在C中使用#define很容易,但我不確定如何在Java中完成此操作。

編輯:我使用的環境是Glassfish的

回答

8

的基本方法是把信息的屬性文件,使用屬性類在運行時加載它。如果您使用的是J2EE服務器,則在服務器中配置數據庫連接,並且代碼通過抽象名稱引用它們。

我想我應該補充一點,如果您使用的是服務器,如何配置它,以及如何讓你的代碼的連接將由服務器和J2EE水平不同,所以發表您的環境。通過查看javadoc和load()方法,使用Properties類非常明顯。

+1

[Java屬性教程](http://download.oracle.com/javase/tutorial/essential/environment/properties.html) – 2010-11-17 00:23:08

+0

感謝您的回答!這有很大幫助。 – samoz 2010-11-17 01:15:21

1

GlassFish中,轉到管理控制檯和資源下創建一個新的連接池。這定義了您的數據庫連接,並將在您的應用程序之間共享這些連接的池。現在在「JDBC資源」下,創建一個將該池映射到名稱的新條目。該名稱通常是類似於jdbc/myappname的名稱。

對於J2EE5或以後的應用中,現在可以添加爲類級變量:

@Resource(mappedName = 「JDBC/myappname」)的DataSource myDS;

在運行時,服務器會將該資源注入到數據庫池中。然後,當你需要一個連接,就可以做到這一點的任何方法內:

連接康恩= myDS.getConnection();

結果是你的代碼沒有在所有關心數據庫連接信息,或管理的連接池。您可以在開發和生產服務器上部署相同的代碼,並且它們將獲得適當的連接。爲了獲得注入,它必須是服務器創建的類,如EJB,servlet,標記庫處理程序或JSF受管bean。