如何在嵌入式Spark服务器中同时使用HTTPS和HTTP?

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或HTTPS中的任何一种协议,但不能同时响应两种。是否可能使用相同的嵌入式Jetty(通过Spark)服务器来响应这两个协议?如果不行,是否可行在同一嵌入式应用程序中运行两个Jetty服务器?我能在同一应用程序中运行两个Spark服务器吗?(我认为如果Jetty无法做到这一点,那么向Spark请求该服务将是一条死路)。
我的首选答案是使用我的Spark服务器来监听和处理这两种协议。到目前为止,我的调查表明只有一种模式是可能的,这主要是因为Spark实际上是一个静态库,你只能设置一个端口;而且你只能有一个“Spark”服务器。有人尝试过在同一端口上同时使用HTTP和HTTPS吗?(对我来说,这似乎并不好)。
我找到了一个单元测试代码,看起来像是在使用这两种协议,TestSparkUtil 在这里: 然而,这将测试服务器并使用许多已弃用的API。最后一个想法是:我能否使用第二个(嵌入式)仅Jetty的servlet将HTTP调用重定向到HTTPS?你会推荐吗?
我相信这里有一个优雅的解决方案。提前感谢您花时间考虑在此框架内构建的问题。
2个回答

2

这个拉取请求中没有文档,但是从源代码的更改中可以看出,将会有两个端口(4567和4568) - 一个用于监听HTTP请求,另一个用于监听HTTPS请求。 - George
能够在同一端口上将http重定向到https会很不错。 - Ed Griffin

1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接