我想为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
??
答案 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/