2011-02-17 83 views
3

我正在使用Scala與Lift的新Web應用程序。我想讓它可重用,以便其他人可以根據自己的需要將它安裝在自己的服務器上。我來自PHP背景,通常的做法是創建一個安裝表單,詢問數據庫連接的詳細信息。該信息存儲在配置文件中,供PHP應用程序的其餘部分用於連接數據庫。這對用戶來說非常方便,因爲所有內容都包含在存儲PHP文件的目錄中。他們可以自由定義其他一切。我的Java/Scala背景都是企業工作,其中應用程序僅用於在我們爲其設置的數據庫上運行。這並不意味着要安裝在別人的網絡服務器或不同的數據庫上。斯卡拉/電梯數據庫連接

所以我的問題是這是如何通常爲Java/Scala世界完成?如果有開源應用程序實施主流解決方案,請隨時將我指向這些。

回答

0

我不知道我是否錯過了你的觀點。
默認情況下,Lift使用Scala源文件(Boot.scala)來配置所有設置,因爲Lift不想將其他語言引入框架,但是您可以使用.properties文件覆蓋某些配置。

在Java/Scala世界中,我們使用.properties文件。它只是一個純文本文件,用於配置或本地化等,就像PHP中的文本配置文件。

Lift Framework擁有對外部數據庫配置文件的默認支持,您可以檢查Boot.scala中的代碼,即如果.properties文件存在,數據庫將使用連接配置進行初始化,否則它會使用源文件配置。

2

我用這個來建立數據庫:

val vendor = 
    new StandardDBVendor(
    Props.get("db.driver") openOr "org.h2.Driver", 
    Props.get("db.url") openOr "jdbc:h2:mem:db;AUTO_SERVER=TRUE", 
    Props.get("db.user"), 
    Props.get("db.password")) 
LiftRules.unloadHooks.append(vendor.closeAllConnections_! _) 
DB.defineConnectionManager(DefaultConnectionIdentifier, vendor) 

的「道具」簡稱隨後將(默認)在資源道具目錄中的文件default.props。

更新:這是我在生產服務器上所做的。通過'Props.whereToLook',您可以提供一個檢索配置輸入流的功能。這可以是如下例所示的文件,也可以通過網絡套接字來獲取。

您可能會讓應用程序失敗,並顯示錯誤對話框。

val localFile =() => { 
    val file = new File("/opt/jb/myapp/etc/myapp.props") 
    if (file.exists) Full(new FileInputStream(file)) else Empty 
} 
Props.whereToLook =() => (("local", localFile) :: Nil) 
+0

隨機用戶如何使用自己的屬性文件呢?他們是否必須打開WAR並插入他們自己的? – Marshmellow1328 2011-02-18 01:23:23

相關問題