У меня есть проект, который создается как военный файл и развертывается на сервере 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 - есть ли там документация?
Благодаря
Похоже, что я получаю такое же исключение, если я это сделаю. Есть ли другая строка, которую я должен передать для фабричного класса в этом случае? И если да, есть ли там документация? – joelt
Вам не нужно передавать завод. Просто создайте новый 'InitialContext()' без каких-либо параметров изнутри вашего сервлет-кода. Контейнер JBoss возвращает «Контекст», который затем можно использовать для поиска вашей очереди JMS. –
Да, я вообще не пытаюсь использовать объект свойства, и я получал то же исключение – joelt