Способ иметь как HTTPS, так и HTTP со встроенным сервером Spark?

У меня есть небольшой встроенный сервер, поддерживающий HTTPS с использованием Spark. Я также хочу поддерживать/перехватывать некоторые вызовы 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 в одном приложении? (Я воспринимаю это как «read», что, если Jetty не сделает этого, запрос Spark на эту услугу будет тупиковым).

Я бы предпочел ответить, могу ли я использовать свой сервер Spark для прослушивания и обработки обоих протоколов. Мое исследование до сих пор предполагает, что возможен только один режим, в основном потому, что Spark на самом деле является статической библиотекой, которую вы можете установить только один порт; и у вас может быть только один сервер «Spark». Кто-нибудь использовал один и тот же порт для HTTP и HTTPS? (Это просто не кажется мне «хорошим»).

Я нашел код модульного теста, который выглядел так, как будто он использует оба протокола, TestSparkUtil здесь:

Однако это тестирование сервера и использование множества устаревших API-интерфейсов. И последняя мысль: могу ли я использовать второй (встроенный) сервлет только для Jetty для перенаправления HTTP-вызовов на HTTPS? Вы бы порекомендовали это?

Я уверен, что здесь есть элегантное решение. Заранее благодарим вас за то, что уделили время рассмотрению изложенных здесь вопросов.


person will    schedule 12.09.2014    source источник


Ответы (2)



Для всех, кто заинтересован, запрос на вытягивание в ответе Джорджа больше не доступен в основной ветке. Текущий правильный способ - использовать экземпляр API. Документация недоступна в официальных документах, но подробности и пример можно найти на странице новостей ниже.

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

person Islam Abdalla    schedule 15.12.2018