Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme de validation par DTD avec Hibernate, Spring et Tomcat

1 réponse
Avatar
cfranco
Bonjour à tous,

Je travaille sur un projet qui utilise Spring, Hibernate, et tourne dans
Tomcat.

La validation par DTD des fichiers .hbm.xml (fichiers de mapping de
Hibernate) pose des problèmes. Initialement, nous utilisions l'URL de la
DTD située sur le site de Hibernate. Mais ceci est une mauvaise méthode
car d'une part cela ralentit le build (la DTD est téléchargée pour
chaque fichier HBM, ce qui en soi est déjà lent, et dès que la connexion
internet ralentit cela multiplie facilement par 3 ou 4 le temps de
build). En outre, en cas d'indisponibilité du site de Hibernate pour une
raison ou pour une autre, le build ne fonctionne plus, ni l'execution du
logiciel.

Une solution que nous avions trouvée, puisqu'il faut une URL absolue
pour la DTD, est de placer la DTD dans une autre application déployée
sur le même serveur Tomcat, où l'on accède par
"http://localhost:8080/dtd/hibernate-xxx.dtd". Mais cette méthode ne
résiste pas à un redémarrage du serveur Tomcat : il ne peut pas déployer
notre application car avant la fin du démarrage les autres applications
déployées ne sont pas encore disponibles, on a donc un gros problème de
bootstrap.

Quelqu'un saurait-il s'il y a une solution pour désactiver la validaiton
par DTD des fichiers .hbm.xml ? J'ai cherché partout dans la doc des
classes de support Hibernate de Spring, mais je n'ai rien trouvé de tel.

--
Christophe Franco

1 réponse

Avatar
cfranco
Christophe Franco wrote:

Bonjour à tous,

Je travaille sur un projet qui utilise Spring, Hibernate, et tourne dans
Tomcat.

La validation par DTD des fichiers .hbm.xml (fichiers de mapping de
Hibernate) pose des problèmes. Initialement, nous utilisions l'URL de la
DTD située sur le site de Hibernate. Mais ceci est une mauvaise méthode
car d'une part cela ralentit le build (la DTD est téléchargée pour
chaque fichier HBM, ce qui en soi est déjà lent, et dès que la connexion
internet ralentit cela multiplie facilement par 3 ou 4 le temps de
build). En outre, en cas d'indisponibilité du site de Hibernate pour une
raison ou pour une autre, le build ne fonctionne plus, ni l'execution du
logiciel.


Bon, entre temps, en recherchant avec un collègue, on a finalement
compris qu'il y avait un problème chez nous : les fichiers HBM
indiquaient encore l'adresse de la DTD de Hibernate 2, alors qu'on est
passés à Hibernate 3. Résultat, Hibernate allait chercher la DTD sur le
web plutôt que de la prendre dans le JAR. Une fois la DTD corrigée pour
pointer sur l'URL de la DTD d'Hibernate 3, il peut la prendre
directement en local dans le JAR d'Hibernate 3, ce qui est plus rapide.

--
Christophe Franco