如何访问在 Windows Server 2012 上运行的 Apache Tomcat(与 Microsoft SMTP 服务一起)

如何访问在 Windows Server 2012 上运行的 Apache Tomcat(与 Microsoft SMTP 服务一起)

我在 Windows Server 2012 上运行 Apache Tomcat 作为我唯一的 HTTP 服务器。

Tomcat 已作为服务安装并绑定到端口 80。该server.xml文件已address="0.0.0.0"添加到连接器,并且 Windows 防火墙对所有端口 80 请求开放。

我的应用程序需要向用户发送电子邮件警报。通过本地托管的 SMTP 服务 (Apache James) 直接发送不可靠。为了确保这些电子邮件的发送,我选择通过我们的主要电子邮件服务 Microsoft 的在线 Office365 服务转发我的电子邮件。要通过此服务转发,TLS 加密和其他安全措施是必要的。正如您可能想象的那样,Microsoft 的 SMTP 服务运行良好,但我很难让任何其他基于 Windows 或 Java 的服务正确转发。为了启用电子邮件发送,我安装了内置的 Windows Server SMTP 服务。

此配置一直运行良好,直到昨晚安装了最新一轮的 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 套接字池是罪魁祸首。

我尝试保留端口 80 供 tomcat 使用netsh http add iplisten 192.168.1.8,这样 Tomcat 就可以启动并在本地绑定。现在我可以使用http://localhost/http://127.0.0.1/在本地机器上查看我的 Tomcat 站点。但是,通过http://192.168.1.8/或 通过任何网络连接进行访问仍然失败。

我找不到有关如何在 Windows Server 2012 上完全禁用 IIS 套接字池的任何文档(所有链接均指向旧版本和脚本,这些版本和脚本似乎已在当前服务器版本中删除/取代。

更新:安装(未弃用的)Windows SMTP 服务似乎也会安装并自动运行 IIS。安装过程仅显示管理工具 - 但当您检查 IIS 管理控制台时,会发现默认网站独占了端口 80。当然,它会在启动任何第三方 Web 服务器之前接管控制权。唉。将 IIS 站点更改为其他端口或完全停止它似乎可以让 Tomcat 再次工作。

相关内容