我正在尝试使用JMS桥连接两台同时运行JBoss EAP 7.1.0的计算机。机器1充当Web服务器并部署了可访问的WAR文件,而机器2充当应用服务器并已部署了所有必要的组件。
这是我收到的错误:
WARN [org.apache.activemq.artemis.jms.bridge](服务器服务线程池-72)AMQ342010:无法连接JMS Bridge不适用:javax.naming.CommunicationException:WFNAM00018:无法连接至远程主机[根本异常是javax.security.sasl.SaslException:身份验证失败:所有可用的身份验证机制均失败: JBOSS-LOCAL-USER:javax.security.sasl.SaslException:ELY05128:[JBOSS-LOCAL-USER]无法读取质询文件[由java.io.FileNotFoundException引起:/.../.../jboss/standalone/ tmp / auth / local3093626581916142639.challenge(无此类文件或目录)]] 在org.wildfly.naming.client.remote.RemoteNamingProvider.getPeerIdentityForNaming(RemoteNamingProvider.java:110)处 在org.wildfly.naming.client.remote.RemoteNamingProvider.getPeerIdentityForNaming(RemoteNamingProvider.java:53) 在org.wildfly.naming.client.NamingProvider.getPeerIdentityForNamingUsingRetry(NamingProvider.java:105) 在org.wildfly.naming.client.remote.RemoteNamingProvider.getPeerIdentityForNamingUsingRetry(RemoteNamingProvider.java:91)处 在org.wildfly.naming.client.remote.RemoteContext.lambda $ lookupNative $ 0(RemoteContext.java:189) 在org.wildfly.naming.client.NamingProvider.performExceptionAction(NamingProvider.java:222) 在org.wildfly.naming.client.remote.RemoteContext.performWithRetry(RemoteContext.java:100) 在org.wildfly.naming.client.remote.RemoteContext.lookupNative(RemoteContext.java:188) 在org.wildfly.naming.client.AbstractFederatingContext.lookup(AbstractFederatingContext.java:74) 在org.wildfly.naming.client.AbstractFederatingContext.lookup(AbstractFederatingContext.java:60) 在org.wildfly.naming.client.WildFlyRootContext.lookup(WildFlyRootContext.java:144) 在javax.naming.InitialContext.lookup(InitialContext.java:417) 在javax.naming.InitialContext.lookup(InitialContext.java:417) 在org.apache.activemq.artemis.jms.bridge.impl.JNDIFactorySupport.createObject(JNDIFactorySupport.java:46) 在org.apache.activemq.artemis.jms.bridge.impl.JNDIDestinationFactory.createDestination(JNDIDestinationFactory.java:32) 在org.apache.activemq.artemis.jms.bridge.impl.JMSBridgeImpl.setupJMSObjects(JMSBridgeImpl.java:1072) 在org.apache.activemq.artemis.jms.bridge.impl.JMSBridgeImpl.start(JMSBridgeImpl.java:398) 在org.wildfly.extension.messaging.activemq.jms.bridge.JMSBridgeService.startBridge(JMSBridgeService.java:114) 在org.wildfly.extension.messaging.activemq.jms.bridge.JMSBridgeService $ 1.run(JMSBridgeService.java:84) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748) 在org.jboss.threads.JBossThread.run(JBossThread.java:320)
正在建立到目标机器(应用程序服务器)的连接,因为到JBoss的路径就是机器上的路径,我通过在Windows应用程序服务器环境中进行测试进行了验证,并且该路径是正确的Windows路径。质询文件所在的目录,因此很显然,在访问目录时正在建立连接。但是,并非每次都显示.challenge文件,这可以理解为导致错误消息的原因。
我已经搜寻了SO和JBoss论坛数天了,但没有什么能解决我的问题。
我看到了这篇文章:JBOSS-LOCAL-USER: javax.security.sasl.SaslException: Failed to read server challenge
这是我面临的同一问题,但是被标记为正确的答案对我没有太大帮助。在这种情况下,解决方案是用JAAS领域替换默认的ApplicationRealm,但是我不知道这是否是我所需要的,并且我当然目前没有。我确实研究了它,但是它似乎不适用于我的设置,但是我可能会错。
我也尝试了以下解决方案:https://access.redhat.com/solutions/3209281(仅限订阅访问)
此解决方案是从此处删除default-user =“ $ local”:
<security-realm name="ApplicationRealm">
<authentication>
<local default-user="$local" allowed-users="*" skip-group-loading="true"/>
我对两台机器上的两个standalone-full.xml文件都执行了此操作,这似乎没有任何区别。
我在两台机器上都创建了应用程序用户,并通过JBoss控制台为他们提供了超级用户特权,因为我认为尝试写入文件时可能是权限问题,但这也无济于事。我还验证了两个用户凭据都是正确的。
答案 0 :(得分:0)
根据贾斯汀在评论中的建议,解决方法是切换为使用核心桥而不是JMS桥。