2016-03-01 107 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插件。