【问题标题】:Jboss 7.1 JMS with Spring authentication error带有 Spring 身份验证错误的 Jboss 7.1 JMS
【发布时间】:2013-01-04 15:40:54
【问题描述】:

我正在尝试使用 spring 来使用 hornetq(jboss 上的 jms)。但我无法对用户进行身份验证。似乎我在将用户信用发送到 hornetq 身份验证界面时遇到问题。我的弹簧配置:

<bean id="jmsJndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">${jms.jndi.initialContextFactory}</prop>
            <prop key="java.naming.provider.url">${jms.jndi.providerUrl}</prop>
            <prop key="java.naming.security.principal">${jms.jndi.username}</prop>
            <prop key="java.naming.security.credentials">${jms.jndi.password}</prop>                
            <prop key="java.naming.factory.url.pkgs">${jms.jndi.packagePrefixes}</prop>
        </props>
    </property>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jmsJndiTemplate"/>
    <property name="jndiName" value="${jms.connectionFactory}"/>
</bean>
<bean id="jmsIletisimRawDataSendDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jmsJndiTemplate"/>
    <property name="jndiName" value="${jms.iletisim.rawdata.send}"/>
</bean>

<bean id="jmsConnectionExceptionListener" class="com.marti.jms.ConnectionExceptionListener">
</bean>

<bean id="jmsConnectionPool" class="com.marti.jms.PoolFTConnection" init-method="initConnection" destroy-method="destroyConnection">
    <property name="cf" ref="jmsConnectionFactory"/>
    <property name="exceptionListener" ref="jmsConnectionExceptionListener"/>
    <property name="poolSize" value="${jms.poolSize}"/>           
</bean>

<bean id="iletisimRawDataSender" class="com.marti.jms.MessageSender" depends-on="jmsConnectionPool" init-method="setupSender" destroy-method="destroySender">
    <property name="connections" ref="jmsConnectionPool"/>
    <property name="destination" ref="jmsIletisimRawDataSendDestination"/>
    <property name="sessionsPerConnection" value="${jms.sessionPerConnection}"/>
    <property name="messageTTL" value="${jms.ttl}"/>
</bean>

我用错了吗? (显然是:))

这里是堆栈跟踪;

14:52:13,408 错误 [org.hornetq.core.protocol.core.impl.HornetQPacketHandler](旧 I/O 服务器工作程序(parentId:29291087,[id:0x01bef24f,/0.0.0.0:5445]))创建会话失败:HornetQException[errorCode=105 message=无法验证用户:null] 在 org.hornetq.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:147) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.server.impl.HornetQServerImpl.createSession(HornetQServerImpl.java:807) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.protocol.core.impl.HornetQPacketHandler.handleCreateSession(HornetQPacketHandler.java:187) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.protocol.core.impl.HornetQPacketHandler.handlePacket(HornetQPacketHandler.java:85) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:508) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:556) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:517) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:533) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.remoting.impl.netty.HornetQChannelHandler.messageReceived(HornetQChannelHandler.java:73) [hornetq-core-2.2.13.Final.jar:] 在 org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.StaticChannelPipeline.sendUpstream(StaticChannelPipeline.java:372) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.StaticChannelPipeline$StaticChannelHandlerContext.sendUpstream(StaticChannelPipeline.java:534) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:287) [netty-3.2.6.Final.jar:] 在 org.hornetq.core.remoting.impl.netty.HornetQFrameDecoder2.decode(HornetQFrameDecoder2.java:169) [hornetq-core-2.2.13.Final.jar:] 在 org.hornetq.core.remoting.impl.netty.HornetQFrameDecoder2.messageReceived(HornetQFrameDecoder2.java:134) [hornetq-core-2.2.13.Final.jar:] 在 org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.StaticChannelPipeline.sendUpstream(StaticChannelPipeline.java:372) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.StaticChannelPipeline.sendUpstream(StaticChannelPipeline.java:367) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.channel.socket.oio.OioWorker.run(OioWorker.java:100) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44) [netty-3.2.6.Final.jar:] 在 org.jboss.netty.util.VirtualExecutorService$ChildExecutorRunnable.run(VirtualExecutorService.java:181) [netty-3.2.6.Final.jar:] 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [classes.jar:1.6.0_37] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [classes.jar:1.6.0_37] 在 java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_37]

【问题讨论】:

    标签: spring jms jboss7.x hornetq


    【解决方案1】:

    这是一个临时解决方案或临时解决方案,但谁想要解决此问题或不想遇到同样的问题;这是解决方案:

    • 在jboss管理界面点击屏幕右上角的Profile。
    • 单击左侧树形菜单上的消息传递 -> 消息传递提供程序。
    • 在右侧窗格中,单击您尝试连接的提供商的“查看”。
    • 然后编辑“JMS Provider Configurations”的设置,将 Security Enabled 设置为“false”。

    【讨论】:

    • 如果你真的想使用身份验证,你应该用spring配置它们。我回答了here 如何做到这一点。
    【解决方案2】:

    您只是收到身份验证错误?

    您只需要使用 JBoss 附带的 addUser 脚本将用户和密码添加到用户组。

    如果您遇到不同的错误,我需要更多详细信息(例如您的异常堆栈跟踪)。

    【讨论】:

    • 我已经添加了堆栈跟踪。加上用户名和密码存储在一个prop文件中:
    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多