Terry Kilshaw
Terry Kilshaw

Reputation: 41

Tomcat starts with java.net.BindException: Address already in use exception

Thanks in advance for any help!

I have reviewed ALL related posts on stackoverflow and none answer my problem.

Context:

Windows 10, Eclipse Neon.1 Release (4.6.1) with Tomcat support and Java 1. all of this running on a MacBook Pro running MacOS Sierra 10.12.1 in a Parallels Desktop 12 for Mac Pro Edition 12.1.0 virtual Windows 10.

When I start Eclipse everything is fine.

When I click the Eclipse Tomcat start button I get these exceptions:

16-Nov-2016 10:55:10 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.8.0_102;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\Private Shell;C:\PROGRA~2\COMMON~1\Odbc\FILEMA~1;C:\Users\terry.QUANTECH\AppData\Local\Microsoft\WindowsApps;;.
16-Nov-2016 10:55:10 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
16-Nov-2016 10:55:10 AM org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.net.BindException: Address already in use: JVM_Bind <null>:8080
  at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:563)
  at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:181)
  at org.apache.catalina.connector.Connector.initialize(Connector.java:1141)
  at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
  at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:843)
  at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
  at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
  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:261)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.net.BindException: Address already in use: JVM_Bind
  at java.net.PlainSocketImpl.socketBind(Native Method)
  at java.net.PlainSocketImpl.bind(Unknown Source)
  at java.net.ServerSocket.bind(Unknown Source)
  at java.net.ServerSocket.<init>(Unknown Source)
  at java.net.ServerSocket.<init>(Unknown Source)
  at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
  at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:552)
  ... 12 more
16-Nov-2016 10:55:10 AM org.apache.catalina.core.StandardService initialize
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]
LifecycleException:  Protocol handler initialization failed: java.net.BindException: Address already in use: JVM_Bind <null>:8080
  at org.apache.catalina.connector.Connector.initialize(Connector.java:1143)
  at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
  at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:843)
  at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
  at org.apache.catalina.startup.Catalina.load(Catalina.java:562)
  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:261)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
16-Nov-2016 10:55:11 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
16-Nov-2016 10:55:11 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 583 ms
16-Nov-2016 10:55:11 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
16-Nov-2016 10:55:11 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.45
16-Nov-2016 10:55:11 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor gomenu.xml
16-Nov-2016 10:55:11 AM org.apache.catalina.startup.HostConfig deployDescriptor
WARNING: A docBase C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\gomenu inside the host appBase has been specified, and will be ignored
16-Nov-2016 10:55:11 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor gps.xml
16-Nov-2016 10:55:11 AM org.apache.catalina.startup.HostConfig deployDescriptor
WARNING: A docBase C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\gps inside the host appBase has been specified, and will be ignored

etc.

I look for what is running on port 8080 using TCPView and see:

javaw.exe   1676    TCP TerryWin10onMac 8080    TerryWin10onMac 0   LISTENING                                       
javaw.exe   1676    TCPV6   terrywin10onmac.quantechsoftware.local  8080    terrywin10onmac.quantechsoftware.local  0   LISTENING                                       

So it is Java and presumably Tomcat that has grabbed port 8080 twice.

I stop Tomcat, close Eclipse and see that all references in TCPView to port 8080 disappear.

I start Eclipse. TCPView still shows no references to port 8080.

I start Tomcat and see that a whole bunch of things appear in TCPView, two of which refer to port 8009 and two to 8080:

javaw.exe 7076  TCP TerryWin10onMac 8005  TerryWin10onMac 0 LISTENING                   
javaw.exe 7076  TCP TerryWin10onMac 8009  TerryWin10onMac 0 LISTENING                   
javaw.exe 7076  TCPV6 terrywin10onmac.quantechsoftware.local  8009  terrywin10onmac.quantechsoftware.local  0 LISTENING                   
javaw.exe 7076  TCP TerryWin10onMac 8080  TerryWin10onMac 0 LISTENING                   
javaw.exe 7076  TCPV6 terrywin10onmac.quantechsoftware.local  8080  terrywin10onmac.quantechsoftware.local  0 LISTENING                   
javaw.exe 7076  TCP TerryWin10onMac 8443  TerryWin10onMac 0 LISTENING                   
javaw.exe 7076  TCPV6 terrywin10onmac.quantechsoftware.local  8443  terrywin10onmac.quantechsoftware.local  0 LISTENING                   

And, of course, all the same exceptions as before.

I have tried to kill one of the 8080 processes, but they both have the same process ID! In fact, all of the port listeners shown above have the same PID.

It is not an option for me to change the port.

Any help with this at all would be greatly appreciated.

Many thanks,

Terry Kilshaw

Upvotes: 3

Views: 3521

Answers (1)

Little Santi
Little Santi

Reputation: 8813

+1 for the detailed description of your research.

I recommend to you to review the <tomcat_home>\conf\server.xml file and check all the ports declared into. Maybe the 8080 is repeated.

And do the same checking in the Eclipse's Server configuration: See that no port numbers are repeated.

Upvotes: 1

Related Questions