4

我有使用 Spark 支持 HTTPS 的小型嵌入式服务器。我还想支持/捕获一些 HTTP 调用;例如帮助页面和一些重定向。

例如帮助页面:

  http://localhost:8088/help .... renders .... http::8088//localhost/help.html

或登录页面:

  http://localhost::8088/login ... renders .... https::8089//localhost/login.html

我已经发展到有一个嵌入式服务器响应 HTTP x 或 HTTPS 的阶段——一个或另一个,而不是同时响应。是否可以使用相同的嵌入式 Jetty(通过 Spark)服务器响应这两种协议?如果不是,在同一个嵌入式应用程序中运行两个 Jetty 服务器是否可行?我可以在同一个应用程序中运行两个 Spark 服务器吗?(我将其视为“阅读”,如果 Jetty 不这样做,要求 Spark 提供该服务将是一个死胡同)。

如果我可以使用我的 Spark 服务器来监听和处理这两种协议,我的首选答案是。到目前为止,我的调查表明只有一种模式是可能的,主要是因为 Spark 实际上是一个静态库,你只能设置一个端口;而且您可能只有一个“Spark”服务器。有人对 HTTP 和 HTTPS 使用相同的端口吗?(这对我来说似乎并不“好”)。

我确实找到了看起来像是同时使用这两种协议的单元测试代码,TestSparkUtil在这里:

但是,这是在测试服务器并使用大量已弃用的 API。最后一个想法是,我可以使用第二个(嵌入式)仅 Jetty servlet 将 HTTP 调用重定向到 HTTPS 吗?你会推荐吗?

我敢肯定这里有一个优雅的解决方案。提前感谢您花时间考虑本文提出的问题。

4

2 回答 2

2

GitHub 上有一个 pull request 解决了这个问题。

https://github.com/perwendel/spark/pull/329

更新:所有更改都在此处的提交中与主分支合并

于 2015-10-22T13:48:18.580 回答
1

对于任何感兴趣的人,乔治答案中的拉取请求在主分支中不再可用。当前正确的方法是使用实​​例 API。官方文档中没有文档,但可以在下面的新闻页面中找到详细信息和示例。

http://sparkjava.com/news#spark-25-released

于 2018-12-15T13:50:04.517 回答