Получить номер порта сервера от tomcat без запроса - PullRequest
30 голосов
/ 05 октября 2010

Существует ли какой-либо Tomcat API или конфигурация, которая может сообщить приложению (возможно, при запуске), какой порт работает без запроса?

Представьте себе сценарий, в котором два веб-приложения работают в одном Tomcat, и одно из них должно вызывать веб-сервис из другого. Мы не хотим, чтобы запрос покинул Tomcat (если вы используете имя сервера Apache или абсолютный URL-адрес, запрос выйдет и снова вернется, и он может перейти к любому экземпляру) и вернется. Для этого я знаю название машины, но нет способа получить номер порта. Я знаю, что могу жестко закодировать эту информацию, но я не хочу этого делать, поскольку хочу, чтобы мой файл war не зависел от сервера приложений.

Я знаю, что мы можем найти его, если у нас будет HTTPServletRequest

Это работает только для Tomcat 6 и не будет работать на Tomcat 7

Ответы [ 12 ]

0 голосов
/ 06 октября 2010

Я не совсем уверен, можете ли вы получить доступ к порту Tomcat из кода в нужной вам конфигурации среды.Рассматривали ли вы на самом деле полный URL-адрес веб-службы, передаваемый приложению как параметр / параметр конфигурации (возможно, в файле .properties)?

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

0 голосов
/ 06 октября 2010

Хм, а как приложение запустится в Tomcat без запроса? Может быть, я на мгновение умру здесь, но я не думаю, что какие-либо классы будут загружаться, пока не поступит запрос. Конечно, у вас могут быть классы, не зависящие от какого-либо конкретного запроса, но им потребуется запрос, чтобы в какой-то момент их запустить.

...