Запуск Tomcat, адрес 8080 уже используется

Настройка:

  • Amazon EC2
  • Tomcat (с безопасной пересылкой на 8443)
  • Apache 2.2

Я запускаю shutdown.sh, и я не получаю ошибок.

НО, когда я пытаюсь прогнать файл startup.sh, я получаю эту ошибку:

07-Nov-2011 17:40:40 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: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386/client:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/i386:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
07-Nov-2011 17:40:41 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:40:41 org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.net.BindException: Address already in use <null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)
        at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:176)
        at org.apache.catalina.connector.Connector.initialize(Connector.java:1022)
        at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
        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(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        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
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:336)
        at java.net.ServerSocket.bind(ServerSocket.java:336)
        at java.net.ServerSocket.<init>(ServerSocket.java:202)
        at java.net.ServerSocket.<init>(ServerSocket.java:158)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538)
        ... 12 more
07-Nov-2011 17:40:41 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 <null>:8080
        at org.apache.catalina.connector.Connector.initialize(Connector.java:1024)
        at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
        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(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:261)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
07-Nov-2011 17:40:41 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:40:41 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 615 ms
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardEngine start

INFO: Starting service Catalina
07-Nov-2011 17:40:41 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.33
07-Nov-2011 17:40:41 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml
07-Nov-2011 17:40:41 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
07-Nov-2011 17:40:41 org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive test.war
log4j:WARN No appenders could be found for logger (StackTrace).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:ERROR Error initializing log4j: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
java.lang.UnsupportedClassVersionError: grails/plugins/springsecurity/SecurityConfigType : Unsupported major.minor version 51.0 (unable to load class grails.plugins.springsecurity.SecurityConfigType)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at Config.class$(Config.groovy)
        at Config.$get$$class$grails$plugins$springsecurity$SecurityConfigType(Config.groovy)
        at Config.run(Config.groovy:116)
07-Nov-2011 17:40:43 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
07-Nov-2011 17:40:43 org.apache.catalina.core.StandardContext start
SEVERE: Context [/test] startup failed due to previous errors
07-Nov-2011 17:40:43 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/test] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive browser.war
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
07-Nov-2011 17:40:43 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
07-Nov-2011 17:40:43 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:40:43 org.apache.coyote.http11.Http11Protocol start
SEVERE: Error starting endpoint
java.net.BindException: Address already in use <null>:8080
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:549)
        at org.apache.tomcat.util.net.JIoEndpoint.start(JIoEndpoint.java:565)
        at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:203)
        at org.apache.catalina.connector.Connector.start(Connector.java:1095)
        at org.apache.catalina.core.StandardService.start(StandardService.java:540)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)

 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:336)
        at java.net.ServerSocket.bind(ServerSocket.java:336)
        at java.net.ServerSocket.<init>(ServerSocket.java:202)
        at java.net.ServerSocket.<init>(ServerSocket.java:158)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:50)
        at org.apache.tomcat.util.net.JIoEndpoint.init(JIoEndpoint.java:538)
        ... 12 more
07-Nov-2011 17:40:43 org.apache.catalina.core.StandardService start
SEVERE: Failed to start connector [Connector[HTTP/1.1-8080]]
LifecycleException:  service.getName(): "Catalina";  Protocol handler start failed: java.net.BindException: Address already in use <null>:8080
        at org.apache.catalina.connector.Connector.start(Connector.java:1102)
        at org.apache.catalina.core.StandardService.start(StandardService.java:540)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
07-Nov-2011 17:40:43 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:40:43 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
07-Nov-2011 17:40:43 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/120  config=null
07-Nov-2011 17:40:43 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2286 ms
07-Nov-2011 17:42:14 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:14 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:14 org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8443
07-Nov-2011 17:42:15 org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
07-Nov-2011 17:42:15 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:15 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
07-Nov-2011 17:42:15 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8443

Я пробовал такие команды, как netstat -aon | grep 8080 я пробовал ps -efl | grep java и убить этот процесс с помощью kill <pid> 9pkill java и так далее...

Это то, что netstat -aon

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       Timer
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      off (0.00/0/0)
tcp        0      0 10.226.122.156:22           109.58.56.15:49215          ESTABLISHED keepalive (5354.40/0/0)
tcp        0      0 :::80                       :::*                        LISTEN      off (0.00/0/0)
tcp        0      0 :::22                       :::*                        LISTEN      off (0.00/0/0)
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               off (0.00/0/0)
udp        0      0 10.226.122.156:123          0.0.0.0:*                               off (0.00/0/0)
udp        0      0 127.0.0.1:123               0.0.0.0:*                               off (0.00/0/0)
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               off (0.00/0/0)
udp        0      0 ::1:123                     :::*                                    off (0.00/0/0)
udp        0      0 fe80::1031:3cff:fe0:123     :::*                                    off (0.00/0/0)
udp        0      0 :::123                      :::*                                    off (0.00/0/0)
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     2337   @/tmp/fam-root-
unix  2      [ ACC ]     STREAM     LISTENING     409    @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    644    @/org/kernel/udev/udevd
unix  8      [ ]         DGRAM                    1513   /dev/log
unix  3      [ ]         STREAM     CONNECTED     38302
unix  3      [ ]         STREAM     CONNECTED     38301
unix  2      [ ]         DGRAM                    38297
unix  2      [ ]         DGRAM                    22149
unix  3      [ ]         STREAM     CONNECTED     2340   @/tmp/fam-root-
unix  3      [ ]         STREAM     CONNECTED     2339
unix  2      [ ]         DGRAM                    1998
unix  2      [ ]         DGRAM                    1918
unix  2      [ ]         DGRAM                    1895
unix  2      [ ]         DGRAM                    1819
unix  3      [ ]         DGRAM                    648
unix  3      [ ]         DGRAM                    647

