2011-02-04 2 views
0

에 스프링 선언 된 데이터 소스를 얻는 방법을 내가는 다음과 같습니다 스프링 소스가 있습니다. 일부 관련 일 :는 XML 설정 파일

<bean id="dataSourceJNDI1" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/dataSource1"/> 
    <property name="beanClassLoader" ref="dataSource1"></property> 
</bean> 

아니면 :

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/database1" /> 

DBCP와 함께 작업 JNDI 또는 JEE를 얻을 방법하지 않도록. 어떤 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

ps : 얘들 아, 특별한 needl. 그래서 나는 이것을 이렇게해야한다. 제발 불필요한 조언을 게시하지 말아주세요. 이유는 제가 tomcat 서버를 데이터 소스로 사용해야하는 이유입니다. 내가 그런 식으로 데이터 소스를 설정 알고 있습니다. 나는 이것을 다시 반복해야 특별한 필요가있다. 또한 제발 자바 코드 솔루션을 제공하지 말라.

ps : 어떻게해야할지 모르는 사람들은 불가능하다고 말하는이 게시물의 공간을 차지하지 마십시오. 대답을 모른다면 게시물을 올리거나 정크 할 필요가 없습니다.

+1

두 번째 XML 파일은 무엇입니까? 자체 응용 프로그램 코드가 구문 분석하는 사용자 지정 구성 파일입니까? –

+0

hi kevin, 그 ha-jdbc 설정 파일. 데이터 소스에 대해 jndi를 사용하여 정보를 가져와야합니다. 그게 내가 이런 식으로해야하는 이유 야. 나는 그것이 약간의 해킹 소리가 나는 것을 안다. – Ikthiander

답변

-1

jndi를 사용하고 있기 때문에 데이터 소스를 jndi 소스로 선언해야합니다.

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/database1" /> 

<bean id="dataSource1" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="driverClassName" value="${database.driver}" /> 
    <property name="url" value="${database1.url}" /> 
    <property name="username" value="${database1.username}" /> 
    <property name="password" value="${database1.password}" /> 
</bean> 

dataSource1에 대한 bean 정의가 올바른 것으로 가정해야합니다.

+1

dbcp에 datasource 속성이 없습니다. 실제로 자동 완성 IDE에서 사용 했습니까? 시도해보십시오. 당신이 거기서 찾을 수 없을 거라 확신합니다. – Ikthiander

1

데이터 소스를 JNDI 트리에 바인딩해야합니다. 로컬 JNDI 트리에 연결하기위한 매개 변수를 제공해야합니다. JndiTemplate이이를 수행 할 수 있습니다. 일부 JNDI 환경 등록 정보는 로컬 InitialContext에 필요하지 않을 수 있습니다. 나는 "java.naming.factory.initial"이 유일하게 필요하다고 생각한다. 다른 하나는 프로세스 JNDI 서버의 출력에 연결됩니다

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
    <property name="environment"> 
     <props> 
      <prop key="java.naming.provider.url">${jndi.provider.url}</prop> 
      <prop key="java.naming.factory.initial">${jndi.factory.initial}</prop> 
      <prop key="java.naming.security.principal">${jndi.security.principal}</prop> 
      <prop key="java.naming.security.credentials">${jndi.security.credentials}</prop> 
     </props> 
    </property> 
</bean> 

<bean factory-bean="jndiTemplate" factory-method="bind"> 
    <constructor-arg type="java.lang.String" value="java:com/env/DataSoure"/> 
    <constructor-arg type="java.lang.Object" ref="dataSource"/> 
</bean> 

같은 Spring 컨텍스트에서 JNDI 조회를 수행하는 경우, 당신은 JNDI 콩이 있어야합니다 어느 것이 달려 온이 빈을 조회 또는 확인 JNDI 검색은 처음 사용시 검색을 수행하도록 게으르게 처리됩니다.