gpt4 book ai didi

sql-server - 在 JBoss 上为 XA 连接设置集成安全性

转载 作者:行者123 更新时间:2023-12-04 05:05:34 24 4
gpt4 key购买 nike

将 JBoss 上 XA 数据源中的 IntegratedSecurity 设置为 true 时,Microsoft 的 JDBC 驱动程序不会将“true”设置解析为 bool 值,但会引发错误:

java.lang.NoSuchMethodException:
com.microsoft.sqlserver.jdbc.SQLServerXADataSource.setIntegratedSecurity(java.lang.String)

这只是使用 XA 数据源时的问题,非 XA 数据源在集成安全性的情况下正常工作。

是否有其他方法可以为 JBoss 上的 XA 连接设置集成安全性,或者在设置 xa-datasource-property 时告诉它发送 bool 值的方法?

要重现此行为:

a) 在 JBoss AS 配置\standalone\standalone.xml 中添加一个新的 xa-datasource 到 JNDI:
<xa-datasource jta="true" jndi-name="java:jboss/datasources/jndiName" pool-name="poolName" enabled="true" use-java-context="true" use-ccm="true">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
MyDbName
</xa-datasource-property>
<xa-datasource-property name="SelectMethod">
cursor
</xa-datasource-property>
<!-- this should work but doesn't -->
<xa-datasource-property name="IntegratedSecurity">
true
</xa-datasource-property>
<xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
<driver>sqljdbc</driver>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
</validation>
</xa-datasource>

b) 重启 JBoss AS

c) 尝试使用配置的 JNDI 连接执行查询:
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:jboss/datasources/jndiName");
Connection conn = null;
try {
conn = ds.getConnection();

// try to execute something
CallableStatement stmt = conn.prepareCall("{? = call some_stored_procedure()}");
stmt.execute();
} finally {
if (conn != null)
conn.close();
}

执行此代码将导致异常说明:
java.lang.NoSuchMethodException: 
com.microsoft.sqlserver.jdbc.SQLServerXADataSource.setIntegratedSecurity(java.lang.String)

最佳答案

我也遇到过这个问题,但是如果我使用 URL xa-datasource-property,我能够让它工作。

示例:

<xa-datasource-property name="URL">jdbc:sqlserver://<host>:<port>;database=<db>;integratedSecurity=true</xa-datasource-property>  

需要删除这些片段:
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
MyDbName
</xa-datasource-property>
<xa-datasource-property name="SelectMethod">
cursor
</xa-datasource-property>
<!-- this should work but doesn't -->
<xa-datasource-property name="IntegratedSecurity">
true
</xa-datasource-property>

关于sql-server - 在 JBoss 上为 XA 连接设置集成安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com