我正在使用Scala with Lift开发一个新的Web应用程序。我想让它可以重复使用,以便其他人可以将它安装在自己的服务器上以满足自己的需求。我从PHP背景出来,通常的做法是创建一个要求数据库连接详细信息的安装表单。此信息存储在配置文件中,并由PHP应用程序的其余部分用于连接到数据库。这对用户来说非常方便,因为所有内容都包含在存储PHP文件的目录中。他们可以自由定义其他一切。我的Java / Scala背景都是企业工作,其中一个应用程序只打算在我们为它设置的数据库上运行。它并不意味着安装在其他人的Web服务器上或不同的数据库中。
所以我的问题是,这通常是如何为Java / Scala世界完成的?如果有开源应用程序实现主流解决方案,请随时向我们指出。
答案 0 :(得分: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)
然后,引用的'Props'将(默认情况下)位于资源中props目录的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)
答案 1 :(得分:0)
我不确定我是否错过了你的观点
默认情况下,Lift使用Scala源文件(Boot.scala
)来配置所有设置,因为Lift不想将其他语言引入框架,但是您可以使用.properties文件覆盖某些配置。
在Java / Scala世界中,我们使用.properties文件。它只是用于配置或本地化等的纯文本文件,就像PHP中的文本配置文件一样。
Lift Framework默认支持外部数据库配置文件,你可以查看Boot.scala
中的代码,如果存在.properties文件,数据库将使用连接配置进行初始化,如果不是,它将使用源文件配置。