我在不同的目录D和E中有2个Tomcat服务器。我想同时启动这些服务器。
我做了什么:
第一种方法:
1)通过阅读各种网站,我发现我改变了tomcat的端口号。
2)在我的Catalina_Home文件夹中,我的路径值为CATALINA_HOME = D:\ tomcat \ apache-tomcat-7.0.70。
当我从驱动器E启动Tomcat时,我在驱动器E的Tomcat中出现错误
INFO: Server startup in 105794 ms
Aug 22, 2016 10:37:29 AM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[localhost:8005]:
java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:444)
at org.apache.catalina.startup.Catalina.await(Catalina.java:781)
at org.apache.catalina.startup.Catalina.start(Catalina.java:727)
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.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
Aug 22, 2016 10:37:29 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-apr-8080"]
Aug 22, 2016 10:37:29 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-apr-8009"]
Aug 22, 2016 10:37:29 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Aug 22, 2016 10:37:29 AM org.apache.catalina.loader.WebappClassLoaderBase clear ReferencesThreads
SEVERE: The web application [/Subs_Engine] appears to have started a thread name
d [Abandoned connection cleanup thread] but has failed to stop it. This is very
likely to create a memory
第二种方法:
如上所述,我在cmdPrompt中为E Drive中定义的tomcat尝试了以下内容
第三种方法:
a)我已验证的端口号。它们在服务器的每个目录中都不同。
b)我已经打开了startup.bat并用CATALINA_HOME_E替换了CATALINA_HOME。
c)我已将系统和用户定义的环境变量中的CATALINA_HOME_E设置为E:\ apache-tomcat-7.0.70。
在系统变量中,我添加的路径变量是%CATALINA_HOME_E%\ lib;
现在tomcat开始了,但我收到了错误:
INFO: Server startup in 105794 ms
Aug 22, 2016 10:37:29 AM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[localhost:8005]:
java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:444)
at org.apache.catalina.startup.Catalina.await(Catalina.java:781)
at org.apache.catalina.startup.Catalina.start(Catalina.java:727)
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.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
我看到这个错误的原因是我从E盘开始的Tomcat是从D盘开始的。 我看到我运行Tomcat的端口,使用&gt; netstat -ano |找到“:7080”,这是7080的http:
我没有找到任何正在运行的东西。 所以,我已经错误地配置了路径设置。
我是否正确地采用这种方法?
任何人都可以指导我为什么要纠正这个问题?
答案 0 :(得分:2)
以下是您应该尝试的内容
a)为两个tomcat实例设置不同的端口。这是通过编辑server.xml并确保没有端口冲突来完成的。在端口选择中确保没有“其他”应用程序正在侦听(不同的应用程序允许在8085上监听 - 例如非tomcat)
b)不要为startServer.bat设置全局路径,也不要在命令行或用户配置文件中同时使用startServer.bat。每次在命令行上启动startServer时,都要确保在那里设置路径。既然你提到D和E,我就假设这里有窗户。
在命令行上
a)cd ... b)SET CATALINA_HOME = D:... \ TomcatOnD \ c)SET PATH =%PATH%; D:... \ TomcatOnD \ bin d)startServer.bat
做同样的事情,在E:\
上使用不同的tomcat路径查看服务器是否启动。希望他们应该:)
答案 1 :(得分:2)
你需要做的是
我将按原样离开第一个tomcat,D: 我们要改变的是E:
1-为安装在E上的tomcat打开conf / server.xml:
找到名为Connector
的端口配置元素(标记)将端口更改为任何未使用的端口,例如ex 9090
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
确保D:上的那个也不使用相同的端口。
2-打开E:上安装的服务器的bin / startup.bat,并将所有CATALINA_HOME
替换为CATALINA_HOME_E
,如果需要,可以使用不同的名称。
3-添加新的系统环境密钥CATALINA_HOME_E
,使其指向E:\apache-tomcat-7.0.70\bin
现在您可以使用E:\apache-tomcat-7.0.70\bin
和D:\apache-tomcat-7.0.70\bin
上的startup.bat文件启动这两个服务器
请不要将E:\ apache-tomcat-7.0.70 \ bin或D:\ apache-tomcat-7.0.70 \ bin添加到PATH ,如果这样做,您在cmd中键入启动它可能会启动相同的实例两次。而是导航到该文件夹并启动bat文件
如果您需要添加到PATH
,则需要重命名启动文件,因此它们会像这样结束
startupd.bat
和startupe.bat
因此,使用命令启动服务器时不会发生混音。
修改强>
根据您对此方法的反馈
tomcat使用连接-i认为它用于某些内部信令和通信,可能是将关机信号发送到服务器?!
默认情况下位于端口8005
上
你需要在E:tomcat上设置一个新端口,它位于server.xml conf文件中
标记SERVER
<Server port="8005" shutdown="SHUTDOWN"
设置了一个新端口,可能是8006
答案 2 :(得分:1)
检查配置文件server.xml
在中定义的端口
<Connector connectionTimeout="20000" port="9090" protocol="HTTP/1.1" redirectPort="8443"/>
和
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/>
对于每个tomcat实例应该是不同的。