0

リモート HornetQ JMS プロバイダーに接続するメッセージ駆動型 Bean があります (実稼働/テストでは異なります)。

接続設定は、sun-ejb-jar.xml に保存されるか、MDB クラスに直接 @ActivationConfigProperty 注釈として保存されます。

これらの設定はすべて ear ファイルにバンドルされているため、さまざまな環境でテストする場合、常に設定を変更することを覚えておく必要があるため、展開プロセスが非常に面倒になります。

アプリケーションにこの設定をサーバーから読み取らせる方法について何かアイデアはありますか?

いくつかのカスタム リソースを作成して @Resource で読み取ることを考えましたが、MDB が既に初期化された後に @Resource インジェクション AFAIK が行われるため、MDB にそれらの設定を読み取らせる方法がわかりません...

編集

明確にするために:私が探しているのは、特定の構成(たとえば、さまざまなJMSプロバイダー-トピック/キューなど)で各サーバーにインストールする必要があるsun-ejb-jar.xml構成ファイルのようなものです。しかし、私の耳のアプリは変わらないはずです。各サーバーから環境を自動的にロードする必要があります。それは理にかなっていますか?

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についてはよくわかりません。それを実現するために Application Server Management eXtension (AMX) があると思います。

于 2011-01-07T13:25:27.623 に答える