div*_*hna 5 java sql-server tomcat
我正在尝试通过 Java Web 应用程序连接 MS SQL 服务器。
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection= DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=XXX;integratedSecurity=true");
Run Code Online (Sandbox Code Playgroud)
我已将“sqljdbc_auth.dll”复制到 $Tomcat_home/bin 并将 jar 复制到 $Tomcat_home/lib 文件夹中。
我在同一个 tomcat 实例中有多个 Web 应用程序。
第一个 webApp 加载并成功建立与 MS SQL 的连接。
但是其余的应用程序无法连接到 MS SQL 提示:
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:41d72756-1383-427e-8c4f-c3075ae1559a
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2400)
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:68)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3132)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43)
Run Code Online (Sandbox Code Playgroud)
注意: Tomcat 作为 Windows 服务运行。并且 MSSQL 配置为 Windows 身份验证。
编辑:我知道本机库 (DLL) 只能加载到 JVM 中一次,因此出现错误,但我环顾网络后仍然没有解决方案。
JDBC 驱动程序通过 IntegratedSecurity 连接字符串属性支持在 Windows 操作系统上使用类型 2 集成身份验证。要使用集成身份验证,请将sqljdbc_auth.dll文件复制到安装 JDBC 驱动程序的计算机上的 Windows 系统路径上的目录。
或者,您可以设置java.libary.path系统属性来指定sqljdbc_auth.dll. 例如,如果 JDBC 驱动程序安装在默认目录中,则可以在启动 Java 应用程序时使用以下虚拟机 (VM) 参数指定 DLL 的位置:
-Djava.library.path=c:/sqljdbc_<version>/enu/auth/x86
Run Code Online (Sandbox Code Playgroud)
或者
-Djava.library.path=c:/sqljdbc_<version>/enu/auth/x64
Run Code Online (Sandbox Code Playgroud)
请阅读原始文档中的更多信息: https://learn.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url ?view=sql-server-2017
| 归档时间: |
|
| 查看次数: |
9296 次 |
| 最近记录: |