[SPRING] Spring, DBCP 및 MySQL을 사용하여 연결 시간대 설정
SPRINGSpring, DBCP 및 MySQL을 사용하여 연결 시간대 설정
내 환경
비슷한 게시물
모래밭
내 문제
내 아이디어 / 연구
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="URL" value="${database.url}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.passwd}" />
<property name="connectionCachingEnabled" value="true"/>
<property name="sessionTimeZone" value="GMT-3"/>
</bean>
도움을 요청하는 영역 :)
도움 / 팁 / 조언 / 지식 공유에 미리 감사드립니다.
해결책:
내 솔루션은이 게시물에 수집 된 팁을 기반으로했습니다! 모두에게 감사드립니다!
(...)
@Override
public Connection getConnection() {
Connection conn = null;
Statement statement = null;
try {
conn = super.getConnection();
statement = conn.createStatement();
statement.execute("SET time_zone = \'" + timezone+"\'");
} catch (SQLException e) {
LOG.fatal("Error while SET time_zone", e);
} finally {
try {
statement.close();
} catch (SQLException e) {
LOG.warn("Error while closing statement", e);
}
}
if(LOG.isDebugEnabled())
LOG.debug("SET time_zone("+timezone+") for connection, succeed!");
return conn;
}
(...)
내 Spring 설정 파일 :
<bean id="dataSource" class="com.my.package.dbcp.TimezoneEnabledDataSource" destroy-method="close">
(...)
<property name="timezone" value="${database.timezone}" />
(...)
</bean>
이 게시물이 앞으로 누군가를 도울 수 있기를 바랍니다. 어떤 질문이라도 ping!
해결법
-
==============================
1.데이터 소스에 이러한 속성이 없으면 속성을 확장하고 추가 할 수 있습니다.
데이터 소스에 이러한 속성이 없으면 속성을 확장하고 추가 할 수 있습니다.
public TimezoneEnabledDataSource extends BasicDataSource { private String timezone; //getter and setter for it @Override public Connection getConnection() { Connection c = super.getConnection(); // execute a query: SET time_zone = '-8:00' return c; } }
자세한 내용은 http://www.electrictoolbox.com/mysql-set-timezone-per-connection/을 참조하십시오.
MySQL 문서는 다음과 같이 썼다.
c3p0에 내장 된 것이 없는지 확인할 수도 있습니다.
-
==============================
2.DBCP 구성 요소의 initConnectionSqls 등록 정보에 동일한 SQL 문을 넣을 수 있어야합니다. 이것을 DBCP 구성 요소에 추가하기 만하면됩니다.
DBCP 구성 요소의 initConnectionSqls 등록 정보에 동일한 SQL 문을 넣을 수 있어야합니다. 이것을 DBCP 구성 요소에 추가하기 만하면됩니다.
<property name="initConnectionSqls" value="SET time_zone = '${database.timezone}'"/>
DBCP 버전에 따라 connectionInitSqls를 속성 이름으로 사용해야 할 수도 있습니다. 이 정보는 DBCP 구성. 서의 내용입니다.
-
==============================
3.가능한 해결책 중 하나 :
가능한 해결책 중 하나 :
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="URL" value="${database.url}?serverTimezone=America/Los_Angeles" /> <property name="user" value="${database.username}" /> <property name="password" value="${database.passwd}" /> <property name="connectionCachingEnabled" value="true"/> <property name="sessionTimeZone" value="GMT-3"/> </bean>
-
==============================
4.BasicDataSource에는 "sessionTimeZone"멤버가 없습니다. DBCP보다 "더 나은"연결 풀인 C3P0을 사용하거나 Java EE 웹 서버에있는 경우이를 사용하여 JNDI 데이터 소스를 초기화하십시오.
BasicDataSource에는 "sessionTimeZone"멤버가 없습니다. DBCP보다 "더 나은"연결 풀인 C3P0을 사용하거나 Java EE 웹 서버에있는 경우이를 사용하여 JNDI 데이터 소스를 초기화하십시오.
from https://stackoverflow.com/questions/5970835/setting-connection-timezone-with-spring-and-dbcp-and-mysql by cc-by-sa and MIT license