我在GlassFish服务器上配置了JMS主题,并且实现了一个客户端来订阅主题并打印它收到的消息。这工作正常。JMS主题为Glassfish上的订阅者提供身份验证
这是我的客户。您可以看到我选择使用某种“直接连接”而不是使用JNDI查找。
com.sun.messaging.ConnectionFactory connFactory = new com.sun.messaging.ConnectionFactory();
connFactory.setProperty(com.sun.messaging.ConnectionConfiguration.imqAddressList, "mq://localhost:7676/");
TopicConnection connection = connFactory.createTopicConnection();
TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("myTopic");
TopicSubscriber subscriber = session.createSubscriber(topic);
subscriber.setMessageListener(this);
connection.start();
这样任何客户端都可以订阅我的主题。我现在想要的是找到一种方法来强制客户端在开始接收消息之前进行身份验证。 Glassfish上可能吗?
到目前为止,我已经试图改变GlassFish管理页面上的“默认JMS主机的凭据并传递我对创建连接设置新的凭据:
TopicConnection connection = connFactory.createTopicConnection("myuser", "mypass");
但这并没有工作。它适用,如果我通过默认的凭据:
TopicConnection connection = connFactory.createTopicConnection("admin", "admin");
我想我必须改变凭据的其他地方,但我不知道在哪里。即使它起作用,它也会迫使客户端进行身份验证?我的意思是,我的客户没有其他方式可以订阅我的主题而无需凭证?