2014-05-22 6 views
4

У меня возникла проблема с подключением к JMS на WildFly 8.0.0.Final.Ошибка подключения автономной программы Java к JMS на сервере WildFly

Я использую автономную программу Java, исходный код которой является точной копией HelloWorldJMSClient.java из образцов WildFly Quickstart.

Я следовал за provided instructions и добавил quickstartUser и сконфигурировал JMS.

С консоли администратора можно увидеть RemoteConnectionFactory

enter image description here

и создал тестовую очередь

enter image description here

я начинаю WildFly с автономной полной конфигурации

enter image description here

Сервер запускается и, казалось бы, успешно завершает все шаги, в том числе JMS (HornetQ) привязок:

C:\WildFly8\wildfly-8.0.0.Final\bin\standalone.bat -c standalone-full.xml 
Calling "C:\WildFly8\wildfly-8.0.0.Final\bin\standalone.conf.bat" 
Setting JAVA property to "C:\Program Files\Java\jdk1.8.0_05\bin\java" 
Detected server admin port: 9990 
Detected server http port: 8080 
=============================================================================== 

    JBoss Bootstrap Environment 

    JBOSS_HOME: "C:\WildFly8\wildfly-8.0.0.Final" 

    JAVA: "C:\Program Files\Java\jdk1.8.0_05\bin\java" 

    JAVA_OPTS: "-XX:+UseCompressedOops -Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MaxPermSize=256M -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman" 

=============================================================================== 

