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

Eu tenho 2 aplicativos da web java que precisam se conectar ao banco de dados do SQL Server usando a autenticação integrada do Windows.

O primeiro que é carregado funciona bem, mas o segundo lança a exceção:

Native Library sqljdbc_auth.dll already loaded in another classloader

O erro acima ocorre quando eu coloco o sqljdbc_auth.dll em uma das pastas:

C: \ WINDOWS \ system32 \ C: \ Arquivos de Programas \ Apache Software Foundation \ Tomcat 7.0 \ bin \ Se eu colocar o sqljdbc_auth.dll em uma das pastas abaixo:/ WEB-INF / lib diretório de cada aplicativo da web

C: \ Arquivos de Programas \ Apache Software Foundation \ Tomcat 7.0 \ lib \ Ambos os apps lançam a exceção:

Eu estou usando este código para carregar o driver:Como posso resolver isso?

Cada aplicativo da 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) - assim, ambos os aplicativos da web estão tentando carregar a biblioteca compartilhada, daí a mensagem de erro quando o segundo tenta carregar.

Failed to load the sqljdbc_auth.dll cause :- no sqljdbc_auth in java.library.path

O jar JDBC que você tem para sqlserver deve ser movido de ser empacotado com suas guerras, para o

Class.forName("jdbc:sqlserver://<HOST>;databaseName=<DBNAME>;integratedSecurity=true;");

 pasta e copie o sqljdbc_auth.dll para a pasta tomcat / bin - dessa forma, ele estará no carregador de classes pai do tomcat e a classe será carregada apenas uma vez.

questionAnswers(3)

yourAnswerToTheQuestion