2015-06-09 5 views
0

У меня есть проект, который создается как военный файл и развертывается на сервере JBOSS. Файл автономного полно-ha.xml-сервера JBOSS настроен на создание нескольких очередей. Файл войны использует Spring для регистрации класса для прослушивания этих очередей и обработки полученных сообщений. Приложение, которое обычно помещает сообщения в очередь, записывается другим поставщиком; У меня нет видимости того, что такое код. Тем не менее, мне нужно иметь возможность добавлять сообщения в очередь в моей среде для тестирования.Добавление элемента в очередь HornetQ из сервлета

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

13:54:12,211 ERROR [stderr] (http-/0.0.0.0:8080-1) javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeExcept 
ion: Operation failed with status WAITING] 
13:54:12,211 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36) 
13:54:12,211 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121 
) 
13:54:12,211 ERROR [stderr] (http-/0.0.0.0:8080-1)  at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at javax.naming.InitialContext.init(InitialContext.java:242) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at javax.naming.InitialContext.<init>(InitialContext.java:216) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at com.me.me.servlets.SingleFileImportServlet.doGet(SingleFileImportServlet.java:75) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 
13:54:12,226 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 
13:54:12,242 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.event(JBossWebContext.ja 
va:67) 
13:54:12,242 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.invoke(JBossWebContext.j 
ava:48) 
13:54:12,242 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java 
:169) 
13:54:12,242 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) 
13:54:12,242 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
13:54:12,242 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at java.lang.Thread.run(Thread.java:745) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1) Caused by: java.lang.RuntimeException: Operation failed with status WAITING 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:89) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFacto 
ry.java:166) 
13:54:12,257 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.jav 
a:139) 
13:54:12,273 ERROR [stderr] (http-/0.0.0.0:8080-1)  at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104 
) 
13:54:12,273 ERROR [stderr] (http-/0.0.0.0:8080-1)  ... 22 more 

Это код до и до линии 75 (ссылка в трассировке стека). Он заимствован из предыдущего теста, поэтому у меня есть причина полагать, что он должен работать.

Properties properties = new Properties(); 
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 

properties.put(Context.PROVIDER_URL, "remote://127.0.0.1:4447"); 
properties.put(Context.SECURITY_PRINCIPAL, "user"); 
properties.put(Context.SECURITY_CREDENTIALS, "pwd"); 

ConnectionFactory connectionFactory = null; 
Destination destination = null; 

try { 
    Context context = new InitialContext(properties); 

Так несколько вопросов: 1) Можете ли вы увидеть что-нибудь, что мне нужно делать по-другому в этом сервлет для подключения к очереди? 2) Имеется ли документация для действительных других значений, где у меня есть «remote: //»? 3) Предположительно, порт, в котором у меня есть 4447, должен соответствовать чему-то в конфигурации JBOSS - есть ли там документация?

Благодаря

ответ

1

Завод, URL и безопасности принципы передается в InitialContext требуется только при выполнении JNDI поиск со стороны сервера.

Если война, содержащая ваш тестовый сервлет, развернута на том же сервере, на котором настроены очереди, вы должны просто создать экземпляр нового InitialContext() без каких-либо свойств для выполнения поиска по локальному экземпляру JDNI.

try { 
    Context context = new InitialContext(); 
+0

Похоже, что я получаю такое же исключение, если я это сделаю. Есть ли другая строка, которую я должен передать для фабричного класса в этом случае? И если да, есть ли там документация? – joelt

+0

Вам не нужно передавать завод. Просто создайте новый 'InitialContext()' без каких-либо параметров изнутри вашего сервлет-кода. Контейнер JBoss возвращает «Контекст», который затем можно использовать для поиска вашей очереди JMS. –

+0

Да, я вообще не пытаюсь использовать объект свойства, и я получал то же исключение – joelt

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

  • Нет связанных вопросов^_^