我有两个Web应用程序需要在Tomcat 6,MS SQL 2008和JTDS-1.2.2上作为驱动程序运行。
如果我只启动一个Web应用程序,一切正常,但是一旦我启动第二个,我就会收到以下错误(订单无关紧要):
java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library
当然,图书馆ntlmauth.dll
位于C:\WINDOWS\system32
似乎启动的第二个应用程序无法找到单个登录的ntlmauth.dll
。
答案 0 :(得分:18)
我通过更改
中的网址来解决这个问题jdbc:jtds:sqlserver://host_server:1433/Database_name
到
jdbc:jtds:sqlserver://host_server:1433/Database_name;user=XXX;password=YYY
显然,“当URL [不]包含用户和密码属性时,系统使用Windows身份验证方法,并且出现”未找到SSPI本机库“错误。”
答案 1 :(得分:17)
这是解决方案:
下载jTDS driver,将其解压缩,然后将x86\SSO\ntlmauth.dll
复制到jdk\jre\bin
。
这可以解决您的问题。
修改强>
如果没有安装JDK,我的路径是C:\Program Files\Java\jre7\bin\ntlmauth.dll
jTDS必须能够加载本机SPPI库(ntlmauth.dll)。将此DLL放在系统路径中的任何位置(由PATH系统变量定义)并且您已完成设置。
答案 2 :(得分:2)
如果您尝试在使用JTDS驱动程序和Windows身份验证访问SQL Server的同一服务器上运行两个(或更多)Tomcat应用程序,那么Chris White提供的非常有用的答案是here。< / p>
Chris的答案与sqljdbc_auth.dll有关,但JTDS驱动程序和ntlmauth.dll的建议相同:
tomcat 7.0\bin
目录。实际上,我相信您可以将ntlmauth.dll放入系统路径或Java jre\bin
目录中的任何目录。Tomcat\lib
目录中,Tomcat将加载该副本并将其提供给所有应用程序。答案 3 :(得分:2)
如果你在64位窗口但运行32位java(程序文件x86中的那个),那么你需要32位ntlmauth dll而不是你可能期望的64位。