将 Scala PlayFramework 项目部署到 IBM Bluemix
Deploy Scala PlayFramework Project to IBM Bluemix
我已经使用 Play 2.4 Scala2.11 构建了一个 RESTFul 服务,现在我想将它部署到 IBM Bluemix。
play2-war-plugin 用于将项目打包为 war 包,因为 Bluemix 使用 Liberty 作为容器。
但是当我将 war 包推送到 Bluemix 时,我收到了错误日志:
[ERROR ] SRVE0918E: The attempted blocking write is not allowed because the non-blocking I/O has already been started by the application registering the WriteListener [play.core.server.servlet31.Play2Servlet31RequestHandler$ResultWriteListener@d2487ee8].
我想知道:
- 能否将基于 Scala 的 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 Play Framework 的 buildpack 文档:
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/example-play_framework.md
仅供现在访问此页面的人(如我)使用。 Alex de Silva 的回答很好,但需要更新:
- 使用
sbt
代替命令play
或activator
here描述了sbt dist
或sbt stage
命令。如果您使用 play
,它根本不会工作,而在 activator
的情况下——它已经过时了——它会失败并出现一些 "can't find dependency" 错误。确保安装了最新版本的 sbt
。
- 相同的说明适用于任何 基于 sbt 的 Scala 应用程序,而不仅仅是 Play Framework。您只需要确保在您的 sbt 构建中正确设置了
sbt-native-packager
插件。
我已经使用 Play 2.4 Scala2.11 构建了一个 RESTFul 服务,现在我想将它部署到 IBM Bluemix。
play2-war-plugin 用于将项目打包为 war 包,因为 Bluemix 使用 Liberty 作为容器。
但是当我将 war 包推送到 Bluemix 时,我收到了错误日志:
[ERROR ] SRVE0918E: The attempted blocking write is not allowed because the non-blocking I/O has already been started by the application registering the WriteListener [play.core.server.servlet31.Play2Servlet31RequestHandler$ResultWriteListener@d2487ee8].
我想知道:
- 能否将基于 Scala 的 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 Play Framework 的 buildpack 文档:
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/example-play_framework.md
仅供现在访问此页面的人(如我)使用。 Alex de Silva 的回答很好,但需要更新:
- 使用
sbt
代替命令play
或activator
here描述了sbt dist
或sbt stage
命令。如果您使用play
,它根本不会工作,而在activator
的情况下——它已经过时了——它会失败并出现一些 "can't find dependency" 错误。确保安装了最新版本的sbt
。 - 相同的说明适用于任何 基于 sbt 的 Scala 应用程序,而不仅仅是 Play Framework。您只需要确保在您的 sbt 构建中正确设置了
sbt-native-packager
插件。