在wildfly 8中使用apache commons BasicDataSource

时间:2015-07-06 10:27:52

标签: java apache tomcat datasource wildfly-8

我想为BasicDataSource使用apache commons库来创建连接池。使用apache tomcat 8服务器它可以正常工作,但是当我尝试使用wildfly 8时,我得到以下异常:

  

java.lang.ClassCastException:org.jboss.jca.adapters.jdbc.WrapperDataSource无法强制转换为org.apache.commons.dbcp2.BasicDataSource

获取数据源的方法是在lookup对象中执行InitialContext。此函数根据使用的服务器类型返回数据源类。在tomcat中它返回BasicDataSource但在WildFly中它返回WrapperDataSource,显然无法将其转换为BasicDataSource。我尝试从野生蝇管理中更改DataSource class,但问题仍然存在,我感到茫然。是否无法更改lookup返回的对象类型?有没有办法让WrapperDataSource成为BasicDataSource ??

1 个答案:

答案 0 :(得分:0)

我之前说过我从未使用过这个,我不确定为什么要使用与Wildfly不同的连接池和数据源提供程序,但Wildfly< datasource>确实提供了< datasource-class>您可以设想配置为使用BasicDataSource的属性。

我做了一个快速搜索,发现了这个:https://developer.jboss.org/thread/203514?tstart=0

对于JBoss AS 7.1.1,这应该可以为Wildfly工作。

<datasource jta="false" jndi-name="java:jboss/datasources/MyDS" pool-name="MyDataSource" enabled="true" use-ccm="false">
    <connection-url>jdbc:mysql://localhost/xxx</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <datasource-class>org.apache.commons.dbcp.BasicDataSource</datasource-class>
    <driver>custom.mysql</driver>
    <security>
        <user-name>xxx</user-name>
        <password>xxx</password>
    </security>
</datasource>

那就是说,我尝试配置上面指定的数据源(驱动程序模块,在本例中为mysql,必须知道这些apache commons JAR资源,我的第一次尝试产生了一个ClassDefNotFound),然后引用它们使用WildFly 8.1.0最终版进行快速测试:

InitialContext initCtx = null;
DataSource ds = null;
initCtx = new InitialContext();
ds = (DataSource) initCtx.lookup("java:jboss/datasources/MyDS"); 
Connection conn = ds.getConnection();

这导致了一个&#39;&#39;确实是BasicDataSource的对象(没有类强制转换异常),但是在下一行我得到了以下异常:

Caused by: java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1062)
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:308)
... 45 more

所以也许这可以帮助你更进一步。我会检查Wildfly文档有关为不同的jdbc驱动程序配置模块以及如何配置数据源的一般情况,也许您根本不需要使用commons库: https://docs.jboss.org/author/display/WFLY8/DataSource+configuration https://sheemoul.wordpress.com/2014/06/17/configure-mysql-datasource-in-wildfly-8-0/