我在服务器上运行了两个tomcats
一个Tomcat 7,另一个是tomcat 8,第一个配置文件server.xml是:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
在第二个tomcat中有:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
但是当我运行第一个tomcat时,控制台会说
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:420)
at org.apache.catalina.startup.Catalina.await(Catalina.java:713)
at org.apache.catalina.startup.Catalina.start(Catalina.java:659)
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:351)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
但是第二次运行良好,我使用命令netstate -tnao并且我验证了端口是免费的
答案 0 :(得分:1)
您需要为tomcat实例提供不同的端口,包括但不限于连接器端口,ajp端口,关闭端口。一旦你有了这个错误就会消失。
但是,最好使用相同的tomcat二进制文件来使用CATALINA_BASE变量来运行多个tomcat实例。更多详细信息请参见下面的链接。请参阅有关运行多个实例的部分。另请注意,同样的RUNNING.txt文件也会出现在tomcat二进制文件中,您也可以在那里查看。
http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt
答案 1 :(得分:0)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
8080是服务器将运行的端口号。只运行一个服务器(您将首先启动)。其他人会抛出Jvm Bind Exception。
因此,请更改端口号,使其唯一。
您运行第一台服务器,然后使用netstat
命令查看正在使用的端口。