Есть мысли или указатели?

12 ответов

У меня тоже была такая же проблема. Перепробовал все варианты, предложенные в этой теме. Но не помогло. Тогда просто побежал:

ps -awwef | grep tomcat

и нашел какой-то устаревший запущенный процесс. Я убил его, используя (-15 вместо -9)

sudo kill -15 <tomcat pid from previous command>

И вот! это сработало. Перезапущенный кот без проблем.

НИКОГДА не уничтожайте процесс с сигналом -9, потому что этот тип процесса удаления оставляет свои ресурсы в системе, которые могут быть удалены только после перезагрузки сервера. используйте только kill -9 только в крайнем случае. лучше использовать kill -15, так как для очистки ресурсов может потребоваться некоторое время, но вы всегда получите правильную очистку всего набора ресурсов, который потребляет этот процесс. так что, скорее всего, кот не работает, так как он оставил некоторые ресурсы в памяти. Итак, либо выполните перезагрузку, либо попробуйте найти следующее:

  • через команду lsof и выполните команду grep с помощью tomcat. он покажет вам все, что связано с котом

лсоф | греческий кот

  • поиск любого файла блокировки файлов в файловой системе, оставленного tomcat.
  • Также попробуйте выдать:

lsof -i TCP | grep 8080

Просто запустить lsof может быть недостаточно. Я предлагаю эту команду:

sudo lsof -i :8080

И тогда вы можете убить любой процесс, который удерживает порт (скорее всего, другой экземпляр tomcat).

Номер порта настраивается в $TOMCAT_HOME/conf/server.xml

Если порт 8080 используется, измените его в файле server.xml. Мой выглядит так в server.xml

<Connector port="8085" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

Просто для справки: я получил эту ошибку (как новичок), потому что я запустил Apache перед запуском Tomcat.

Если я остановил Apache, затем запустил Tomcat, а затем запустил Apache, ошибки исчезли.

Я также столкнулся с этой проблемой, но в моем случае я обновил свое приложение на моем сервере из приложения в моем локальном источнике. Я искал запущенные экземпляры tomcat разными методами, как показано выше, и убил их всех, после чего запустил несколько раз, но безрезультатно.

Причиной, по которой tomcat не закрывался и не запускался должным образом, была версия JDK источника приложения: я собрал его с JDK 1.8, но на моем сервере было 1.7. После перестройки моего приложения с использованием JDK 1.7 оно работало как на локальном, так и на серверном компьютере. Надеюсь, эта информация также помогает кому-то, как я.

После ввода netstat -aon найдите PID для порта 8080. Затем перейдите в диспетчер задач и найдите имя изображения для PID на вкладке процессов. щелкните правой кнопкой мыши на имени изображения и нажмите на конец процесса. Теперь, если вы запустите сервер, он будет работать.

Проблема в том, что tomcat не может быть корректно выключен. попробуйте добавить сон в сценарий перезапуска или просто подождите немного, прежде чем снова запустить tomcat.

Иногда сервлеты должны выполнить значительный объем работы, чтобы завершить работу, и в результате tomcat может также потребоваться некоторое время для завершения работы. Если вы немного подождете, прежде чем перезапускать сервер, проблема может исчезнуть. Если нет, то, возможно, веб-приложение может не отвечать на сигналы завершения от JVM, и в этом случае tomcat может некорректно завершить работу.

Короче говоря, попробуйте добавить сон в сценарий перезапуска или просто немного подождите, прежде чем снова вызывать start.

Лучшее решение - прекратить запуск экземпляра tomcat с помощью следующей команды:

kill $ (ps -aef | grep java | grep apache-tomcat-7.0.47 | awk '{print $ 2}')

Измените 7.0.47 на вашу версию Tomcat. Он работает нормально, и номер порта, т. Е. 8080, скоро выйдет.

ps -awwef | греческий кот

работал на меня

обнаружил какой-то устаревший процесс. Я убил его, используя (-15 вместо -9)

У меня была такая же проблема, и в течение нескольких часов я пробовал все решения, упомянутые выше, и не обнаружил ни одного процесса, использующего порт, и никаких запущенных экземпляров tomcat, и чистая машина также показывает эту проблему.

Но затем я обнаружил, что в server.xml есть повторяющаяся запись Connector для того же порта. Удаление этого устранило мою проблему.

Я столкнулся с подобной проблемой и обнаружил, что порт 8080 используется для какого-то другого приложения. используйте netstat commnad на windows и посмотрите все используемые порты.

изменить порт соединителя в файле server.xml. Вы можете найти этот файл в каталоге установки tomcat в папке conf. откройте этот файл, мой выглядит так:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

измените значение порта на какой-либо другой порт, предпочтительно в серии 80. надеюсь, что это работает.

Другие вопросы по тегам