Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从Spring引导应用程序连接到SonicMQ 7.6_Java_Spring Boot_Spring Jms_Sonicmq - Fatal编程技术网

Java 无法从Spring引导应用程序连接到SonicMQ 7.6

Java 无法从Spring引导应用程序连接到SonicMQ 7.6,java,spring-boot,spring-jms,sonicmq,Java,Spring Boot,Spring Jms,Sonicmq,在连接到Sonic Broker时,我确实喜欢下面的方法,效果很好 TopicConnectionFactory factory = new progress.message.jclient.TopicConnectionFactory(brokerURL); TopicConnection connection = factory.createTopicConnection(brokerUserName, brokerPassword); ja

在连接到Sonic Broker时,我确实喜欢下面的方法,效果很好

        TopicConnectionFactory factory = new progress.message.jclient.TopicConnectionFactory(brokerURL);
        TopicConnection connection = factory.createTopicConnection(brokerUserName, brokerPassword);

        javax.jms.TopicSession subSession = (TopicSession) connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

        javax.jms.Topic topic = subSession.createTopic(topicNameToListen);
        MessageConsumer subscriber = subSession.createSubscriber(topic);
        subscriber.setMessageListener(msgListener);
        connection.start();
所以当我用spring boot做这件事的时候

@Bean
TopicConnectionFactory connectionFactory() throws JMSException {
    TopicConnectionFactory factory = new progress.message.jclient.TopicConnectionFactory(brokerURL);
    TopicConnection connection = factory.createTopicConnection(brokerUserName, brokerPassword);
    connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    return factory;
}

@Bean
JmsListenerContainerFactory<?> myJmsContainerFactory(ConnectionFactory connectionFactory) {
    SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory);
    return factory;
}

@JmsListener(destination = "topic.name.for.receiving.message", containerFactory = "myJmsContainerFactory")
public void messageReceiver(String message) {
    LogService.info(this.getClass().getName(), "A Message Received");
    LogService.info(this.getClass().getName(), message);
}
注意:我已经检查了很多次凭据,并且使用以前的代码运行了它,它工作正常。此外,我还添加了
sonic_Client.jar、sonic_Crypto.jar和sonic_XMessage.jar
。如果我尝试使用spring boot,就会出现此错误


造成这种情况的原因是什么?

第二个bean是无用的。我们将只绑定到任何可用的
ConnectionFactory
。第一颗豆子很奇怪。你正在创建一个连接和一个会话,然后你什么都不做。您需要设置
spring.jms.pub sub-domain=true
,因为它是一个主题。身份验证问题与Spring引导无关。您需要仔细查看您的代码。@StéphaneNicoll:我删除了不必要的bean,应用程序现在启动。但是定时jms连接刷新程序无法解析目标。我想我误解了目的地。我把它当作主题名。。我错了吗?这是你的主题吗?我不知道SonicMQ是如何解决它的目的地的。也许您需要定义一个
DestinationResolver
?无论如何,你原来的问题与你的情况不符,所以你可能应该重新措辞。第二个bean是无用的。我们将只绑定到任何可用的
ConnectionFactory
。第一颗豆子很奇怪。你正在创建一个连接和一个会话,然后你什么都不做。您需要设置
spring.jms.pub sub-domain=true
,因为它是一个主题。身份验证问题与Spring引导无关。您需要仔细查看您的代码。@StéphaneNicoll:我删除了不必要的bean,应用程序现在启动。但是定时jms连接刷新程序无法解析目标。我想我误解了目的地。我把它当作主题名。。我错了吗?这是你的主题吗?我不知道SonicMQ是如何解决它的目的地的。也许您需要定义一个
DestinationResolver
?无论如何,你原来的问题与你的情况不符,所以你可能应该重新措辞。
javax.jms.JMSSecurityException: Inauthentic Client
at progress.message.jimpl.JMSExceptionUtil.createJMSSecurityException(JMSExceptionUtil.java:134)
at progress.message.jimpl.JMSExceptionUtil.createJMSSecurityException(JMSExceptionUtil.java:117)
at progress.message.jimpl.JMSExceptionUtil.createJMSSecurityException(JMSExceptionUtil.java:103)
at progress.message.jimpl.Connection.<init>(Connection.java:836)
at progress.message.jclient.ConnectionFactory.createConnection(ConnectionFactory.java:2110)
at progress.message.jclient.ConnectionFactory.createConnection(ConnectionFactory.java:2083)