Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss中的数据源未选择正确的类_Java_Jboss_Jboss6.x - Fatal编程技术网

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

Java JBoss中的数据源未选择正确的类,java,jboss,jboss6.x,Java,Jboss,Jboss6.x,我在使用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:s

我在使用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>
因此理想情况下,连接应该返回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中的一个bug:
Jboss InstanceBy是自己的数据源,使用的类加载器不知道您的应用程序类,这就是为什么在配置驱动程序时需要在Jboss模块目录中提供驱动程序实现。
因此Jboss看不到您的类,并且在加载数据源时无法使用它。除非您将其添加到jboss模块目录中的特定jar中


看。从jboss中的模块配置数据源。注意命名。

如果您查看此处的配置,我只将其作为模块安装:com.himanshu.jdbcdriver.datasource.datasource我已将其作为模块安装。我甚至可以从DB进行查询,但它使用的是SQLJDBC4.jar的类,我已经对这些类进行了扩展。您是否在$JBOSS_HOME/modules/com/himanshu/jdbc中提供了打包在jar中的类?与原始驱动程序impl相同?是否在module.xml中添加了对原始驱动程序的显式依赖项?你能提供这个文件的内容吗?另一个解决方案是通过在里面添加你的类来修改原来的驱动程序jar,避免添加2个模块。不管怎么说,这有点脏。是的,我实际做的是使用maven目标导入sqljdbc4.jar的所有类。因此,在我的jar中,我有我的自定义数据源以及SQLJDBC4.jar的所有类,文件中的META-INF/service/java.sql.driver中也提到了驱动程序类名。如果你愿意,我可以共享源代码,请告知。我没有时间设置环境(当前为@work),只需发布问题中的module.xml内容即可
@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;
}
<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>