Общая конфигурация - JNDIConfiguration - Как? - PullRequest
3 голосов
/ 29 января 2010

Я обычно использую Commons Configuration для управления своими приложениями. Я использовал конфигурацию файлов свойств. Теперь меня интересует использование JNDIConfiguration, но я не могу понять, как это работает, читая документацию или прибегая к поиску в Google.

В контексте, я работаю в веб-приложениях, работающих в JBoss AS.

Где будут храниться свойства? В файле? несколько таблиц в базе данных?

Буду благодарен за любые указания на этом уровне, даже если они имеют форму ссылок, где я могу прочитать некоторую ценную информацию о нем.

В качестве заключительного замечания моя цель - освободить меня от привязки файла с жестко заданным путем к моим свойствам, но также не заставлять меня сохранять конфигурацию в таблицах базы данных. Если у вас есть какие-либо предложения о том, как это сделать каким-либо другим способом, не стесняйтесь делиться.

Ответы [ 3 ]

1 голос
/ 29 января 2010

JNDIConfiguration ищет данные конфигурации на сервере JNDI (в вашем случае, на сервере JNDI JBoss). Тем не менее, вам все еще нужен способ передачи этих данных на сервер JNDI, и Commons-Configuration не поможет вам в этом.

Мне кажется, что JNDI - это не то, что вам нужно, а лишь небольшая проблема. JBoss по-прежнему нужно где-то хранить данные конфигурации, поэтому у вас все равно будет та же основная проблема.

Если вам не нужны жестко заданные пути к файлам и вам не нужна база данных, тогда я предлагаю вам передать местоположение файла свойств через системное свойство, например,

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

Затем передайте это местоположение в Commons Configuration и дайте ему загрузить вашу конфигурацию таким образом. Нет жестко закодированных путей, нет базы данных.

1 голос
/ 29 января 2010

Я не знаю много о Commons Configuration и JNDIConfiguration, но если вам нужен набор пар ключ / значение, стандартный способ сделать это в соответствии со спецификациями Java EE - это использовать env-entry в web.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. )

Эти значения связаны в JNDI, поэтому их можно искать или вводить.

0 голосов
/ 01 февраля 2010

Где будут храниться свойства? В файле? несколько таблиц в базе данных?

Как упомянул @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>

Если это не то, что вы ищете, тогда я не понимаю, что вы ищете :) В таком случае, вам, возможно, следует уточнить это.

...