Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Bibliothèque native sqljdbc_auth.dll déjà chargée dans un autre chargeur de classe

Chaque application Web a son propre Classloader (les isolant). Lorsque vous appelez la méthode Class.forName(), il y a un bloc statique qui essaie de charger la bibliothèque partagée (fichier dll) - donc vos deux applications Web essaient de charger la bibliothèque partagée, d'où le message d'erreur lorsque le second tentatives de chargement.

Le jar JDBC que vous avez pour sqlserver doit être déplacé de l'état groupé avec vos guerres vers le tomcat 7.0/lib dossier et copiez le sqljdbc_auth.dll dans le dossier tomcat/bin - de cette façon, il sera dans le chargeur de classe parent tomcat, et la classe ne sera chargée qu'une seule fois.

|----------------------------------|
| sqljdbc*.jar     --> tomcat*/lib |
|----------------------------------|
| sqljdbc_auth.dll --> tomcat*/bin |
|----------------------------------|