Проблемы с выключением JBoss в Eclipse, если я меняю порт JNDI - PullRequest
7 голосов
/ 06 октября 2008

1-я фаза

У меня проблема с завершением работы моего экземпляра JBoss в Eclipse, так как я изменился порт JNDI JBoss. Конечно, я могу выключить его из консоли, но не с кнопка остановки (она по-прежнему ищет порт JNDI по умолчанию порт 1099). я ищу жду любых решений. Спасибо!

Используемая среда:

  • JBoss 4.0.2 (используется по умолчанию )
  • Eclipse 3.4.0. (с использованием JBoss Tools 2.1.1.GA)

Порты по умолчанию: 1098, 1099 Измененные порты: 11098, 11099

Я изменил следующую часть в jbosspath / server / default / conf / jboss-service.xml:

   <!-- ==================================================================== -->
   <!-- JNDI                                                                 -->
   <!-- ==================================================================== -->

   <mbean code="org.jboss.naming.NamingService"
      name="jboss:service=Naming"
      xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
      <!-- The call by value mode. true if all lookups are unmarshalled using
      the caller's TCL, false if in VM lookups return the value by reference.
      -->
      <attribute name="CallByValue">false</attribute>
      <!-- The listening port for the bootstrap JNP service. Set this to -1
        to run the NamingService without the JNP invoker listening port.
      -->
      <attribute name="Port">11099</attribute>
      <!-- The bootstrap JNP server bind address. This also sets the default
      RMI service bind address. Empty == all addresses
       -->
      <attribute name="BindAddress">${jboss.bind.address}</attribute>
      <!-- The port of the RMI naming service, 0 == anonymous -->
      <attribute name="RmiPort">11098</attribute>
      <!-- The RMI service bind address. Empty == all addresses
       -->
      <attribute name="RmiBindAddress">${jboss.bind.address}</attribute>
      <!-- The thread pool service used to control the bootstrap lookups -->
      <depends optional-attribute-name="LookupPool"
         proxy-type="attribute">jboss.system:service=ThreadPool</depends>
   </mbean>

   <mbean code="org.jboss.naming.JNDIView"
        name="jboss:service=JNDIView"
        xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml">
   </mbean>

Настройка Eclipse:

image

О моих настройках JBoss Tools: У меня была предыдущая версия, я получил эту проблему, я читал о некотором исправлении в JbossTools, поэтому обновил до 2.1.1.GA. Теперь кнопки изменились, и у меня появилось новое представление настроек, но я ничего не могу изменить ... тоже кажется ненормальным:

image

Диалог ошибки:

image

Трассировка стека:

javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]]
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1385)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:579)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
    at javax.naming.InitialContext.lookup(InitialContext.java:347)
    at org.jboss.Shutdown.main(Shutdown.java:202)
Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:254)
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1370)
    ... 4 more
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:228)
    ... 5 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
    at java.net.Socket.connect(Socket.java:452)
    at java.net.Socket.connect(Socket.java:402)
    at java.net.Socket.<init>(Socket.java:309)
    at java.net.Socket.<init>(Socket.java:211)
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:69)
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:62)
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:224)
    ... 5 more
Exception in thread "main" 

2-я фаза:

После создания нового Сервера в File / new / other / server он появился на вкладке настроек. Теперь кнопка останова работает (сервер получает сообщения о выключении без какой-либо дополнительной модификации порта jndi - для этого сейчас нет возможности), но он по-прежнему выдает сообщение об ошибке, хотя и другое, но без исключения отслеживает стек: Не удалось остановить сервер JBoss 4.0. "

Ответы [ 7 ]

3 голосов
/ 03 октября 2009

Вот подробное решение этой проблемы: Соединитель сервера Eclipse WTP не отключит JBoss, когда будет переназначен порт jndi.

Это потому, что профили соединителей сервера по умолчанию не используют свой псевдоним для jndiPort. Эта проблема также обсуждается на eclipse.org: http://www.eclipse.org/forums/index.php?t=msg&goto=489439&S=0db4920aab0a501c80a626edff84c17d#msg_489439

Решение приходит из файлов .serverdef в eclipse:


<eclipse>\plugins\org.eclipse.jst.server.generic.jboss_1.5.105.v200709061325\servers\jboss*.serverdef

Они объявляют свойство xml для порта jndi:


<property id="jndiPort"
 label="%jndiPort"
 type="string"
 context="server"
 default="1099" /> 

