【问题标题】:Play framework: Why does https url not work on using "sbt dist" command?播放框架:为什么 https url 在使用“sbt dist”命令时不起作用?
【发布时间】:2020-07-08 07:25:16
【问题描述】:

我正在尝试使用 play framework sbt dist 命令创建用于部署我的 Web 应用程序的可执行文件。当我使用“sbt run”命令运行我的应用程序时,https 工作,但是当我使用 sbt dist 并运行我的可执行文件来启动我的应用程序时,只有 http url 有效。

以下是我的配置

在 build.sbt 中

javaOptions ++= Seq(
  "-Dhttps.keyStore=conf/keystore.jks",
  "-Dhttps.keyStorePassword=*****",
  "-Dhttp.port=9000",
  "-Dhttps.port=9001",
  "-Dsentry.dsn=https://****"
)

在 application.conf 中

play.http {

  session {
    secure = true
    httpOnly = true
    domain = "localhost"
  }

  flash {
    secure = true
    httpOnly = true
  }
}

play.ws {
  ssl {
    trustManager = {
      stores = [
        { type = "JKS", path = "conf/keystore.jks" }
      ]
    }
  }
}

【问题讨论】:

  • 我猜问题是conf/keystore.jksapplication.conf 中的相对路径。试试keystore.jks 也许……不确定。
  • 在这种情况下,它应该会引发错误,例如 keystore.jks 不存在,而当我尝试仅使用 keystore.jks 时它确实发生了。
  • 通常使用命令sbt run 会在控制台上输出,例如Listening for HTTP on /0:0:0:0:0:0:0:0:9000Listening for HTTPS on /0:0:0:0:0:0:0:0:9001,但在这种情况下,它只输出HTTP,不提供有关HTTPS 的任何信息。

标签: java scala functional-programming sbt playframework-2.6


【解决方案1】:

你需要在Universal中定义javaOptions

javaOptions in Universal ++= Seq(
  "-Dhttps.keyStore=conf/keystore.jks",
  "-Dhttps.keyStorePassword=*****",
  "-Dhttp.port=9000",
  "-Dhttps.port=9001",
  "-Dsentry.dsn=https://****"
)

https://www.scala-sbt.org/sbt-native-packager/archetypes/java_app/customize.html#via-build-sbt

但是,为什么不在conf/application.conf 中定义这些设置呢?

【讨论】:

  • 这个小改动解决了我的问题。非常感谢@mkurz!你是一个救生员。
  • 既然你建议这些设置应该在conf/application.conf,所以我想知道它是否有利。因为我是scala/play framework 的初学者,所以我没有那么深入的理解。谢谢!
猜你喜欢
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
相关资源
最近更新 更多