- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚重构了一些发布到 JMS 主题的代码以使用 Spring 的 JmsTemplate 类,现在我收到一个异常,指出我未通过身份验证。
之前我创建了工厂,建立了连接,然后是 session 等,如下所示:
MQTopicConnectionFactory factory = new MQTopicConnectionFactory();
factory.setQueueManager(qMgr);
factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
factory.setHostName(hostname);
factory.setPort(listenerPort);
factory.setChannel(channel);
// setting username and password to be empty string ==> no authentication
connection = factory.createConnection("", "");
...
connection.start();
我在 JmsTemplate 中看不到任何地方可以将用户名和密码设置为空字符串。我的配置如下所示:
<bean id="jmsFactory" class="com.ibm.mq.jms.MQTopicConnectionFactory">
<property name="queueManager">
<value>ACT01</value>
</property>
<property name="hostName">
<value>xx.xx.xx.xx</value>
</property>
<property name="port">
<value>15004</value>
</property>
<property name="transportType">
<value>1</value>
</property>
<property name="channel">
<value>CONDUCTOR.ACT01</value>
</property>
</bean>
<bean id="impactJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory">
<ref local="jmsFactory" />
</property>
</bean>
</property>
</bean>
我也曾尝试将 jmsFactory 包装在 UserCredentialsConnectionFactoryAdapter
对象中,但无济于事:
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="jmsFactory"/>
<property name="username" value=""/>
<property name="password" value=""/>
</bean>
堆栈跟踪:
Caused by: com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'LOROL' with connection mode 'Client' and host name 'xx.xx.xx.xx'. Please check if the supplied username and password are correct on the QueueManager you are connecting to
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:531)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:219)
at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:410)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:7855)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7331)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:276)
at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6055)
at com.ibm.mq.jms.MQTopicConnectionFactory.createTopicConnection(MQTopicConnectionFactory.java:114)
at com.ibm.mq.jms.MQTopicConnectionFactory.createConnection(MQTopicConnectionFactory.java:197)
at org.springframework.jms.connection.SingleConnectionFactory.doCreateConnection(SingleConnectionFactory.java:343)
at org.springframework.jms.connection.SingleConnectionFactory.initConnection(SingleConnectionFactory.java:290)
at org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:227)
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:461)
... 25 more
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:206)
... 37 more
最佳答案
这里有几个选项...
有关客户端连接的 WMQ 安全性的更多信息,请参阅 Hardening WebSphere MQ presentation .如果您想真正保护对 QMgr 的访问,您需要将 MCAUSER 设置为低权限用户 ID,执行 setmqaut 命令以授权该 ID 的组,然后锁定所有其他 channel ,如 SYSTEM.AUTO.* 和 SYSTEM。 DEF.* 所以他们无法运行。
关于java - Spring JmsTemplate + 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196966/
我已经尝试运行简单的 spring jmstemplate 示例。这里是发件人的源代码, import javax.jms.Destination; import javax.jms.JMSExcep
我正在使用 Spring Boot 2.1.6 构建 REST API 应用程序。我想在我的应用程序中使用 JMS 消息传递和 Active MQ 包 (org.apache.activemq)。我有
我一直在寻找一些文档/示例来检查动态创建的主题是否存在,如果存在,如何获取该主题的订阅者计数。 我使用以下代码向主题发送消息 - jmsTemplate.send(destination, new M
到目前为止,我只能在 jms 连接工厂中找到并发设置: 是否可以配置单个队列的消费者数量?即类似: 谢谢!~ 最佳答案 不要使用命名空间,而是使用抽象父级 DefaultMessageLi
我有 JMS 应用程序 和 IBM MQ jars 配置,使用 spring 它在正确的队列信息下运行良好,但是当我提供错误的队列信息时 卡在 LOG.info("SENDING MESSAGE");
我正在尝试将消息头插入 amq。 JMSTemplate 中没有特定方法用于在 amq 中设置 header。当我这样设置时,它将保存在 StringProperty 而不是标题。保存到标题如何传递数
我想从 jmsTemplate.sendAndReceive 获取同步响应: Message responseMessage = producer.produceAndReceive(gzip
我想为连接到 ActiveMQ 代理的多个生产者共享 JMSTemplate 的单个实例。示例配置: 我可以使用上面的配置吗? 正如这里提到的:http://docs.sp
我正在使用 Spring boot,我想动态创建多个 JMS 模板,因为我想连接到不同的 JMS 实例。我知道使用注释的标准方法,将 ConnectionFactory 链接到 JMSTemplate
我的服务方法如下所示,我试图模拟 JmsTemplate 以便它可以在单元测试期间发送消息,但它不执行 jmsTemplate.send(...),它直接转到下一行,怎么可能我使用单元测试执行我的服务
我们当前使用 JmsTemplate 的 send(Destination, messageCreator) 方法将消息发送到 webMethods 队列。然而,有时 send 方法需要很长时间才能返
我编写了一个在 Glassfish 中的 Web 服务中运行的 JMS 应用程序(也将其部署在 JBoss 中),我注意到在我通过 MessageListener MDP 处理多条消息后,JMS 服务
我正在使用 Spring API 的 JmsTemplate 和 MappingJackson2MessageConverter(版本:spring-jms-4.3.4.RELEASE.jar)来发布
我刚刚重构了一些发布到 JMS 主题的代码以使用 Spring 的 JmsTemplate 类,现在我收到一个异常,指出我未通过身份验证。 之前我创建了工厂,建立了连接,然后是 session 等,如
需要模拟 JmsTemplate 以在我的应用程序中进行集成测试。 在我的 appcontext.xml 中
我需要在特定时间后删除一条消息,所以我启用了 explicitQosEnabled 并设置了生存时间。 但我注意到消息已被删除,但它花费的时间比指定的时间(一分钟)长,所以以前有人遇到过这个问题吗?
我相信我搞砸了配置,但我不知道在哪里以及如何修复它。 Here你可以找到代码。 org.springframework.jms.UncategorizedJmsException: Uncategor
我正在探索 jmsTemplate 实现并遇到一个问题。可以手动将 JMSMessageId 应用于消息,但回调会返回不同的 MessageId。 示例代码: log.debug("Sending r
在 asyncSend 设置为 true 的情况下发送持久消息是否有最佳实践或指南。 我们没有配置事务管理器 我们有 ~40k-50k 消息,这些消息是使用配置有 的 jmsTemplate 发送的
我有发送到 IBM MQ 队列的 JMS 消息,如果远程客户端(我无法控制远程客户端)在给定的时间(比如 1 分钟)内没有使用消息,消息应该过期(我有过期部分工作,“MQ 删除消息”在 JMSTemp
我是一名优秀的程序员,十分优秀!