3

私は通常、アプリケーション構成の管理にCommonsConfigurationを使用します。プロパティファイルの構成を使用しました。今、私はJNDIConfigurationの使用に興味がありますが、これがドキュメントを読んだりグーグルで検索したりする方法を理解できません。

コンテキスト化すると、JBossASで実行されているWebアプリケーションで作業しています。

プロパティはどこに保存されますか?ファイルに?データベース内のいくつかのテーブル?

貴重な情報が読めるリンクの形になっている場合でも、このレベルでのご指導に感謝いたします。

最後の注意として、私の目標は、ファイルをプロパティのハードコードされたパスにリンクすることから解放することですが、データベーステーブルに構成を強制することもありません。他の方法でそれを行う方法について何か提案があれば、自由に共有してください。

4

3 に答える 3

1

Commons ConfigurationとについてはよくわかりませんがJNDIConfiguration、キーと値のペアのセットが必要な場合、Java EE仕様に従ってこれを行う標準的な方法はenv-entryweb.xmlまたはで使用することejb.xmlです。

<env-entry>
  <env-entry-name>maxExemptions</env-entry-name>
  <env-entry-value>10</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

JBoss Web conf。リファレンスから取得した例。

これらの値はJNDIにバインドされているため、検索または挿入できます。

于 2010-01-29T10:53:53.597 に答える
1

JNDIConfigurationJNDIサーバー(この場合はJBoss JNDIサーバー)で設定データを検索します。ただし、そもそもそのデータをJNDIサーバーに取り込む方法が必要であり、Commons-Configurationはそれを支援しません。

JNDIはあなたが望むものではなく、問題を少し押し進めているだけだと私には思えます。JBossは引き続き設定データをどこかに保存する必要があるため、同じ基本的な問題が発生します。

ハードコードされたファイルパスが必要なく、データベースも必要ない場合は、システムプロパティを介してプロパティファイルの場所を渡すことをお勧めします。

java -Dmy.config.path=/my/config.properties com.MyClass

次に、その場所をCommons Configurationに渡し、その方法で構成をロードします。ハードコードされたパスもデータベースもありません。

于 2010-01-29T10:54:52.810 に答える
0

プロパティはどこに保存されますか?ファイルに?データベース内のいくつかのテーブル?

@ewernliが述べたように、JNDIツリーにエントリを追加するJava EEの方法はenv-entry、デプロイメント記述子で使用することです。

ここで、複数のデプロイメント記述子で同じことを繰り返したくない場合env-entryは、グローバルJNDIバインディングを指定するためのサービスがありますJNDIBindingServiceMgr

以下に、提供されているjboss-service.xml例を示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server PUBLIC "-//JBoss//DTD MBean Service 4.0//EN"
          "http://www.jboss.org/j2ee/dtd/jboss-service_4_0.dtd">
<server>
   <mbean code="org.jboss.naming.JNDIBindingServiceMgr"
         name="jboss.tests:service=JNDIBindingServiceMgr">
      <attribute name="BindingsConfig" serialDataType="jbxb">
         <jndi:bindings
            xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
            xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-service_1_0.xsd"
            >
            <jndi:binding name="urls/jboss-home">
               <jndi:value type="java.net.URL">http://www.jboss.org</jndi:value>
            </jndi:binding>

            <jndi:binding name="hosts/localhost">
               <jndi:value editor="org.jboss.util.propertyeditor.InetAddressEditor">
                  127.0.0.1
               </jndi:value>
            </jndi:binding>

            <jndi:binding name="maps/testProps">
               <java:properties xmlns:java="urn:jboss:java-properties"
                  xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
                  xs:schemaLocation="urn:jboss:java-properties resource:java-properties_1_0.xsd">
                  <java:property>
                     <java:key>key1</java:key>
                     <java:value>value1</java:value>
                  </java:property>
                  <java:property>
                     <java:key>key2</java:key>
                     <java:value>value2</java:value>
                  </java:property>
               </java:properties>               
            </jndi:binding>
         </jndi:bindings>
      </attribute>
      <depends>jboss:service=Naming</depends>
   </mbean>

</server>

これがあなたが探しているものではない場合、私はあなたが探しているものを理解していません:)その場合、あなたはおそらくそれを明確にする必要があります。

于 2010-02-01T13:51:27.720 に答える