10:39:36,154 INFO [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final 
10:39:37,741 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.0.Final 
10:39:37,842 INFO [org.jboss.as] (MSC service thread 1-6) JBAS015899: WildFly 8.0.0.Final "WildFly" starting 
10:39:42,278 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http) 
10:39:42,328 INFO [org.xnio] (MSC service thread 1-5) XNIO version 3.2.0.Final 
10:39:42,337 INFO [org.xnio.nio] (MSC service thread 1-5) XNIO NIO Implementation Version 3.2.0.Final 
10:39:42,400 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 36) JBAS010280: Activating Infinispan subsystem. 
10:39:42,402 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 47) JBAS011800: Activating Naming Subsystem 
10:39:42,396 INFO [org.jboss.as.security] (ServerService Thread Pool -- 52) JBAS013171: Activating Security Subsystem 
10:39:42,428 INFO [org.jboss.as.jacorb] (ServerService Thread Pool -- 37) JBAS016300: Activating JacORB Subsystem 
10:39:42,454 INFO [org.jboss.as.webservices] (ServerService Thread Pool -- 56) JBAS015537: Activating WebServices Extension 
10:39:42,523 INFO [org.jboss.as.security] (MSC service thread 1-2) JBAS013170: Current PicketBox version=4.0.20.Final 
10:39:42,577 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 43) JBAS012615: Activated the following JSF Implementations: [main] 
10:39:42,661 INFO [org.jboss.as.naming] (MSC service thread 1-1) JBAS011802: Starting Naming Service 
10:39:42,666 INFO [org.jboss.as.mail.extension] (MSC service thread 1-1) JBAS015400: Bound mail session [java:jboss/mail/Default] 
10:39:42,776 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) JBAS017502: Undertow 1.0.0.Final starting 
10:39:42,776 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 55) JBAS017502: Undertow 1.0.0.Final starting 
10:39:42,819 INFO [org.jboss.as.connector.logging] (MSC service thread 1-1) JBAS010408: Starting JCA Subsystem (IronJacamar 1.1.3.Final) 
10:39:43,053 INFO [org.jboss.remoting] (MSC service thread 1-4) JBoss Remoting version 4.0.0.Final 
10:39:43,319 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 31) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3) 
10:39:43,355 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) JBAS010417: Started Driver service with driver-name = h2 
10:39:43,646 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 55) JBAS017527: Creating file handler for path C:\WildFly8\wildfly-8.0.0.Final/welcome-content 
10:39:43,707 INFO [org.wildfly.extension.undertow] (MSC service thread 1-8) JBAS017525: Started server default-server. 
10:39:43,715 INFO [org.wildfly.extension.undertow] (MSC service thread 1-8) JBAS017531: Host default-host starting 
10:39:43,874 INFO [org.wildfly.extension.undertow] (MSC service thread 1-5) JBAS017519: Undertow HTTP listener default listening on /127.0.0.1:8080 
10:39:44,130 WARN [org.jboss.as.messaging] (MSC service thread 1-4) JBAS011600: AIO wasn't located on this platform, it will fall back to using pure Java NIO. If your platform is Linux, install LibAIO to enable the AIO journal 
10:39:44,377 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-8) JBAS015012: Started FileSystemDeploymentService for directory C:\WildFly8\wildfly-8.0.0.Final\standalone\deployments 
10:39:44,581 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221000: live server is starting with configuration HornetQ Configuration (clustered=false,backup=false,sharedStore=true,journalDirectory=C:\WildFly8\wildfly-8.0.0.Final\standalone\data\messagingjournal,bindingsDirectory=C:\WildFly8\wildfly-8.0.0.Final\standalone\data\messagingbindings,largeMessagesDirectory=C:\WildFly8\wildfly-8.0.0.Final\standalone\data\messaginglargemessages,pagingDirectory=C:\WildFly8\wildfly-8.0.0.Final\standalone\data\messagingpaging) 
10:39:44,582 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221006: Waiting to obtain live lock 
10:39:44,729 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221013: Using NIO Journal 
10:39:44,748 WARN [jacorb.codeset] (MSC service thread 1-2) Warning - unknown codeset (Cp1252) - defaulting to ISO-8859-1 
10:39:45,033 INFO [io.netty.util.internal.PlatformDependent] (ServerService Thread Pool -- 58) Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system unstability. 
10:39:45,049 INFO [org.jboss.as.jacorb] (MSC service thread 1-2) JBAS016330: CORBA ORB Service started 
10:39:45,161 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221043: Adding protocol support CORE 
10:39:45,286 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221043: Adding protocol support AMQP 
10:39:45,299 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS] 
10:39:45,305 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221043: Adding protocol support STOMP 
10:39:45,391 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221034: Waiting to obtain live lock 
10:39:45,392 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221035: Live Server Obtained live lock 
10:39:45,472 INFO [org.jboss.as.jacorb] (MSC service thread 1-3) JBAS016328: CORBA Naming Service started 
10:39:45,890 INFO [org.jboss.ws.common.management] (MSC service thread 1-5) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.2.3.Final 
Connected to server 
10:39:45,958 INFO [org.jboss.messaging] (MSC service thread 1-4) JBAS011615: Registered HTTP upgrade for hornetq-remoting protocol handled by http-acceptor-throughput acceptor 
10:39:45,961 INFO [org.jboss.messaging] (MSC service thread 1-1) JBAS011615: Registered HTTP upgrade for hornetq-remoting protocol handled by http-acceptor acceptor 
10:39:46,254 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221007: Server is now live 
10:39:46,254 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221001: HornetQ Server version 2.4.1.Final (Fast Hornet, 124) [c42f74fe-ddcf-11e3-9d67-07b9140cdda2] 
10:39:46,272 INFO [org.hornetq.core.server] (ServerService Thread Pool -- 58) HQ221003: trying to deploy queue jms.queue.testQueue 
10:39:46,278 INFO [org.jboss.as.messaging] (ServerService Thread Pool -- 58) JBAS011601: Bound messaging object to jndi name queue/test 
10:39:46,279 INFO [org.jboss.as.messaging] (ServerService Thread Pool -- 58) JBAS011601: Bound messaging object to jndi name java:jboss/exported/jms/queue/test 
10:39:46,300 INFO [org.jboss.as.messaging] (ServerService Thread Pool -- 60) JBAS011601: Bound messaging object to jndi name java:/ConnectionFactory 
10:39:46,301 INFO [org.jboss.as.messaging] (ServerService Thread Pool -- 59) JBAS011601: Bound messaging object to jndi name java:jboss/exported/jms/RemoteConnectionFactory 
10:39:46,424 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-2) JBAS010406: Registered connection factory java:/JmsXA 
10:39:46,515 INFO [org.hornetq.ra] (MSC service thread 1-2) HornetQ resource adaptor started 
10:39:46,516 INFO [org.jboss.as.connector.services.resourceadapters.ResourceAdapterActivatorService$ResourceAdapterActivator] (MSC service thread 1-2) IJ020002: Deployed: file://RaActivatorhornetq-ra 
10:39:46,518 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-2) JBAS010401: Bound JCA ConnectionFactory [java:/JmsXA] 
10:39:46,518 INFO [org.jboss.as.messaging] (MSC service thread 1-8) JBAS011601: Bound messaging object to jndi name java:jboss/DefaultJMSConnectionFactory 
10:39:46,636 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management 
10:39:46,637 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990 
10:39:46,637 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.0.0.Final "WildFly" started in 12523ms - Started 216 of 264 services (90 services are lazy, passive or on-demand) 
10:40:35,457 INFO [org.jboss.ejb.client] (XNIO-1 task-3) JBoss EJB Client version 2.0.0.Final 

