我正在开发一个在 Linux/WebLogic 上运行的 Java 项目,该项目需要与仅允许通过 Windows 域帐户进行身份验证的现有 SQL Server 实例集成。我见过 .Net 应用程序使用模拟来连接和运行查询作为具有权限的域帐户。
有没有一种等效的方法可以用 Java 做到这一点?
我正在开发一个在 Linux/WebLogic 上运行的 Java 项目,该项目需要与仅允许通过 Windows 域帐户进行身份验证的现有 SQL Server 实例集成。我见过 .Net 应用程序使用模拟来连接和运行查询作为具有权限的域帐户。
有没有一种等效的方法可以用 Java 做到这一点?
虽然这个问题与潜在的重复问题密切相关,但我将发布我的答案,希望它对将来的某人有所帮助。
我们所做的是定义一个非 jndi 数据源:
<bean id="nonJndiDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driver" value="net.sourceforge.jtds.jdbcx.JtdsDataSource"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
<property name="initialSize" value="${initial_size}"/>
<property name="maxActive" value="${max_active}"/>
<property name="maxWait" value="${max_wait}"/>
<property name="minIdle" value="${min_idle}"/>
<property name="maxIdle" value="${max_idle}"/>
</bean>
使用以下属性文件(设置 bean 中的值):
# Hibernate specific property
dialect=org.hibernate.dialect.SQLServer2008Dialect
# This is the key line
url=jdbc:jtds:sqlserver://127.0.0.1;databaseName=yourDatabase;useNTLMv2=true;domain=nameOfDomain
user=windows_account
password=password
initial_size=5
max_active=30
max_wait=600000
min_idle=0
max_idle=10
然后可以将其连接到 JDBC、Hibernate、JDBI 或其他一些基于 JDBC 的框架中。
这篇文章的一个问题是 jTDS 的版本。1.3 版需要 Java 7 - 我们最终拉取了 1.2.x 版的 jar。