3
我正嘗試創建一個多模塊應用程序,並將其中一個模塊與其他人(從另一臺機器)分開運行。 項目結構是這樣的:玩框架:運行多模塊應用程序的單獨模塊
main
/ \
module1 module2
我想運行一個模塊1作爲一個單獨的jar文件(?或者有這樣做的更好的方式),我會從另一臺機器上運行(我想連接它使用Akka遠程主應用程序)。
我在做什麼:
- 運行 「玩DIST」 命令
- 解壓module1.zip從通用文件夾
- 設置+ X模式來斌/模塊1可執行文件。
- 設置我的主類(將粘貼在下面):而不是
play.core.server.NettyServer
即時將我的主類:declare -r app_mainclass="module1.foo.Launcher"
- 運行與外部application.conf文件。
這裏是我的主類:
class LauncherActor extends Actor {
def receive = {
case a => println(s"Received msg: $a ")
}
}
object Launcher extends App {
val system = ActorSystem("testsystem")
val listener = system.actorOf(Props[LauncherActor], name = "listener")
println(listener.path)
listener ! "hi!"
println("Server ready")
}
這裏是控制檯輸出:
@pavel bin$ ./module1 -Dconfig.file=/Users/pavel/projects/foobar/conf/application.conf
[WARN] [10/18/2013 18:56:03.036] [main] [EventStream(akka://testsystem)] [akka.event-handlers] config is deprecated, use [akka.loggers]
akka://testsystem/user/listener
Server ready
Received msg: hi!
@pavel bin$
所以該系統一旦關閉,因爲它得到的主要方法的最後一行。如果我在沒有播放的情況下運行此代碼 - 它按預期工作,對象將被加載並等待消息,這是預期的行爲。
也許我做錯了什麼?或者我應該在module1可執行文件中設置一些選項?其他想法?
在此先感謝!
更新: 版本:
- 斯卡拉 - 2.10.3
- 玩! - 2.2.0
- SBT - 0.13.0
- 阿卡 - 2.2.1
- 的Java 1.7和1.6(試用過)
構建屬性:
lazy val projectSettings = buildSettings ++ play.Project.playScalaSettings ++ Seq(resolvers := buildResolvers,
libraryDependencies ++= dependencies) ++ Seq(scalacOptions += "-language:postfixOps",
javaOptions in run ++= Seq(
"-XX:MaxPermSize=1024m",
"-Xmx4048m"
),
Keys.fork in run := true)
lazy val common = play.Project("common", buildVersion, dependencies, path = file("modules/common"))
lazy val root = play.Project(appName, buildVersion, settings = projectSettings).settings(
resolvers ++= buildResolvers
).dependsOn(common, module1, module2).aggregate(common, module1, module2)
lazy val module1 = play.Project("module1", buildVersion, path = file("modules/module1")).dependsOn(common).aggregate(common)
lazy val module2: Project = play.Project("module2", buildVersion, path = file("modules/module2")).dependsOn(common).aggregate(common)
你能給我們SBT設置嗎?我甚至不知道Play/Scala/SBT/JDK版本以及是否所有項目都是Play項目。我認爲重現錯誤非常耗時。 – Schleichardt
更新了帖子。其實,我並沒有期待有人會試圖重現這個問題,但這會非常有幫助。我希望我做錯了什麼,或者我如何在機器之間拆分應用程序的想法是錯誤的,我應該以其他方式做。以爲有人已經面臨類似的問題,並有更好的想法做這樣的事情:) – psisoyev