Это просто необходимо использовать, если для serverdef задана команда STOP:

Итак, это:


 <stop>
  <mainClass>org.jboss.Shutdown</mainClass>
  <workingDirectory>${serverRootDirectory}/bin</workingDirectory>
  <programArguments>-S</programArguments>
  <vmParameters></vmParameters>
  <classpathReference>jboss</classpathReference>
 </stop>

становится таким:


 <stop>
  <mainClass>org.jboss.Shutdown</mainClass>
  <workingDirectory>${serverRootDirectory}/bin</workingDirectory>
  <programArguments>-s jnp://${serverAddress}:${jndiPort}</programArguments>
  <vmParameters></vmParameters>
  <classpathReference>jboss</classpathReference>
 </stop>

Философия этого может быть проверена путем сравнения с определением для соединения jndi:


 <jndiConnection>
  <providerUrl>jnp://${serverAddress}:${jndiPort}</providerUrl>
<initialContextFactory>org.jnp.interfaces.NamingContextFactory</initialContextFactory>
  <jndiProperty>
   <name></name>
   <value></value>
  </jndiProperty>
 </jndiConnection>

Автор вдохновения для этого общего случая решает: Moisa Laurentiu Florin. Именно их вклад заставил меня искать способ замены в $ {jndiPort} вместо жестко закодированного значения.

Это исправление исправляет оба соединителя сервера Eclipse WTP. Я все еще исследую разъем JBOss IDE

3 голосов
/ 24 января 2011

Открыть путь jboss \ bin \ shutdown.jar

пример: jboss-4.2.3.GA \ bin \ shutdown.jar

и откройте jboss-путь \ bin \ shutdown.jar \ jndi.properties

и изменить

java.naming.provider.url = jnp: // localhost: 1099 до java.naming.provider.url = jnp: // localhost: 11099

1 голос
/ 06 октября 2008

ОК, что вам нужно сделать, это Файл-> Новый-> Другой-> Сервер и настроить свой сервер JBoss там. Затем он появится в Предпочтения-> JBossTools-> Серверы.

баллонный.

0 голосов
/ 11 июня 2010

Это было изменено в JBoss 6.0.0M3.

Команда останова теперь:

"- s служба: jmx: rmi: /// jndi / rmi: // localhost: 1090 / jmxrmi"

Обратите внимание, что порт также изменился: Это уже не порт JNDI с номером 1099 , а порт RMI / JMX 1090 . Итак, вам понадобится другой параметр конфигурации в определении сервера.

Я не знаю, нужен ли вообще параметр "JNDI port" для серверов JBoss 6.0.0M3.

У меня есть измененный плагин eclipse по адресу http://www.cs.hs -rm.de / ~ knauf / public / , который содержит определение сервера для 6.0.0M3, включая это изменение. Этот сайт также ссылается на ветку форума JBoss с более подробной информацией об этом изменении.

С уважением

Вольфганг Кнауф

0 голосов
/ 17 мая 2009

Используйте серверный адаптер, предоставляемый инструментами JBoss, а не тот, который поставляется по умолчанию из Eclipse WTP.

Затем вы можете просто дважды щелкнуть по серверу и отредактировать порт JNDI (который, кстати, автоматически выбирается из конфигурации XML, если вы ничего не делаете). Вы также можете выполнить настройку порта JNDI с помощью аргументов командной строки в конфигурации запуска, но это более сложная задача, чем просто установка значений порта.

0 голосов
/ 24 апреля 2009

Вы должны изменить в файле "/home/fmoisa/workspace/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.5.206.v20090115/servers/jboss42.serverdef" это:

org.jboss.Shutdown $ {ServerRootDirectory} / бен -S -Djboss.boot.loader.name = shutdown.bat jboss.shutdown

к этому:

org.jboss.Shutdown $ {ServerRootDirectory} / бен -S -sjnp: // localhost: 11099 -Djboss.boot.loader.name = shutdown.bat jboss.shutdown

gl all;)

0 голосов
/ 06 октября 2008

В конфигурации сервера MyEclipse вы найдете поле «Необязательный аргумент выключения», которое заполнено значением по умолчанию

--shutdown

Измените его на

-s jnp://localhost:11099 --shutdown

Отредактировано:

Извините, этот ответ относится к MyEclipse. Однако должно быть место, где вы можете указать команду выключения JBoss и в вашей среде. Может быть, вы посмотрите на конфигурации "Run ..."?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...