Connexion de paramètre de fuseau horaire avec le Printemps et DBCP et MySQL
Mon Environnement
- Java 5
- Printemps 2.5.5
- DBCP source de données (org.apache.commons.dbcp.BasicDataSource)
- MySQL
Des postes similaires
Liens
Mon Problème
- Ce que je dois mettre sur ma connexion le fuseau horaire, visant à empêcher les conversions lorsque vous traitez avec les colonnes de type TIMESTAMP.
Mon Idée/recherche
- DBCP Pool de Connexion n'a pas mentionné quoi que ce soit autour du fuseau horaire. LIEN
- Ce que j'ai d'enquêter et de la pensée que c'était oK est décrit sur CETTE post, en exemplifiant est:
<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>
Demander de l'aide de la zone 🙂
- Mais ce n'est pas de travail!!
- Ce que je veux, ici, est un moyen simple, de préférence à l'aide de Printemps pour configurer le fuseau horaire sur la connexion jdbc.
Merci d'avance pour toute aide/conseils/conseils/partage du savoir
SOLUTION:
Ma Solution était basée sur des conseils recueillis sur ce post! Merci pour tout!
(...)
@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;
}
(...)
et sur mon Ressort fichier de configuration:
<bean id="dataSource" class="com.my.package.dbcp.TimezoneEnabledDataSource" destroy-method="close">
(...)
<property name="timezone" value="${database.timezone}" />
(...)
</bean>
J'espère que ce post peut aider quelqu'un dans le futur. Toute question de ping-moi!
êtes-vous certain que GMT-3 est reconnu? Avez-vous essayé
Je vais continuer à mettre à jour mon post avec toutes mes trouvailles! Je viens de quitter à peu près à trouver quelque chose au sujet de DBCP configurations!
Je vais doubler vérifier dans quelques heures, que je ne suis pas @ home, mais comme par les pairs le lien que je viens de mentionner l'erreur est de se plaindre de la propriété( propriété non Valide 'sessionTimeZone'), et la valeur pour elle.
America/Los_Angeles
par exemple (pour des raisons de test)Je vais continuer à mettre à jour mon post avec toutes mes trouvailles! Je viens de quitter à peu près à trouver quelque chose au sujet de DBCP configurations!
Je vais doubler vérifier dans quelques heures, que je ne suis pas @ home, mais comme par les pairs le lien que je viens de mentionner l'erreur est de se plaindre de la propriété( propriété non Valide 'sessionTimeZone'), et la valeur pour elle.
OriginalL'auteur rafa.ferreira | 2011-05-11
Vous devez vous connecter pour publier un commentaire.
Si la source de données n'ont pas cette propriété, vous pouvez l'étendre et d'ajouter que la propriété:
Voir ici http://www.electrictoolbox.com/mysql-set-timezone-per-connection/ pour les détails de la requête.
Documentation de MySQL écrit:
Vous pouvez aussi vérifier si c3p0 n'a pas quelque chose de construit.
c'est à partir du haut de ma tête. Je n'ai pas vraiment un problème, mais je ne l'ai pas utilisé dans la production 😉
Je ne pense pas que c'est une bonne idée de définir certaines propriétés dans votre base de données dans un environnement multithread :S
Je n'ai pas compris votre commentaire. Je pense que la requête définit le fuseau horaire par raccordement, à l'échelle mondiale (du moins c'est ce que l'article prétend qu')
quelles sont vos préoccupations à ce sujet? Je suis en affirmant que lors de travaux avec les colonnes de type timestamp, MySQL ne va pas changer ma date en raison des fuseaux horaires différents. Pensant que MySQL va toujours être démarré à l'heure UTC.
OriginalL'auteur Bozho
Vous devriez être en mesure de mettre les mêmes instructions SQL dans le initConnectionSqls propriété du DBCP élément de configuration. Il suffit d'ajouter ce pour le DBCP configuration de l'élément
Selon votre version de DBCP, vous pourriez avoir à utiliser connectionInitSqls comme le nom de la propriété. Cette information est directement à partir de DBCP de configuration de la documentation.
OriginalL'auteur Chandranshu
L'une des solutions possibles:
OriginalL'auteur Julia Shevchuk
Il n'y a pas de "sessionTimeZone" membre de la BasicDataSource. Utilisation C3P0, qui est un "mieux" pool de connexions que le DBCP, ou encore mieux, si vous êtes dans une Java EE web server, l'utiliser pour initialiser une datasource JNDI 😉
Curieusement, il n'y a pas de sessionTimeZone ou équivalent membre de C3P0 Sources de données, soit...
OriginalL'auteur Vincent Devillers