При запуске программы Java я получаю следующее сообщение об ошибке:

May 22, 2014 10:57:29 AM org.xnio.Xnio <clinit> 
INFO: XNIO version 3.2.0.Final 
May 22, 2014 10:57:29 AM org.xnio.nio.NioXnio <clinit> 
INFO: XNIO NIO Implementation Version 3.2.0.Final 
May 22, 2014 10:57:30 AM org.jboss.remoting3.EndpointImpl <clinit> 
INFO: JBoss Remoting version (unknown) 
May 22, 2014 10:57:30 AM HelloWorldJMSClient main 
INFO: Attempting to acquire connection factory "jms/RemoteConnectionFactory" 
May 22, 2014 10:57:35 AM HelloWorldJMSClient main 
SEVERE: Failed to connect to any server. Servers tried: [http-remoting://127.0.0.1:8080  
(Operation failed with status WAITING after 5000 MILLISECONDS)] 

Когда я бегу это под отладчиком, я вижу, что программа приобретает initial JNDI context, а затем сбрасывается с самого первого lookup.

Так что, похоже, что программа, ожидающая сервер на //127.0.0.1:8080, не видит сервер, работающий на этом самом URL-адресе.

Я попытался изменить URL-адрес на //localhost:8080, но это не имело никакого значения.

Вполне возможно, что у меня есть глупая опечатка где-то, чего я просто не могу заметить.

В любом случае, как я могу продолжить устранение этой ситуации?

РАЗЪЯСНЕНИЕ (0523/14):

Когда я открываю localhost:8080 в моем браузере я получаю страницу приветствия WildFly в. Затем я могу войти в панель управления. Таким образом были получены первые два снимка экрана.

С netstat при работающем сервере:

TCP 127.0.0.1:8080   0.0.0.0:0    LISTENING 

Этот результат тот же начать ли я сервер из командной строки или из IntellJ IDEA.

СЕТЬ TRAFFIC

Я считаю, что это соответствующая часть:

enter image description here

Link to a better view.

UPDATE (05/28/2014)

Как это был направлен на меня Wildfly's Forum следующая строка из журнала (как я своего рода подозревала) должен был поднят красный флаг:

May 22, 2014 10:57:30 AM org.jboss.remoting3.EndpointImpl
INFO: JBoss Remoting version (unknown)

Другой бит информации (не уверен, является ли это отношение), я использую следующую баночку вручную разрешения зависимостей:

enter image description here

+1

Проверка с помощью NetStat что-то на самом деле слушает на localhost: 8080. Посмотрите на свои журналы wildfly fr любых соответствующих сообщений. Проверьте, что порт открыт. – Iain

+0

@Iain - Является ли тот факт, что когда я открываю 'licalhost: 8080' в моем браузере, он вызывает страницу приветствия WildFly, достаточно доказательство того, что сервер фактически активен на этом порту? –

+0

@ PM77-1 Да, это так. Упомяните, что в вашем q. –

ответ

4

Согласен с @Iain. netstat -nab будет перечислять все порты и процесс их владельца. Если 127.0.0.1:8080 или 0.0.0.0:8080 указано как LISTENING, я бы, вероятно, запустил Wireshark и понюхал 8080 tcp, чтобы убедиться, что ваш процесс wildfly фактически отвечает. Похоже, вы ищете базовые материалы для http, которые в основном расшифровываются для вас.

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

