经过1.5年多的Ruby和Rails编程,我终于开始研究Scala和Lift中的一个新项目。基本上我正在尝试编写一个API来访问来自庞大数据库(数百万行)的信息。 Lift应该帮助我编写这个项目的前端(API部分)。但现在,这还涉及一个模块,该模块将从压缩的ZIP XML文件中读取,以便最初使用行填充数据库。该模块需要在3个月内运行一次。
我应该在哪里放置此模块代码?或者更确切地说,我应该如何组织我的Lift和Scala代码?后台进程在哪里?欢迎提出这方面的任何指示。
答案 0 :(得分:5)
我有点不确定这是你所追求的,但我正在使用SBT(http://code.google.com/p/simple-build-tool/)。它绘制了一个默认的项目结构。您应该特别关注子项目(http://code.google.com/p/simple-build-tool/wiki/SubProjects)。
对于预定进程,您可以使用actor和ActorPing定期重新启动进程。对于3个月这么长的时间间隔,您可以通过触摸文件并检查应用程序重新启动时的日期来跟踪上次调用。 ActorPing需要在应用程序启动时启动;这可以在升降机靴中完成。如果你需要更多地模块化它,你可以创建一个servlet来启动servlet init上的ActorPing。
答案 1 :(得分:2)
提升跟随(至少我使用的版本)标准的Maven 2结构,所以没有什么特别之处。只需在src文件夹中添加代码即可。要创建的包将取决于您的设计/偏好,我们无法真正帮助您:)
答案 2 :(得分:1)
使用SBT作为构建的“标准”Lift项目通常需要以下项目结构:
project
src
main
scala
bootstrap
liftweb
Boot.scala
project-name
comet
lib
model
snippet
view
resources
webapp
WEB-INF/web.xml
index.html
test
resources
scala
RunWebApp.scala
如果您使用的是Lift Mapper ORM,通常会将模型放在src / main / scala / project-name / model目录中。同样,任何CometActors都应该进入src / main / scala / project-name / comet。您编写的任何自定义代码段应位于src / main / scala / project-name / snippet以及项目名称下视图目录中的任何自定义View组件。所有与启动应用程序和建立数据库连接器等相关的代码都应该放在src / main / scala / bootstrap / liftweb / Boot.scala中。结构的其余部分就像先前的答案所说的那样,它遵循Maven 2的一般结构。
这只是默认Lift应用程序提供的一般结构。唯一需要的是bootstrap.liftweb.Boot.scala文件,因为Lift Servlet在引导期间查找该类。