无法在WIldfly 11上向队列发送消息

时间:2017-12-09 10:57:01

标签: java jms wildfly

我有这个小消息制作人:

 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:无法   验证用户“

我相信我在服务器上配置错误。但到底是什么?安全设置具有以下模式:#with role guest和admin。我没有看到任何与安全相关的内容

1 个答案:

答案 0 :(得分:2)

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

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

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

我记得我和开发人员讨论了createContext()应该如何工作(它与Elytron有关 - 新的安全子系统),现在的解决方案就是:它按设计工作,但将来可以加强。

有关详细信息,请参阅comments in JBEAP-10527