Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Native Library sqljdbc_auth.dll bereits in einem anderen Classloader geladen

Jede Webanwendung hat ihren eigenen Classloader (der sie isoliert). Wenn Sie die Class.forName()-Methode aufrufen, gibt es einen statischen Block, der versucht, die gemeinsam genutzte Bibliothek (DLL-Datei) zu laden. Ihre beiden Web-Apps versuchen also, die gemeinsam genutzte Bibliothek zu laden, daher die Fehlermeldung bei der zweiten versucht zu laden.

Das JDBC-JAR, das Sie für sqlserver haben, sollte nicht mehr mit Ihren Wars gebündelt sein, sondern auf tomcat 7.0/lib verschoben werden Ordner und kopieren Sie die sqljdbc_auth.dll in den Ordner tomcat/bin - auf diese Weise befindet sie sich im übergeordneten Classloader von Tomcat und die Klasse wird nur einmal geladen.

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