2010-01-29 2 views
3

저는 보통 내 응용 프로그램 구성을 관리하기 위해 Commons Configuration을 사용합니다. 속성 파일 구성을 사용했습니다. 이제 JNDIConfiguration 사용에 관심이 있지만 문서를 읽거나 검색하는 방식을 이해할 수 없습니다.커먼즈 구성 - JNDIC 구성 - 방법?

Contextualizing, 저는 JBoss AS에서 실행되는 webapps에서 일하고 있습니다.

속성은 어디에 저장됩니까? 파일에? 데이터베이스의 일부 테이블?

이 수준의 지침에 대해 감사 드리며 링크의 모양이 있어도 가치있는 정보를 읽을 수 있습니다.

마지막으로 내 목표는 파일을 하드 코드 된 경로로 내 속성에 연결하는 것뿐 아니라 데이터베이스 테이블에 내 구성을 갖도록 강요하지 않는 것입니다. 다른 방법으로 그렇게하는 방법에 대한 제안이 있으면 언제든지 공유하십시오. 나도 몰라

답변

0

속성은 어디에 저장됩니까? 파일에? 데이터베이스의 일부 테이블?

@ewernli가 언급 한 바와 같이

는 JNDI 트리에 항목을 추가 할 수있는 자바 EE의 방법은 배치 디스크립터 (들)에 env-entry을 사용하는 것입니다.

이제 여러 배포 설명자에서 동일한 env-entry을 반복하지 않으려면 JNDIBindingServiceMgr이라는 전역 JNDI 바인딩을 지정하는 서비스가 있습니다.다음은

, 제공된 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> 

, 당신은 아마 명확히해야 그것.

+0

정확히 그거야! 정말 고맙습니다! – rsilva4

1

많은 약 Commons ConfigurationJNDIConfiguration,하지만 당신이 원하는 것은 키/값 쌍의 집합, 자바 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 web conf. reference. 찍은 예)

이러한 값들은 조회 또는 분사 될 수 있도록 JNDI에 결합된다.

+0

ewernli에 감사드립니다. 유용 할 것입니다. 그러나이 특정 관심사를 찾는 것은 아닙니다. – rsilva4

1

JNDIConfiguration은 JNDI 서버 (사용자의 경우 JBoss JNDI 서버)에서 구성 데이터를 조회합니다. 그러나, 당신은 여전히 ​​그 데이터를 JNDI 서버에 가져 오는 방법을 필요로합니다. Commons-Configuration은 그것을 도와주지 않습니다.

JNDI가 원하는 것이 아니기 때문에 문제가 조금 풀립니다. JBoss는 여전히 구성 데이터를 어딘가에 저장해야하므로 동일한 기본 문제가 발생합니다.

하드 코딩 된 파일 경로를 원하지 않고 데이터베이스를 원하지 않으면 시스템 등록 정보를 통해 등록 정보 파일의 위치를 ​​전달하는 것이 좋습니다.

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

그런 다음 해당 위치를 Commons Configuration으로 전달하고 그 방식으로 구성을로드하십시오. 하드 코딩 된 경로가없고 데이터베이스가 없습니다.

+0

".... 여전히 JNDI 서버에 데이터를 가져 오는 방법이 필요합니다 ..."- 이것이 내 주요 질문입니다! 그렇게하는 방법? 제 경우에는 JNDI 서버의 하드 코딩 된 경로에 신경 쓰지 않아도됩니다. 환경 의존적이며 응용 프로그램에 의존하지 않기 때문입니다. 사용하는 응용 프로그램을 패키징 할 때 일부 구성을 배치 할 필요가 없다는 것을 의미합니다 경로는 결정했지만 어디에서든지 사용할 수 있습니다. – rsilva4

+0

JNDI 서버에서 물건을 가져오고 나가려면 JNDI 편집기 도구가 필요합니다. 저는 JBoss와 함께 제공되는 것을 알지 못합니다. 그러나 그런 것들은 어딘가에 존재해야합니다. – skaffman

관련 문제