将Scala PlayFramework项目部署到IBM Bluemix

时间:2016-03-01 12:48:55

标签: java scala playframework ibm-cloud devops

我使用Play 2.4 Scala2.11构建了一个RESTFul服务,现在我想将它部署到IBM Bluemix。

由于Bluemix使用Liberty作为容器,因此

play2-war-plugin用于将项目打包到war包中。

但是当我将war包推送到Bluemix时,我得到了错误日志:

  

[ERROR] SRVE0918E:不允许尝试阻塞写入,因为注册WriteListener的应用程序已经启动了非阻塞I / O [play.core.server.servlet31.Play2Servlet31RequestHandler$ResultWriteListener@d2487ee8]。 / p>

我想知道:

  • 可以将基于Scala的PlayFramework项目部署到IBM Bluemix吗?
  • 是否有更好的方法将Play项目打包到war包中?
  • 在我的情况下,我该怎么做才能确认这个错误是由我的代码引起的还是由play2-war-plugin造成的。

2 个答案:

答案 0 :(得分: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

您可以在此处查看Play Framework的Java buildpack文档:

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

答案 1 :(得分:2)

只为现在来这个页面的人(像我一样)。亚历克斯·德席尔瓦的答案很有效但需要一些更新:

  1. 而不是命令playactivator使用sbt sbt distsbt stage命令被描述为here。如果您使用play则无法使用{&1}。在activator的情况下 - 它已过时 - 它将失败并出现一些“无法找到依赖”错误。确保您安装了最新版本的sbt
  2. 相同的说明适用于任何基于sbt的Scala应用程序,而不仅仅是Play Framework。您只需确保在sbt版本中正确设置了sbt-native-packager插件。
相关问题