gpt4 book ai didi

java - JBoss 中的数据源未选择正确的类

转载 作者:行者123 更新时间:2023-12-02 09:12:43 24 4
gpt4 key购买 nike

我在使用 JBoss EAP 6.0 时遇到一个非常奇怪的问题

问题基本上是我已经配置了standalone.xml中的数据源

            <datasource jndi-name="java:jboss/jdbc/ejb/testconn" pool-name="test-cluster-Pool" enabled="true" use-java-context="true">
<connection-url>jdbc:sqlserver://127.0.0.1:1433;databaseName=testdb;</connection-url>
<driver>sqlserver-jdbc</driver>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>

这是驱动程序的配置,我已经安装了与模块相同的:

            <drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="sqlserver-jdbc" module="com.himanshu.jdbc">
<datasource-class>com.himanshu.jdbcdriver.datasource.DataSource</datasource-class>
</driver>
</drivers>

com.himanshu.jdbcdriver.datasource.DataSource 类基本上扩展了 com.microsoft.sqlserver.jdbc.SQLServerDataSource:

但是当我运行测试时,我可以得出结论,它没有使用我提到的数据源类。因为对于这两种方法来说,

@Override
public Connection getConnection() throws SQLServerException {
System.out.println("TRYING TO GET CONNECTION");
return null;
}

@Override
public Connection getConnection(String arg0, String arg1)
throws SQLServerException {
System.out.println("TRYING TO GET CONNECTION");
return null;
}

所以理想情况下连接应该返回 null,但是连接既没有返回为 null,也没有打印出这些 SOP,所以无法理解我实际上错在哪里。

module.xml 是这样的:

<module xmlns="urn:jboss:module:1.1" name="com.himanshu.jdbc">

<resources>
<resource-root path="custom-datasource-jar-with-dependencies.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>

更新:

事实证明这是 JBOSS 中的一个错误: https://issues.jboss.org/browse/JBJCA-1014

最佳答案

Jboss通过自己实例化数据源,使用的类加载器不知道您的应用程序类,这就是为什么您在配置驱动程序时需要在jboss模块目录中提供驱动程序实现。
因此您的类不可见到jboss,加载数据源时无法使用它。除非您将其添加到 jboss 模块目录中的特定 jar 中

参见http://magnus-k-karlsson.blogspot.fr/2012/08/how-to-install-mysql-datasource-on.html 。从 jboss 中的模块配置数据源。关心命名。

关于java - JBoss 中的数据源未选择正确的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494400/

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