CloudBees Play2部署的“502 Bad Gateway”(Java和Scala)

时间:2013-02-04 01:09:34

标签: scala playframework playframework-2.0 sbt cloudbees

我按照此处描述的说明将我的Pl​​ay2应用程序部署到CloudBees:https://developer.cloudbees.com/bin/view/RUN/Playframework

我的Build.scala设置如下所示:

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA)
        .settings(cloudBeesSettings :_*)
        .settings(CloudBees.applicationId := Some("application"))
        .settings(CloudBees.username := Some("username"))
        .settings(CloudBees.apiKey := Some("0123456789ABCDEF"))
        .settings(CloudBees.apiSecret := Some("88888889999999$999999998888888="))
        .settings(CloudBees.host := "https://api.cloudbees.com/api")
        .settings(
          // Add your own project settings here  
        )

但是,部署时我收到以下消息:

[info] Deploying application-1.0-SNAPSHOT to Run@Cloud/username/application
........................uploaded 25%
........................uploaded 50%
........................uploaded 75%
........................upload completed
deploying application to server(s)...
....[info] Application available at http://application.username.cloudbees.net
[error] {file:/Users/user/dev/play2/Application/application/}Application/*:cloudbees-deploy: java.lang.ExceptionInInitializerError
[error] Total time: 74 s, completed Feb 3, 2013 7:44:43 PM

当我访问http://application.username.cloudbees.net时,我收到“502 Bad Gateway - nginx / 1.2.0”错误...

我认为这是因为我使用的是Mac,它有Java 1.7,CloudBees期待1.6 ......?从sbt-cloudbees-play-plugin项目源代码中,我可以看到我可以将“deployParams”选项设置为Map,但我对Scala完全不熟悉并且不确定如何执行此操作。我想在Build.scala中做一些事情,但我一直都会遇到错误:

.settings(CloudBees.deployParams += ("java_version" -> "1.7"))

这里描述了java_version参数:https://developer.cloudbees.com/bin/view/RUN/JVMVersion

您可以在此处查看项目来源:https://github.com/CloudBees-community/sbt-cloudbees-play-plugin/blob/master/src/main/scala/cloudbees.scala

我不知道该做什么或我的部署可能出现什么问题?即使创建没有数据库连接的全新Play应用程序,它仍然会失败。

对我可能做错的任何见解都会非常感激:)谢谢!

2 个答案:

答案 0 :(得分:3)

您可以尝试选项。

CloudBees.deployParams := Map("runtime.java_version" -> "1.7"),
CloudBees.openOnUpload := false,

第一个选项将运行时设置为java 1.7,这可能是您的问题。如果sbt正在使用JDK7,那么您需要将RUN @ cloud平台设置为java 7。

第二个选项通过在部署时禁用浏览器打开来修复ExceptionInInitializerError。根据我的经验,这个错误指向计算机上使用的Java 7,因为我只看到了Java 7而不是Java 6的错误。

答案 1 :(得分:0)

此外 - 请始终记住通过Web控制台或bees app:tail命令查看应用程序的日志,以防它以某种容器特定方式失败(我们无法返回非500错误,并且不希望通过Web泄漏有关错误的信息,因此在这种情况下它是一般错误)。