Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Biblioteca nativa sqljdbc_auth.dll já carregada em outro carregador de classe


Cada aplicação web tem seu próprio Classloader (isolando-os). Quando você chama o método Class.forName(), há um bloco estático que está tentando carregar a biblioteca compartilhada (arquivo dll) - portanto, ambos os aplicativos da Web estão tentando carregar a biblioteca compartilhada, daí a mensagem de erro quando a segunda tenta carregar.

O jar JDBC que você tem para o sqlserver deve ser movido do pacote com seus wars para o tomcat 7.0/lib e copie o sqljdbc_auth.dll para a pasta tomcat/bin - desta forma ele estará no carregador de classe pai do tomcat, e a classe será carregada apenas uma vez.
|----------------------------------|
| sqljdbc*.jar     --> tomcat*/lib |
|----------------------------------|
| sqljdbc_auth.dll --> tomcat*/bin |
|----------------------------------|