Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Libreria nativa sqljdbc_auth.dll già caricata in un altro classloader

Ogni applicazione web ha il proprio Classloader (isolandoli). Quando chiami il metodo Class.forName(), c'è un blocco statico che sta tentando di caricare la libreria condivisa (file dll), quindi entrambe le tue app Web stanno tentando di caricare la lib condivisa, da qui il messaggio di errore quando la seconda tenta di caricare.

Il jar JDBC che hai per sqlserver dovrebbe essere spostato dall'essere in bundle con le tue wars a tomcat 7.0/lib cartella e copia sqljdbc_auth.dll nella cartella tomcat/bin:in questo modo sarà nel classloader padre di Tomcat e la classe verrà caricata solo una volta.

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