2016-03-01 123 views
0

我已經使用Play 2.4 Scala2.11構建了RESTFul服務,現在我想將其部署到IBM Bluemix。將Scala PlayFramework項目部署到IBM Bluemix

play2-war-plugin用於將項目打包爲war包,因爲Bluemix使用Liberty作爲容器。

但是,當我推戰爭包Bluemix,我得到了錯誤日誌:

[錯誤] SRVE0918E:嘗試的阻塞寫是不允許的,因爲非阻塞I/O已經被啓動該應用程序註冊WriteListener [play.core.se[email protected]d2487ee8]。

我想knwo:

  • 能斯卡拉基於PlayFramework項目部署到IBM Bluemix?
  • 有沒有更好的方法將Play項目打包到war包中?
  • 在我的情況下,我能做些什麼來確認這個錯誤是由我的代碼造成的還是由play2-war-plugin造成的。

回答

2

您不需要將Play Framework應用程序打包到war文件中,以便將其部署到Bluemix。

只需使用play distactivator dist構建您的應用程序,然後使用java_buildpack來部署它。例如:

$ cf push play-application -p target/universal/play-application-1.0-SNAPSHOT.zip -b java_buildpack 

你可以看到的Java buildpack文檔這裏打球框架:

https://github.com/cloudfoundry/java-buildpack/blob/master/docs/example-play_framework.md

1

只是爲了人(像我)現在來到這個頁面。亞歷克斯·席爾瓦的答案工程巨大,但需要一些更新:

  1. 相反的命令playactivator使用sbtsbt distsbt stage命令描述here。如果使用play,那麼在activator的情況下,&將不起作用 - 它已過時 - 它將失敗並顯示一些「找不到依賴性」錯誤。確保安裝了最新版本的sbt
  2. 相同的指令適用於任何基於sbt的Scala應用程序,而不僅僅是Play Framework。您只需確保您的sbt版本中已正確設置sbt-native-packager插件。