[我通过kerberos身份验证与MSSQL数据库建立了Windows集成连接。此外,我正在对SSO使用华夫过滤器。
此连接使用jtds1.3.1.jar文件。 SSO需要ntlmauth.dll。我正在使用tomcat作为我的应用程序服务器。
但是,我注意到这仅适用于一次部署的一个Web应用程序。如果我对多个Web应用程序具有相同的设置,则除了一个之外,所有都将失败。这是很奇怪的行为。知道这里发生了什么
对不起。我在下面的另一篇文章中找到了解决方案是链接
https://stackoverflow.com/a/10645025/3890202
每个Web应用程序都有其自己的Classloader(将其隔离)。当您调用Class.forName()方法时,有一个静态块正在尝试加载共享库(dll文件)-因此两个Web应用程序都试图加载共享库,因此在第二个加载时出现错误消息尝试加载。
JDBC jar即jtds1.3.1.jar应该从与战争捆绑在一起的位置移到tomcat 7.0 / lib文件夹,并将ntlmauth.dll复制到tomcat / bin文件夹-这样,它将在tomcat父类加载器中,并且该类将仅加载一次。