【问题标题】:WAR file placed in another tomcat server is deployed on running startup.bat for another tomcat server放置在另一个 tomcat 服务器中的 WAR 文件部署在为另一个 tomcat 服务器运行 startup.bat 时
【发布时间】:2021-07-13 07:24:29
【问题描述】:

我有两个 tomcat 服务器,一个在端口 P1 上运行,另一个在 P2 上。现在发生的奇怪事情是,当我为 server2 运行 startup.bat 时,部署了 server1 的 war 文件,我可以运行 server1 的 webapps 文件夹中的应用程序。并且永远不会部署 server2 中存在的 WAR。此外,当我为 server1 运行 startup.bat 然后为 server2 运行 shutdown.bat 时,server1 进程关闭,反之亦然。不知何故,server2 已连接到 server1。我不知道这样的事情怎么可能发生。任何帮助表示赞赏。

在为 server2 运行 startup.bat 时,我得到以下日志

19-Apr-2021 05:10:09.035 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version [1.1.27] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
19-Apr-2021 05:10:09.067 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version [1.1.27] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/8.5.57
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 30 2020 21:49:10 UTC
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.57.0
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jre1.8.0_202
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_202-b08
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-8.5.57
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-8.5.57
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\apache-tomcat-8.5.57\conf\logging.properties
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
19-Apr-2021 05:10:09.113 INFO [main] 
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\apache-tomcat-8.5.57
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\apache-tomcat-8.5.57
19-Apr-2021 05:10:09.113 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\apache-tomcat-8.5.57\temp
19-Apr-2021 05:10:09.113 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version [1.1.27] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
19-Apr-2021 05:10:09.254 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version [1.1.27] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
19-Apr-2021 05:10:09.254 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
19-Apr-2021 05:10:09.348 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
19-Apr-2021 05:10:09.363 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 611 ms
19-Apr-2021 05:10:09.395 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
19-Apr-2021 05:10:09.395 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.57
19-Apr-2021 05:10:09.425 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [C:\apache-tomcat-8.5.57\webapps\Server1.war]
19-Apr-2021 05:10:13.567 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

Server2 tomcat的路径是这样的

C:\tomcat2\apache-tomcat-7.0.37

Server1 的路径是这样的

C:\apache-tomcat-8.5.57

也就是说两台tomcat服务器的版本不同。

另外,当我启动 server1 然后我尝试启动 server2 时,我收到以下错误。先启动 server2 再尝试启动 server1 时收到同样的错误

19-Apr-2021 03:52:05.348 SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]
        org.apache.catalina.LifecycleException: Protocol handler initialization failed
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:1077)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:848)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472)
        Caused by: java.net.BindException: Address already in use: bind
                at sun.nio.ch.Net.bind0(Native Method)
                at sun.nio.ch.Net.bind(Unknown Source)
                at sun.nio.ch.Net.bind(Unknown Source)
                at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
                at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
                at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:221)
                at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1118)
                at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:222)
                at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:587)
                at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:1075)

【问题讨论】:

  • 请为您的问题添加一些详细信息:从cmd 运行startup.bat 并将Using ...: ... 行复制/粘贴到您的问题中。请edit您的问题,而不是将它们发布为 cmets。
  • 如果需要任何其他信息,请告诉我@PiotrP.Karwasz
  • 如您所见,server2 的 CATALINA_HOMECATALINA_BASE 均设置为 C:\apache-tomcat-8.5.57。检查这些值是否未在您的 Windows 系统中全局设置(参见this question)。如果是,请将它们删除,以便startup.bat 可以应用其启发式方法在每个服务器上正确设置它们。
  • 非常感谢您的帮助。请将此作为答案发布,以便我接受它作为正确答案。

标签: tomcat


【解决方案1】:

您的日志显示CATALINA_HOMECATALINA_BASE 都设置为C:\apache-tomcat-8.5.57。检查这些环境变量是否未在您的 Windows 系统中全局设置并删除。

Tomcat 安装中的*.bat 脚本使用一些启发式方法(基于*.bat 文件的位置)来设置这些变量。但是,只有当它们未设置时才会发生这种情况。

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 2018-07-25
    • 2018-10-24
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多