2010-05-05 34 views
40

Несколько раз, когда я перезапустить приложение, которое строится на Java Struts Mysql и Jboss 4,05 Version я получаю сообщение об ошибке, как Адрес уже используется: JVM_BindАдрес уже используется: JVM_Bind Java

Только исправить, что я знаю, это перезапустить машину и повторить попытку, она будет работать. Else Несколько раз я делаю Ctrl-Alt-Del и останавливаю весь процесс, связанный с Java, иногда это тоже работает.

Но какова конкретная причина и как мы можем предотвратить эту проблему?

+0

Иногда собственности задерживается порт и прилипает к вашей программе Java даже после ее закрытия. Однако, с Eclipse Java EE, привязка порта удаляется в тот момент, когда вы, кроме своей программы – CodyBugstein

ответ

38

Адрес уже используется: JVM_Bind

означает, что некоторые другие приложения уже прослушивает порт текущее приложение пытается связать.

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

на Linux вы можете определить идентификатор приложения, используя,

netstat -tulpn 
+3

Как вы находите, что в WIndows я запускаю свое приложение в Windows – gmhk

+7

netstat работает и с окнами, на console try: netstat -an для получения дополнительной информации, http://en.wikipedia.org/wiki/Netstat – phoenix24

+1

еще один совет - не запускать серверы приложений на окнах. В противном случае это может также помочь не нажимать кнопку перезапуска - но вместо этого остановится, подождите 5 секунд, а затем снова запустите вручную. Иногда java-процессы просто требуют времени для закрытия. Например, если они заняты операцией db, они, как правило, продолжают вилять, пока эта операция не будет выполнена. – rompetroll

1

Быстрый ответ о том, как предотвратить его, заключается в том, что вам, скорее всего, необходимо остановить JBoss, прежде чем запускать его снова.

Вы должны иметь возможность вызвать кнопку «Завершить» в представлении «Консоль», чтобы завершить работу сервера.

+0

Я запускаю JBoss из Eclipse – gmhk

2

Возможно ли, что MySql прослушивания на тот же порт, как JBoss?

Есть ли номер порта приведены в сообщении об ошибке - что-то вроде Address already in use: JVM_Bind:8080

Вы можете изменить порт в JBoss server.xml, чтобы проверить это.

1

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

12

Я обычно прихожу через это, когда порт, который сервер (я использую JBoss) уже используется

Обычных подозреваемых

  1. Apache HTTP Server => выключить службу при работе в окнах.
  2. IIS => остановить МКС с помощью
  3. Skype => да я скайп присоединяясь к порту 80

Чтобы изменить порт, к которому JBoss 4.2.x связывает сам пойти:

"C: \ jboss4.2.2 \ server \ default \ deploy \ jboss-web.deployer \ server.XML»

здесь по умолчанию является экземпляром сервера изменения порта здесь:

< Разъем порта = "8080" адрес = "$ {jboss.bind.address}" >

в приведенном выше примере порт связан с 8080

+0

выключить скайп и запустить приложение Java, а затем запустить скайп. – signonsridhar

0

пожалуйста, попробуйте следующие варианты для виртуальной машины Java связывания Exce ption:

  1. запуск и остановка сервера. и проверять идентификаторы процессов сервера, а также убивать и останавливать сервер.
  2. Перейти к панели управления-> административный инструмент-> сервис-> проверить весь сервер и остановить все серверы, а затем запустить собственный сервер.
  3. изменить браузер, который используется. например, если использует IE, измените его на Mozilla firefox.
0

У меня была эта проблема. Для меня, я не мог начать/остановить Openfire (он сказал, что был остановлен, но все еще работает)

sudo /etc/init.d/openfire stop 
sudo /etc/init.d/openfire start 

Кроме того, перезапуск Apache не помогло

sudo /etc/init.d/apache2 restart 

Ошибки были внутри :

/opt/openfire/logs/stderror.log 
Error creating server listener on port 5269: Address already in use 
Error creating server listener on port 5222: Address already in use 

Способ, которым я исправил это, должен был фактически отключить сервер внутри области администратора для моего хоста.

1

Это может быть также вызвано двойным определением порта 8080 в .. \ кот \ конф \ server.xml:

<Connector port="8080" 
      enableLookups="false" redirectPort="8443" debug="0"/> 
<Connector port="8080" 
      enableLookups="false" address="127.0.0.1" maxParameterCount="30000"/> 
21

В окнах происходит этот сценарий, когда затмение происходит сбой без чистой остановки он будет иметь локальный сервер Jetty или Tomcat продолжает работать. Когда вы снова открываете Eclipse и пытаетесь запустить сервер снова, это приведет к использованию «Адреса, который уже используется: JVM_Bind»

Вы можете решить эту проблему, открыв диспетчер задач и найдите процесс javaw.exe и завершите его.

Затем вы можете перезапустить сервер на Eclipse.

enter image description here

0

У меня было то же самое на Windows. Мое решение состояло в том, чтобы получить порт, к которому хочет подключиться отладка. (В IntelliJ красный прямоугольник уже дает информацию: «Ошибка при запуске Tomcat: невозможно открыть порт отладчика (127.0.0.1:XXXXX): ... уже используется ...») Предположим, что XXXXX - это номер порта. Тогда я искал проблемы и PID в CMD окно:

netstat -ano | find "CLOSE_WAIT" | find ":XXXXX" 

Я получил номер PID в качестве последнего числа в строке результата.(Скажем, YYYY) Наконец:

TASKKILL /PID YYYY 

Дополнительная информация: WinSCP логаут тем временем, вероятно, это было причиной моей проблемы. :)

0

Это последнее случается со мной при включении JMX на двух работающих сервисах tomcat в Eclipse. Я ошибочно поместил один и тот же порт для каждого сервера.

Просто дайте каждому JMX удаленный другой порт

сервер 1

-Dcom.sun.management.jmxremote.port=9000 

SERVER 2

-Dcom.sun.management.jmxremote.port=9001 
Смежные вопросы