Можете ли вы добавить дополнительную точку входа в веб-приложения сервлета? - PullRequest
2 голосов
/ 02 июня 2010

Представьте, что у вас есть стандартное веб-приложение на Java, использующее простые сервлеты, SpringMVC или что-то еще. Вы также хотите (по любой причине) способ общения с сервером без HTTP - я буду использовать прямые сокеты, так как это самый простой пример, который я могу придумать.

Создать веб-приложение легко, у вас есть сервлеты, действующие как точки входа. Написание Java-приложения, которое отслеживает порты, также довольно просто. Но как насчет того, что делает оба? Это разрешено без взлома? И если окажется, что мы согласны, что это плохая идея, какая архитектура лучше? Обратите внимание, что одним из мотивов этого является производительность ... мы могли бы легко иметь два отдельных приложения, совместно использующих БД, но предпочитаем избегать использования БД в качестве средства связи, когда информация может кэшироваться в памяти гораздо больше эффективно.

1 Ответ

2 голосов
/ 02 июня 2010

Итак, я предполагаю, что в игре находится контейнер Java EE, такой как Tomcat. Если вы хотите, чтобы он прослушивал какой-то другой порт, помимо или в дополнение к 80, обязательно. Вы должны сделать новый Connector в server.xml, в случае Tomcat, и указать любой порт, который вам нравится.

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

Если вы отвечаете практически на одни и те же запросы по двум протоколам, имеет смысл использовать один сервер с разными конечными точками. Я полагаю, что намного легче поделиться всей этой общей логикой.

Даже если вы хотите запустить отдельное приложение, оно все равно, вероятно, стоит пойти по этому пути, поскольку вы будете использовать управление соединениями контейнера и тому подобное.

...