java - 当 Netbeans 用完时,Tomcat 8 的端口使用是否会干扰自身?

标签 java tomcat netbeans

我们有一个在 Tomcat 7 上运行的 Web 应用程序,我们正在迁移到 Tomcat 8,现在也依赖于该应用程序的内部微服务。我们使用 Netbeans。

我已经对配置进行了必要的更改,这样我就可以从命令行启动微服务应用程序,然后在我的机器上启动 Web 应用程序。但是,当我尝试从 Netbeans 中运行 Web 应用程序时,它告诉我“Tomcat 启动失败,服务器端口 8443 已被使用”。

我不知道为什么当从 Netbeans 中运行时该端口被报告为正在使用,但如果从命令行运行具有相同 Web 应用程序的同一服务器则不会。有没有人知道要检查什么?

最佳答案

取得进展的快速方法是使用 8443 以外的端口。这不一定能解决您遇到的问题,但可以避免它。为此:

  • 停止 Tomcat。
  • 选择 8443 以外的端口。我选择了8447
  • 从控制台运行以下命令以验证端口 8447 尚未被使用:

网络统计-aon |查找字符串 8447

  • 这是 Windows 的语法 - 我认为它在 Linux 上有所不同。如果没有显示,则 8447 是一个可用端口。否则继续选择不同的端口号,直到找到一个可用的端口号。
  • 对位于目录 {Tomcat dir}/conf 中的 server.xml 进行备份(以便您可以在必要时回归)。
  • 编辑 server.xml8443 的所有实例替换为 8447 或您选择的任何替代端口,然后保存文件。<
  • 启动 Tomcat。它将使用端口 8447 而不是 8443 出现。您可以在 NetBeans 中显示的 Tomcat 日志中验证这一点;查找字符串 https-openssl-apr-8447 以验证:

09-Jan-2018 02:07:26.279 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 09-Jan-2018 02:07:26.285 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["https-openssl-apr-8447"] 09-Jan-2018 02:07:26.290 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 09-Jan-2018 02:07:26.293 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2585 ms

  • 您现在应该可以测试您的网络应用程序了。我刚刚验证了此方法适用于 Tomcat 9,但我确信它也适用于 Tomcat 8。

作为一个单独的问题,一旦端口8447 一切正常,运行netstat -aon | findstr 8443 查看 Tomcat 运行时端口 8443 是否仍在使用。如果是这样,那么(在 Windows 上)获取仍在使用该端口的进程的 PID,然后在任务管理器详细信息选项卡上查找该 PID。这是一个屏幕截图,显示在我的例子中端口 8447 被 PID 2340 使用,它是 Tomcat 的 java.exe 实例:

Tomcat PID

如果这些都不能解决任何问题:

  • 请告知正在使用哪个操作系统和哪个版本的 NetBeans。
  • 将 NetBeans 中 Tomcat 日志的相关部分添加到您的帖子中。

关于java - 当 Netbeans 用完时,Tomcat 8 的端口使用是否会干扰自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078898/

相关文章:

Java Logging - 日志记录已完成,我的日志文件在哪里

java - 如何在 Java 中为剪贴板编写 JUnit 测试?

java - tomcat 8 jsp javax.servlet.ServletException 异常

python - Artifactory - 进行 REST 调用时出现 Tomcat 错误

java - 相反的世界 "XML Parsing Error: not well-formed"错误

java - 将 Jax-B 与 Jax-WS 结合使用以返回复杂类型

c++ - 在 .cpp 中,有没有办法自动实现其 .h 中的所有功能?

java - Vector 和 HashSet 之间巨大的性能差异

java.lang.IllegalStateException异常

Java write(str.getBytes()) 与 writeBytes(str)