使用嵌入式Spark服务器同时拥有HTTPS和HTTP的方法?

时间:2014-09-12 04:02:59

标签: java http https jetty-9 spark-java

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

例如帮助页面:

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

或登录页面:

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

我已经进入了一个阶段,我有一个嵌入式服务器响应HTTP xor HTTPS - 一个或另一个,而不是两者一起。是否可以使用相同的嵌入式Jetty(通过Spark)服务器响应这两种协议?如果没有,在同一个嵌入式应用程序中运行两个Jetty服务器是否可行?我可以在同一个应用程序中运行两个Spark服务器吗? (我把它当作'',如果Jetty不这样做,要求Spark服务将是一个死胡同。

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

我确实发现单元测试代码看起来像是在使用这两个协议TestSparkUtil

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

我确信这里有一个优雅的解决方案。提前感谢您抽出时间考虑此处提出的问题。

2 个答案:

答案 0 :(得分:2)

GitHub上有一个拉取请求来解决这个问题。

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

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

答案 1 :(得分:1)

对于任何感兴趣的人,在master分支中不再提供George answer中的pull请求。当前正确的方法是使用实​​例API。官方文档中没有可用的文档,但是详细信息和示例可在下面的新闻页面中找到。

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