java - 如何以编程方式检测 Tomcat webapp 中已使用的端口?

标签 java windows tomcat port bind

我为客户提供我的 Tomcat 网络应用程序,该应用程序配置为监听端口 80 并在他们的 Windows PC 上运行。

在他们的一些部署中,Microsoft 的万维网发布服务已经在无意中运行,它也在端口 80 上监听。因此,当启动 Tomcat 和我的 webapp 时,地址已在使用中:JVM_Bind异常消息被记录到控制台,但是它会被稍后的启动消息滚动到屏幕之外,因此不会被注意到。

我的问题:有什么方法可以解决吗

  • 将 Tomcat 服务器配置为在这种情况下停止,或者
  • 对我的网络应用程序进行编码以检测到并停止?如果我的网络应用程序可以检测到这一点,那么我会记录一条消息,说明用户应该采取哪些步骤来终止其他程序。希望该消息在控制台上保持可见,而不是滚出屏幕。
    netstat -a -o -n | findstr 0.0:80
    taskkill /F /PID *pid*
    

虽然我有描述问题和补救措施的用户文档,但通常并不方便。我的想法是,如果这是控制台上的最后一条消息,它可能会减少支持调用时间。

最佳答案

在 IO(Http/Ajp 连接器)已经启动后,您的应用程序将开始部署到 servlet 容器中,因此您无法从 Web 应用程序执行此操作。

然而,您可以使用批处理文件包装 Tomcat 启动脚本,这将为您完成(并打印有意义的错误消息,然后等待用户按回车键)。

关于java - 如何以编程方式检测 Tomcat webapp 中已使用的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546408/

相关文章:

c# - 如何确定当前Windows定时器的分辨率?

c# - 在 C# 中使用 BackgroundWorker?

web-services - 带有 loadrunner 的谷歌 Protocol Buffer

java - 无法从本地 Maven 存储库添加项目作为依赖项

java - 使用Lombok生成 "Getters"

windows - SUBINACL 访问被拒绝

spring - 字符编码问题 Spring

tomcat - 如何在 apache tomcat 7.0.37 上部署 wso2 esb 4.7.0 版?

java - Gradle 6/Java 11 "module not found"poi 和 poi-ooxml 错误,但 jars 存在

java - 如何在 JUnit 测试中从抽象类创建对象