【发布时间】:2023-04-08 01:45:01
【问题描述】:
从部署在 Glassfish 上的 EJB 或 POJO,我可以使用以下代码连接到 HornetMQ,在我将必要的 hornet 特定 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();
// ...
但我想通过消息驱动 Bean 做同样的事情。
如果我使用嵌入式 Glassfish 提供程序,则使用 MDB 非常容易;但是如何配置 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 时查找远程服务器(如在第一个 sn-p 中)?
【问题讨论】:
-
@Preston,看看我的更新。
标签: java jakarta-ee jms glassfish-3