Из EJB или POJO, развернутого на Glassfish, я могу подключиться к HornetMQ с помощью следующего кода, после добавления в classpath необходимых jar-файлов, специфичных для шершней:
Properties properties = new Properties();
properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
// server name
properties.put("java.naming.provider.url", "jnp://hostname:1099");
properties.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
InitialContext initialContext = new InitialContext(properties);
// queue name
Queue queue = (Queue)initialContext.lookup("/queue/exampleQueue");
// connection factory
ConnectionFactory connectionFactory = (ConnectionFactory) initialContext.lookup("ConnectionFactory");
Connection conn = connectionFactory.createConnection();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
// ...
Но я хочу сделать то же самое из Бина, управляемого сообщениями.
С MDB очень легко, если я использую встроенный провайдер Glassfish; но как мне настроить GF для использования удаленного провайдера?
Есть идеи? Спасибо!
РЕДАКТИРОВАТЬ: сделать вещи немного яснее; типичный MDB выглядит примерно так:
@MessageDriven(mappedName = "/queue/exampleQueue", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class MessageProcessor implements MessageListener {
public MessageProcessor() {
}
public void onMessage(Message message) {
}
}
Но в этом случае MDB будет искать «/ queue / exampleQueue» на локальном сервере, а не на удаленном.
В основном мой вопрос заключается в том, как настроить GF для поиска удаленного сервера (как в первом фрагменте) при использовании MDB?