В Tomcat, как мой сервлет может определить, какие разъемы настроены? - PullRequest
1 голос
/ 15 сентября 2008

В Tomcat 5.5 server.xml может иметь много соединителей, обычно порт только 8080, но для моего приложения пользователь может настроить свой servlet.xml так, чтобы другие порты были открыты (скажем, 8081-8088). Я хотел бы, чтобы мой сервлет выяснил, какие порты соединений сокетов будут vaild (Во время Servlet.init () tomcat еще не запустил соединители.)

Я мог бы сам найти и проанализировать server.xml (grotty), я мог бы посмотреть на имена потоков (после запуска tomcat - но как бы я узнал, когда это подходящее время?) Но я бы предпочел Решение, которое можно выполнить в моем servlet.init () и определить, какой диапазон портов будет действительным. Есть идеи? Для моего приложения решение может быть тесно связано с Tomcat, и это нормально.

Ответы [ 3 ]

4 голосов
/ 15 сентября 2008

В Tomcat 6.0 это должно быть что-то вроде:

org.apache.catalina.ServerFactory.getServer().getServices 

чтобы получить услуги. После этого вы можете использовать

Service.findConnectors

, который возвращает Соединитель, который наконец имеет метод

Connector.getPort

Подробнее см. JavaDocs .

0 голосов
/ 22 сентября 2008

Что бы вы ни собирались делать - я бы не пошел по дороге, специфичной для кота.

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

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

0 голосов
/ 15 сентября 2008

Почему?

Если вам нужно во время генерации страницы для URL изображения или файла CSS, что не так с ServletRequest.getLocalPort () или, еще лучше, HttpServletRequest.getContextPath () для всего хижину?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...