我正在开发一个在Linux / WebLogic上运行的Java项目,该项目需要与仅允许通过Windows域帐户进行身份验证的现有SQL Server实例集成。我见过.Net应用程序使用模拟来连接并运行查询作为具有权限的域帐户。
使用Java有同样的方法吗?
答案 0 :(得分:0)
虽然这个问题与潜在的重复问题密切相关,但我会发布我的答案,希望将来对某人有所帮助。
我们所做的是定义一个非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。