【问题标题】:Access denied to resource: type=<jms>, application=JMSModule, destinationType=queue, resource=test, action=receive拒绝访问资源:type=<jms>、application=JMSModule、destinationType=queue、resource=test、action=receive
【发布时间】:2019-10-17 07:36:21
【问题描述】:

我正在尝试在 spring boot 中接收 weblogic server jms。但是我在启动应用程序成功后遇到了这个问题。

[]org.springframework.jms.listener.DefaultMessageListenerContainer:handleListenerSetupFailure(892): Setup of JMS message listener invoker failed for destination 'jms/test' - trying to recover. Cause: Access denied to resource: type=<jms>, application=JMSModule, destinationType=queue, resource=ns-alert-test, action=receive

我发现它在启动时可以在[main]的线程中成功连接。 更改线程时似乎缺少用户名和密码

[main] org.springframework.jndi.JndiObjectFactoryBean:lookup(112): Located object with JNDI name [jms/rtsConnectionFactory]

我正在尝试在我的项目中使用 wlfullclient.jar 和 wlclient.jar 和 wlthint3client.jar。但问题仍然存在。你能给我一些关于这个问题的建议吗?下面是我的代码 配置:

@Autowired
private JmsErrorHandler jmsErrorHandler;

@Autowired
private JMSPropertiesConfig jmsPropertiesConfig;

@Bean
public JndiTemplate jndiTemplate(){
    JndiTemplate jndiTemplate =new JndiTemplate();
    Properties properties = new Properties();
    properties.setProperty("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");
    properties.setProperty("java.naming.provider.url", jmsPropertiesConfig.getUrl());
   if(jmsPropertiesConfig.getUname()!=null){
        properties.setProperty("username", jmsPropertiesConfig.getUname());
    }
    if(jmsPropertiesConfig.getUcert()!=null){
        properties.setProperty("password", jmsPropertiesConfig.getUcert());
    }
    jndiTemplate.setEnvironment(properties);
    return jndiTemplate;
}

@Bean
public JndiDestinationResolver jmsDestionationProvider() {
    JndiDestinationResolver destinationResolver = new JndiDestinationResolver();
    destinationResolver.setJndiTemplate(jndiTemplate());
    return destinationResolver;
}

@Bean
public JndiObjectFactoryBean connectionFactory(){
    JndiObjectFactoryBean cf = new JndiObjectFactoryBean();
    cf.setJndiTemplate(jndiTemplate());
    cf.setJndiName(jmsPropertiesConfig.getFactory());
    return cf;
}

@Bean
public JmsTemplate jmsTemplate(){
    JmsTemplate template = new JmsTemplate();
    template.setConnectionFactory((ConnectionFactory) connectionFactory().getObject());
    template.setSessionAcknowledgeModeName("AUTO_ACKNOWLEDGE");
    template.setSessionTransacted(true);
    template.setDestinationResolver(jmsDestionationProvider());
    return template;
}

@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory((ConnectionFactory) connectionFactory().getObject());
    factory.setDestinationResolver(jmsDestionationProvider());
    factory.setErrorHandler(jmsErrorHandler);
    factory.setSessionAcknowledgeMode(0);
    return factory;
}

接收:

 @JmsListener(destination = "jms/test")
public void receiveApplicationNotification(String input) throws Exception {
    log.info("Receiving message from jms.external.ExampleQueue.queue "+input);
}

【问题讨论】:

    标签: jms weblogic


    【解决方案1】:

    似乎是 Weblogic 中的一个错误。

    你能不能试试下面的补丁..

    错误 22550927 - WEBLOGIC JMS 连接不是线程安全的

    【讨论】:

    • 对不起,我找不到补丁,你能提供一个22550927的链接给我吗?非常感谢
    • 你是什么版本..下面是WLS12.1.2的链接support.oracle.com/epmos/faces/…
    猜你喜欢
    • 2013-11-19
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多