【问题标题】:Can't send a message to queue on WIldfly 11无法将消息发送到 WIldfly 11 上的队列
【发布时间】:2017-12-12 02:06:08
【问题描述】:

我有这个小消息生产者:

 public static void main(String[] args) throws Exception {
        BasicConfigurator.configure();
        Properties env = new Properties();
        InputStream is = Producer.class.getResourceAsStream("/jms.properties");
        env.load(is);
        Context context = new InitialContext(env);
        ConnectionFactory factory = (ConnectionFactory) context.lookup("jms/RemoteConnectionFactory");
        Destination queue = (Destination) context.lookup("jms/demoQueue");

        JMSContext jmsContext = factory.createContext();
        jmsContext.createProducer().send(queue, "Message");

    }

使用以下属性:

java.naming.factory.initial = org.wildfly.naming.client.WildFlyInitialContextFactory
java.naming.provider.url = http-remoting://localhost:8080
java.naming.security.principal = alex
java.naming.security.credentials = password
messagingProvider = demo
connectionFactoryNames = QueueFactory
queue.queueReq = jms.queueReq
queue.queueResp = jms.queueResp

但我得到一个例外:

“引起:javax.jms.JMSSecurityException:AMQ119031:无法 验证用户”

我相信我在服务器上配置错误。但究竟是什么?安全设置有模式:# 带有角色 guest 和 admin。我没有看到其他与安全相关的内容

【问题讨论】:

    标签: java jms wildfly


    【解决方案1】:

    使用 2 个参数调用重载的 createContext() 方法:

    JMSContext context = factory.createContext("alex", "password");

    如果“alex”用户分配了正确的角色,它应该可以工作。

    我记得我曾与开发人员讨论过 createContext() 应该如何工作(它与 Elytron - 新的安全子系统有关),现在的决定是:它按设计工作,但是它可以在未来得到增强。

    详情请见comments in JBEAP-10527

    【讨论】:

      最近更新 更多