Я использую Apache Tomcat в качестве единственного HTTP-сервера на Windows Server 2012.
Tomcat установлен как служба и привязан к порту 80. server.xml
файл был address="0.0.0.0"
добавлен к соединителю, и брандмауэр Windows открыт для всех запросов порта 80.
Мое приложение должно отправлять пользователям оповещения по электронной почте. Прямая доставка через локальную службу SMTP (Apache James) была ненадежной. Чтобы обеспечить доставку этих электронных писем, я решил пересылать свои электронные письма через нашу основную службу электронной почты, онлайн-службу Microsoft Office365. Для ретрансляции через эту службу необходимо шифрование TLS и другие меры безопасности. Как вы понимаете, служба SMTP от Microsoft работает хорошо, но у меня возникли трудности с правильной ретрансляцией любых других служб на основе Windows или Java. Чтобы включить доставку электронной почты, я установил встроенную службу SMTP Windows Server.
Эта конфигурация работала нормально, пока прошлой ночью не был установлен последний раунд обновлений Windows. Теперь я не могу получить доступ к своему серверу Tomcat, и все запросы на порт 80 не выполняются. Журналы Tomcat показывают:
SEVERE: Error initializing endpoint
java.lang.Exception: Socket bind failed: [730013] An attempt was made to access a socket in a way forbidden by its access permissions.
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:589)
...
Мой поиск в Google привел к появлению ряда ссылок, предполагающих, что виноват IIS Socket Pooling.
Я попытался зарезервировать порт 80 для tomcat, используя netsh http add iplisten 192.168.1.8
и это позволяет Tomcat запускаться и связываться локально. Теперь я могу видеть свой сайт Tomcat, используя http://localhost/
или http://127.0.0.1/
на локальной машине. Однако доступ через http://192.168.1.8/
или через какое-либо сетевое соединение все равно не удается.
Я не могу найти никакой документации о том, как полностью отключить пул сокетов IIS в Windows Server 2012 (все ссылки относятся к более старым версиям и сценариям, которые, похоже, были удалены / заменены в текущей версии сервера.
ОБНОВЛЕНИЕ: Похоже, что при установке (не обесцениваемой) службы Windows SMTP также устанавливается и автоматически запускается IIS. В процессе установки отображаются только инструменты управления, но когда вы проверяете консоли управления IIS, есть веб-сайт по умолчанию, который использует порт 80 для себя. И, конечно же, он берет на себя управление до того, как будут запущены сторонние веб-серверы. Вздох. Изменение сайта IIS на другой порт или его полная остановка, похоже, позволяет Tomcat снова работать.