Как мой сервлет в Tomcat может определить, какие соединители настроены?

StackOverflow https://stackoverflow.com/questions/65530

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Service.findConnectors

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

Connector.getPort

См. JavaДокументация для подробностей.

Другие советы

Почему?

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top