У меня есть тема JMS, настроенная на моем сервере Glassfish, и я реализовал клиент, чтобы подписаться на тему и распечатать полученные ею сообщения. Это работает нормально.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?
До сих пор я попытался изменить учетные данные по умолчанию «JMS хоста» на странице администратора Glassfish и передавая новые учетные данные, которые я указал на создание соединения:
TopicConnection connection = connFactory.createTopicConnection("myuser", "mypass");
Но это не сработало. Это работает, если передавать учетные данные по умолчанию:
TopicConnection connection = connFactory.createTopicConnection("admin", "admin");
Я думаю, что я должен иметь, чтобы изменить учетные данные где-то еще, но я не знаю, где. И даже если это сработает, это заставит клиента пройти аутентификацию? Я имею в виду, что для моего клиента не будет другого способа подписаться на мою тему без наличия учетных данных?