전자정부 3.5.1 에서 다중db접속 으로 개발환경을 구성해야합니다.
- 작성자 :
- 정*석
- 작성일 :
- 2019-11-22 10:56:56
- 조회수 :
- 3,053
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
전자정부 3.5.1 에서 현재 oracle을 접속 중이고 추가로 mssql(sql-server) db를 추가로 설정해야합니다.
ibatis 환경에
1. context-Datasource.xml에 추가
<alias name="dataSource-ms" alias="ms.dataSource" />
<bean id="dataSource-ms" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${Globals.ms.DriverClassName}"/>
<property name="url" value="${Globals.ms.Url}" />
<property name="username" value="${Globals.ms.UserName}"/>
<property name="password" value="${Globals.ms.Password}"/>
<property name="initialSize" value="0"/>
<property name="maxActive" value="1"/>
<property name="maxIdle" value="1"/>
<property name="minIdle" value="0"/>
<property name="maxWait" value="-1"/>
</bean>
2. context-sqlMap.xml 파일추가
<bean id="ms.sqlMapClient" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/egovframework/sqlmap/config/ms/*.xml</value>
</list>
</property>
<property name="dataSource" ref="dataSource-${Globals.DbType2}"/>
<property name="lobHandler" ref="lobHandler"/>
</bean>
3. sql-map-config.xml 안에 xml경로 작성 / 쿼리xml 생성
controllor , service, serviceImpl 기존꺼 그대로 사용에
DAO 아래 부분에 추가한부분 후 톰켓 재실행시 에러가납니다.
Repository("SeachReceiverMgtDAO")
@SuppressWarnings("rawtypes")
public class SeachReceiverMgtDAO extends EgovAbstractDAO {
// 새로추가부분 start
@Autowired
@Resource(name = "ms.sqlMapClient")
// 새로추가부분 end
/**
* 총카운트를 조회 한다.
*
* @param Map
* @return int
* @throws Exception
*/
public int selectCnt(Map map) throws Exception{
return (Integer) select("SEACHRECEIVER_SQL.selectCnt", map);
}
}
구성후 나는 에러입니다.
DAO쪽 부분을 어떻게 구현해야 할지 막막하네요 답변부탁드립니다.
Error creating bean with name 'SeachReceiverMgtDAO': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'ms.sqlMapClient' must be of type [java.util.Map], but was actually of type [com.ibatis.sqlmap.engine.impl.SqlMapClientImpl]
ibatis 환경에
1. context-Datasource.xml에 추가
<alias name="dataSource-ms" alias="ms.dataSource" />
<bean id="dataSource-ms" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${Globals.ms.DriverClassName}"/>
<property name="url" value="${Globals.ms.Url}" />
<property name="username" value="${Globals.ms.UserName}"/>
<property name="password" value="${Globals.ms.Password}"/>
<property name="initialSize" value="0"/>
<property name="maxActive" value="1"/>
<property name="maxIdle" value="1"/>
<property name="minIdle" value="0"/>
<property name="maxWait" value="-1"/>
</bean>
2. context-sqlMap.xml 파일추가
<bean id="ms.sqlMapClient" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/egovframework/sqlmap/config/ms/*.xml</value>
</list>
</property>
<property name="dataSource" ref="dataSource-${Globals.DbType2}"/>
<property name="lobHandler" ref="lobHandler"/>
</bean>
3. sql-map-config.xml 안에 xml경로 작성 / 쿼리xml 생성
controllor , service, serviceImpl 기존꺼 그대로 사용에
DAO 아래 부분에 추가한부분 후 톰켓 재실행시 에러가납니다.
Repository("SeachReceiverMgtDAO")
@SuppressWarnings("rawtypes")
public class SeachReceiverMgtDAO extends EgovAbstractDAO {
// 새로추가부분 start
@Autowired
@Resource(name = "ms.sqlMapClient")
// 새로추가부분 end
/**
* 총카운트를 조회 한다.
*
* @param Map
* @return int
* @throws Exception
*/
public int selectCnt(Map map) throws Exception{
return (Integer) select("SEACHRECEIVER_SQL.selectCnt", map);
}
}
구성후 나는 에러입니다.
DAO쪽 부분을 어떻게 구현해야 할지 막막하네요 답변부탁드립니다.
Error creating bean with name 'SeachReceiverMgtDAO': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'ms.sqlMapClient' must be of type [java.util.Map], but was actually of type [com.ibatis.sqlmap.engine.impl.SqlMapClientImpl]
A
안녕하세요.
표준프레임워크센터 입니다.
기재하신 내용으로 보아
ms.sqlMapClient 빈을 주입하는 곳의 바로 하단에
코드 누락이 발생한게 아닌가 추측됩니다.
해당 부분이 누락되어 Map에 바인딩 하려고 하는데
타입이 맞지 않아 오류가 발생하고 있습니다.
다음 예시를 참고하시면 될듯 합니다.
@Resource(name="egov.sqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSuperSqlMapClient(sqlMapClient);
}
감사합니다.
표준프레임워크센터 입니다.
기재하신 내용으로 보아
ms.sqlMapClient 빈을 주입하는 곳의 바로 하단에
코드 누락이 발생한게 아닌가 추측됩니다.
해당 부분이 누락되어 Map에 바인딩 하려고 하는데
타입이 맞지 않아 오류가 발생하고 있습니다.
다음 예시를 참고하시면 될듯 합니다.
@Resource(name="egov.sqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSuperSqlMapClient(sqlMapClient);
}
감사합니다.