0

我有一个消息驱动的 bean,它连接到远程 HornetQ JMS 提供程序(生产/测试不同)。

连接设置要么存储在 sun-ejb-jar.xml 中,要么作为 @ActivationConfigProperty 注释直接存储在 MDB 类中。

由于所有这些设置都与 ear 文件捆绑在一起,因此当您想在不同环境中进行测试时,部署过程会非常麻烦,因为您必须记住始终更改设置。

您对如何让我的应用程序从服务器读取此设置有任何想法吗?

我想创建一些自定义资源并使用@Resource 读取它们,但我不知道如何让MDB 读取这些设置,因为@Resource 注入AFAIK 发生在MDB 已经初始化之后......

编辑

澄清一下:我正在寻找的是类似 sun-ejb-jar.xml 配置文件,我应该将其安装在具有特定配置的每台服务器上(例如,不同的 JMS 提供程序 - 主题/队列等)。但我的耳朵应用程序应该保持不变。它应该自动从每个服务器加载环境。是否有意义?

4

1 回答 1

0

您对如何让我的应用程序从服务器读取此设置有任何想法吗?

JMX-Mbeans 可用于连接服务器。下面是连接服务器并从中获取信息的示例代码,可以帮助您了解它。

//---

    Hashtable props = new Hashtable();
    props.put(InitialContext.PROVIDER_URL, "jnp://localhost:1099");
    props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");

    InitialContext ctx = new InitialContext(props);

    MBeanServerConnection serverConn = (MBeanServerConnection)ctx.lookup("jmx/rmi/RMIAdaptor");

    Set<Object> listOfBeans =  serverConn.queryMBeans(null, null); // find-all

    for(Object o : listOfBeans){

        ObjectInstance beanInfo = (ObjectInstance) o;
        System.out.println(beanInfo.getObjectName());
    }

//---

jboss.mq.destination:service=Topic,name=ProvisioningResponseTopic它像其他东西一样输出注册的主题/队列。

MBean 还可用于获取其他信息,如端口、绑定地址、域等。

注意:上面的代码是特定于 JBoss 的,但对于 Glassfish 也可以实现。

我对Glassfish知之甚少。我认为有应用服务器管理扩展(AMX)来完成它。

于 2011-01-07T13:25:27.623 回答