Вещи, чтобы проверить TCP/HTTP диагностики установки соединения:

  1. Сервер не ненавидит только своего клиента. Используя альтернативный компьютер и известный рабочий клиент (или клиент, который несколько похож), подключитесь к серверу. Аналогичным клиентом может быть браузер или netcat/telnet. Если это работает, ваш клиент поврежден, или ваш сервер специально отклоняет ваш клиентский тест.
  2. Сервер прослушивает. выигрыш: netstat -nab, много * nix: netstat -nlp. Ищите строку IP: Port LISTENING для вашего серверного процесса. Возможно, что-то еще украло ваш порт для прослушивания, или он находится в TIMEWAIT, потому что ваш разбитый сервер никогда не закрывал его.
  3. Сервер получает запрос на входящий запрос. На стороне сервера окна: wirehark, nix: wireshark/tcpdump -i <interface> 'port <listenport>'. Ищите входящий пакет SYN от клиента на вашем порту прослушивания и ответ сервера. Никакие входящие пакеты не блокируются сетевой конфигурацией или брандмауэром и т. Д., Что делает ее проблемой отладки сети. Исходящий пакет обычно означает, что сервер поврежден или неправильно сконфигурирован.
  4. Клиент получает ответ сервера. После подтверждения, что сервер завершает соединение tcp, но клиентская команда не приходит от клиента, убедитесь, что клиентская машина получает пакеты, используя примерно такую ​​же процедуру. Если он не получает пакеты, отправленные сервером, это проблема сетевой отладки. Если это так, ваш клиент нарушается.
  5. Сервер завершает ответ протокола. Клиент отправляет полный запрос, например «GET/HTTP/1.1 \ r \ n \ r \ n», сервер отвечает «HTTP/1.1 200 OK».
    • Сервер может ответить на двоичный код подтверждения, если ваш клиент не ожидает его, например, если вы забыли SSL на своем клиенте; это довольно распространенная ошибка. Протокол SSL-протокола обычно включает сброс ключей на клиенте или сервере и их копирование в wirehark. На этом этапе я обычно запускаю gdb/jdb/dtrace и выгружаю строки перед входом ssl write и после возврата из ssl read. Это работает, потому что соединение уже установлено и надежно, поэтому, если он не делает забавные вещи и не умирает, оставляйте сетевой анализ позади и начинайте обычную процедуру отладки.

Простые вещи, чтобы попробовать, когда вы озадачены или вы потратили час, без прогресса:

  1. Вы читали инструкцию? Лучше поздно, чем никогда.
  2. Измените порт прослушивания сервера. Что-то в диапазоне 10k-12k вряд ли противоречит чему-либо.
  3. Уменьшить потоки/процессы, настраиваемые пользователем и сервером, до минимума, чтобы воспроизвести ошибку. Если ошибка исчезнет, ​​вам придется что-то искать. Если это не так, намного легче отлаживать, когда меньше меньше контекстов потоков для переключения между отладчиком.
  4. Получил контракт на поддержку? Спросите продавца. Опишите диагностику, которую вы делали, обычно пропуская материал, который работал до одного или двух, прежде чем не дать им какой-либо контекст. Так же, как задать вопрос Stackexchange, вы платите только им. Если они не обеспечивают своевременную поддержку, проверьте, есть ли лучшие варианты в той же ценовой точке и переоцените потребности вашего бизнеса; отличное программное обеспечение, с которым вы не можете работать, значительно менее полезно и ценно, чем дерьмовое программное обеспечение, которое работает сейчас.
+0

Большое спасибо за подробный ответ. Это не прод. Все на моем ноутбуке. Меня действительно раздражает тот факт, что он работал для многих других людей, которые следовали, казалось бы, тем же инструкциям. 'WildFly' является ребрендированным названием' JBoss Community Edition', и это бесплатно. –

+0

@ PM77-1 Я не хотел вас вызывать, я мог бы сказать по вашему q. что это не prod, но обычно у меня есть отказ от ответственности в моих ответах как SOP на S.F. потому что некоторые люди ... –

+0

'Wireshark' не дружит с' localhost'. Я загрузил «RawCap», и теперь я вижу его результаты в «WireShark». Есть ли способ лучше? Вывод довольно большой. Должен ли я фильтровать HTTP-трафик? –

0

Изменение имен JNDI в консоли администрирования Wildfly к этим:

JMS/RemoteConnectionFactory (для подключения завода) JMS/очередью/тест (для очереди)

Смежные вопросы