Bean name 'baseDataSource' is already used in this <beans> element

박영준·2024년 5월 8일
0

Troubleshooting

목록 보기
29/43

1. 발생한 문제

포털 관리를 통해 정상적으로 '업무 지원'을 메뉴에 추가헀음에도 메뉴에 해당 항목이 뜨지 않았다.

~/tomcat/logs/exb.log 를 통해 확인해보니

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Bean name 'baseDataSource' is already used in this element
Offending resource: file [/home/hso100/apache-tomcat-9.0.39/webapps/exb/WEB-INF/classes/spring/context-datasource.xml]

2. 발생 원인

태그 안에 이름이 중복된 게 있어서 뜨는 오류

3. 해결법

경로 : /home/hso100/apache-tomcat-9.0.39/webapps/exb/WEB-INF/classes/spring/context-datasource.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jdbc="http://www.springframework.org/schema/jdbc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/jdbc  http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd">

  <bean id="egov.propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>classpath:/props/globals.properties</value>
      </list>
    </property>
  </bean>

  <!-- oracle (POM에서 commons-dbcp, ojdbc(라이센스 사항으로 별도로 배포되지 않음) 관련 라이브러리 설정)-->
  <!--
  <bean id="baseDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${db.base.DriverClassName}"/>
    <property name="url" value="${db.base.Url}"/>
    <property name="username" value="${db.base.UserName}"/>
    <property name="password" value="${db.base.Password}"/>
  </bean>
  -->
  
  <bean id="baseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" destroy-method="">
        <property name="jndiName">
                <value>"${db.jndiname}"</value>
        </property>
  </bean>

</beans>

id 이름이 baseDataSource 으로 2개가 설정되어있다.

  • oracle DB 직접 연결 설정
  • JNDI 설정

두 개 중에서 하나를 주석처리 해주자.
(나는 Tibero 를 사용하지 않으므로 JNDI 설정을 선택함)

주의!

profile
개발자로 거듭나기!

0개의 댓글