将Scala PlayFramework项目部署到IBM Bluemix
问题描述:
我已经使用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造成的。
答
您不需要将Play Framework应用程序打包到war文件中,以便将其部署到Bluemix。
只需使用play dist
或activator 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
答
只是为了人(像我)现在来到这个页面。亚历克斯·席尔瓦的答案工程巨大,但需要一些更新:
- 相反的命令
play
或activator
使用sbt
的sbt dist
或sbt stage
命令描述here。如果使用play
,那么在activator
的情况下,&将不起作用 - 它已过时 - 它将失败并显示一些“找不到依赖性”错误。确保安装了最新版本的sbt
。 - 相同的指令适用于任何基于sbt的Scala应用程序,而不仅仅是Play Framework。您只需确保您的sbt版本中已正确设置
sbt-native-packager
插件。