У меня есть тема 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");
Я думаю, что мне нужно изменить учетные данные где-то еще, но я не знаю, где. И даже если это сработает, это заставит клиента аутентифицироваться? Я имею в виду, что у моего клиента не будет другого способа подписаться на мою тему, не имея учетных данных?