Einstellung-Verbindung timezone mit Feder und DBCP und MySQL
Meiner Umgebung
- Java 5
- Frühjahr 2.5.5
- DBCP DataSource (org.apache.Unterhaus.dbcp.BasicDataSource)
- MySQL
Ähnliche Beiträge
Links
Mein Problem
- Ich brauche, um auf meine Verbindung, die Zeitzone, die darauf abzielt zu verhindern, dass die Konversionen beim Umgang mit TIMESTAMP-Spalten.
Meine Idee/Forschung
- DBCP Connection Pool nicht zu erwähnen, alles rund um Zeitzone. LINK
- Was ich untersuchen, und fand das oK ist beschrieben auf DIESE post, exemplifikation ist:
<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>
Um Hilfe zu bitten-Bereich 🙂
- Aber das wird nicht funktionieren!!
- Was ich hier will ist eine einfache Weise, vorzugsweise mit Spring konfigurieren Sie die Zeitzone auf jdbc-Verbindung.
Dank im Voraus für jede Hilfe/Tipps/Rat/wissen teilen
LÖSUNG:
War meine Lösung, basierend auf Tipps gesammelt in diesem Beitrag! Vielen Dank für alles!!!
(...)
@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;
}
(...)
und auf meiner Spring-Konfigurationsdatei:
<bean id="dataSource" class="com.my.package.dbcp.TimezoneEnabledDataSource" destroy-method="close">
(...)
<property name="timezone" value="${database.timezone}" />
(...)
</bean>
Ich hoffe, dieser Beitrag kann jemandem helfen, in der Zukunft. Jede Frage, die ping mich!
sind Sie sicher, dass die GMT-3 erkannt wird? Haben Sie versucht
Ich werde zu aktualisieren meinem Beitrag mit alle meine Funde! Ich habe einfach aufhören über etwas finden in Bezug auf DBCP-Konfigurationen!
Ich werde überprüfen, in einigen Stunden, ich bin nicht @ home, aber als peer den link erwähne ich die Fehlermeldung beschwert sich über die Eigenschaft( Ungültige Eigenschaft 'sessionTimeZone'), nicht der Wert.
America/Los_Angeles
zum Beispiel (aus Gründen der Prüfung)Ich werde zu aktualisieren meinem Beitrag mit alle meine Funde! Ich habe einfach aufhören über etwas finden in Bezug auf DBCP-Konfigurationen!
Ich werde überprüfen, in einigen Stunden, ich bin nicht @ home, aber als peer den link erwähne ich die Fehlermeldung beschwert sich über die Eigenschaft( Ungültige Eigenschaft 'sessionTimeZone'), nicht der Wert.
InformationsquelleAutor rafa.ferreira | 2011-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Datenquelle nicht über eine solche Eigenschaft, Sie können Sie erweitern und fügen Sie die Eigenschaft:
Finden Sie hier http://www.electrictoolbox.com/mysql-set-timezone-per-connection/ für die query details.
MySQL-Dokumentation schreibt:
Können Sie auch überprüfen, ob c3p0 nicht haben so etwas eingebaut.
es ist aus der Spitze von meinem Kopf. Ich weiß nicht wirklich ein problem, aber ich habe nicht verwendet es in der Produktion 😉
Ich glaube nicht, dass es eine gute Idee, um zu definieren, einige Eigenschaften, die in Ihrer Datenbank in einer Multithread-Umgebung :S
Ich Verstand nicht, Ihren Kommentar. Ich denke, die Abfrage setzt die Zeitzone pro Verbindung, nicht Global (zumindest das ist, was der Artikel behauptet)
was sind Ihre Bedenken? Ich bin behauptend, dass, wenn Werke mit timestamp-Spalten, MySQL wird sich nicht ändern meinem Termin wegen der unterschiedlichen Zeitzonen. Denken Sie, dass MySQL immer gestartet werden bei UTC.
InformationsquelleAutor Bozho
Sollten Sie in der Lage sein, die gleichen SQL-Anweisungen in der initConnectionSqls Eigenschaft des DBCP-Konfiguration element. Nur fügen Sie diese an die DBCP-Konfiguration element
Je nach Ihrer version von DBCP, haben Sie möglicherweise die Verwendung connectionInitSqls wie der name der Eigenschaft. Diese information ist direkt aus DBCP-Konfiguration Dokumentation.
InformationsquelleAutor Chandranshu
Eine der möglichen Lösungen:
InformationsquelleAutor Julia Shevchuk
Gibt es keine "sessionTimeZone" Mitglied in der BasicDataSource. Verwenden C3P0, die eine "bessere" connection pool als DBCP, oder noch besser, wenn Sie in einem Java-EE-web-server, verwenden Sie zum initialisieren einer JNDI-datasource 😉
Interessanterweise gibt es keine sessionTimeZone oder gleichwertiges Mitglied in C3P0 DataSources entweder...
InformationsquelleAutor Vincent Devillers