问题描述
我正在关注本文档,以使用RabbitMQ为Wildfly 10配置JNDI
https://www.rabbitmq.com/jms-client.html
我使用JNDI的原因是我的应用程序与任何JMS Provider的库都没有依赖关系。这意味着,在我的应用程序中,我以后仅将javax.jms-api-2.0.jar与RabbitMQ或ActiveMQ集成。
这是我在Wildfly standalone.xml文件中的配置。
<object-factory name="java:global/jms/ConnectionFactory1" module="com.rabbitmq.jms"
class="com.rabbitmq.jms.admin.RMQObjectFactory">
<environment>
<property name="className" value="javax.jms.ConnectionFactory"/>
<property name="virtualHost" value="/"/>
<property name="host" value="rabbitmq_server"/>
<property name="port" value="5672"/>
</environment>
</object-factory>
这是集成的源代码。
Context context = new InitialContext();
ConnectionFactory connectionFactory
= (ConnectionFactory) context.lookup("java:global/jms/ConnectionFactory1");
if (connectionFactory == null) {
System.out.println("Cannot initiallize connection factory.");
return;
}
Connection connection = connectionFactory.createConnection(
"guest","guest");
if (connection == null) {
System.out.println("Initiallize connection Failed.");
return;
}
Session session = connection.createSession(false,QueueSession.AUTO_ACKNowLEDGE);
if (session == null) {
System.out.println("Initiallize session Failed.");
return;
}
我的问题是: 在这种配置下,
- 如果我将值设置为IP地址=>就可以了
- 如果我将值设置为主机名(已经在我的主机文件中映射了IP地址)=>它将始终创建与本地主机的连接。
以前有人遇到过这个问题吗?
12:00:12,318 ERROR [stderr] (default task-15) com.rabbitmq.jms.util.RMQJMSException: RabbitMQ connection was refused. RabbitMQ broker may not be available.
12:00:12,319 ERROR [stderr] (default task-15) at com.rabbitmq.jms.admin.RMQConnectionFactory.instantiateNodeConnection(RMQConnectionFactory.java:170)
12:00:12,319 ERROR [stderr] (default task-15) at com.rabbitmq.jms.admin.RMQConnectionFactory.createConnection(RMQConnectionFactory.java:117)
12:00:12,319 ERROR [stderr] (default task-15) at com.mypackage.web.servlet.WhiteListRegistration.test(WhiteListRegistration.java:68)
12:00:12,320 ERROR [stderr] (default task-15) at com.mypackage.web.servlet.WhiteListRegistration.processRequest(WhiteListRegistration.java:106)
12:00:12,320 ERROR [stderr] (default task-15) at com.mypackage.web.servlet.WhiteListRegistration.doPost(WhiteListRegistration.java:180)
12:00:12,320 ERROR [stderr] (default task-15) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
12:00:12,321 ERROR [stderr] (default task-15) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
12:00:12,321 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
12:00:12,321 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
12:00:12,322 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletdispatchingHandler.handleRequest(ServletdispatchingHandler.java:36)
12:00:12,322 ERROR [stderr] (default task-15) at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
12:00:12,323 ERROR [stderr] (default task-15) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
12:00:12,323 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.security.SSLinformationAssociationHandler.handleRequest(SSLinformationAssociationHandler.java:131)
12:00:12,324 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
12:00:12,325 ERROR [stderr] (default task-15) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
12:00:12,325 ERROR [stderr] (default task-15) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
12:00:12,326 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
12:00:12,326 ERROR [stderr] (default task-15) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
12:00:12,327 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
12:00:12,327 ERROR [stderr] (default task-15) at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
12:00:12,327 ERROR [stderr] (default task-15) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
12:00:12,327 ERROR [stderr] (default task-15) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
12:00:12,328 ERROR [stderr] (default task-15) at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
12:00:12,328 ERROR [stderr] (default task-15) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
12:00:12,329 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler.handleFirstRequest(ServletinitialHandler.java:292)
12:00:12,380 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler.access$100(ServletinitialHandler.java:81)
12:00:12,381 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler$2.call(ServletinitialHandler.java:138)
12:00:12,381 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler$2.call(ServletinitialHandler.java:135)
12:00:12,381 ERROR [stderr] (default task-15) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
12:00:12,381 ERROR [stderr] (default task-15) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
12:00:12,381 ERROR [stderr] (default task-15) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
12:00:12,382 ERROR [stderr] (default task-15) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
12:00:12,382 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler.dispatchRequest(ServletinitialHandler.java:272)
12:00:12,383 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler.access$000(ServletinitialHandler.java:81)
12:00:12,383 ERROR [stderr] (default task-15) at io.undertow.servlet.handlers.ServletinitialHandler$1.handleRequest(ServletinitialHandler.java:104)
12:00:12,384 ERROR [stderr] (default task-15) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
12:00:12,384 ERROR [stderr] (default task-15) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
12:00:12,385 ERROR [stderr] (default task-15) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
12:00:12,386 ERROR [stderr] (default task-15) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
12:00:12,387 ERROR [stderr] (default task-15) at java.lang.Thread.run(Thread.java:748)
12:00:12,391 ERROR [stderr] (default task-15) Caused by: java.net.ConnectException: Connection refused: connect
12:00:12,392 ERROR [stderr] (default task-15) at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
12:00:12,393 ERROR [stderr] (default task-15) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
12:00:12,394 ERROR [stderr] (default task-15) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
12:00:12,394 ERROR [stderr] (default task-15) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
12:00:12,394 ERROR [stderr] (default task-15) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
12:00:12,396 ERROR [stderr] (default task-15) at java.net.socksSocketImpl.connect(SocksSocketImpl.java:392)
12:00:12,397 ERROR [stderr] (default task-15) at java.net.socket.connect(Socket.java:589)
12:00:12,398 ERROR [stderr] (default task-15) at com.rabbitmq.client.impl.socketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60)
12:00:12,398 ERROR [stderr] (default task-15) at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
12:00:12,398 ERROR [stderr] (default task-15) at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:156)
12:00:12,398 ERROR [stderr] (default task-15) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1106)
12:00:12,399 ERROR [stderr] (default task-15) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1063)
12:00:12,434 ERROR [stderr] (default task-15) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1021)
12:00:12,434 ERROR [stderr] (default task-15) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1182)
12:00:12,435 ERROR [stderr] (default task-15) at com.rabbitmq.jms.admin.RMQConnectionFactory.instantiateNodeConnection(RMQConnectionFactory.java:159)
12:00:12,435 ERROR [stderr] (default task-15) ... 43 more
解决方法
是的,我刚刚发现主机名不能包含某些特殊字符,例如_。 然后我将其从rabbitmq_server删除到rabbitmqserver,然后一切都很好。
希望有人得到像我这样的问题,可以按照以下步骤解决。