0

我正在研究需要在weblogicjboss上都可部署的项目。我从来源编译了wildfly 。现在,我正在尝试使用命名来获取数据源。应用程序在JBOSS EAP 6.1上运行良好,我可以使用以下代码获取数据源引用,javax.sql.DataSource但现在在widlfly中

dataSource = (javax.sql.DataSource) context.lookup("datasource");

它抛出异常

java.lang.ClassCastException:org.jboss.jca.adapters.jdbc.WrapperDataSource 无法转换为 javax.sql.DataSource

如果我尝试使用以下代码,

Object obj = context.lookup("datasource");
dataSource = (javax.sql.DataSource) obj;

它不会抛出上述异常,而是使用数据源,它会抛出异常

引起:java.lang.IncompatibleClassChangeError: Class org.jboss.jca.adapters.jdbc.WrapperDataSource 没有实现请求的接口 javax.sql.DataSource

但是,查看类的代码,我们可以看到它实现了javax.sql.DataSource

谁能告诉我如何使用强制转换WrapperDataSource或获取返回为javax.sql.DataSource.

服务器信息:

调用“C:\wildfly-8.0.0.Beta2-SNAPSHOT\bin\standalone.conf.bat”
将 JAVA 属性设置为“C:\Progra~2\Java\jdk1.7.0_40\bin\java”
==================================================== ==============================

  JBoss 引导环境

  JBOSS_HOME: "C:\wildfly-8.0.0.Beta2-SNAPSHOT"

  JAVA: "C:\Progra~2\Java\jdk1.7.0_40\bin\java"

==================================================== ==============================

在地址监听传输 dt_socket:8787
16:04:19,731 INFO [org.jboss.modules](主要)JBoss 模块版本 1.3.0.Final
16:04:19,903 INFO [org.jboss.msc](主要)JBoss MSC 版本 1.2.0.Beta2
16:04:19,997 INFO [org.jboss.as](MSC 服务线程 1-6)JBAS015899:WildFly 8.0.0.Beta2-SNAPSHOT “WildFly”开始
16:04:21,138 INFO [org.jboss.as.server](控制器引导线程)​​JBAS015888:使用套接字绑定 (management-http) 创建 http 管理服务
16:04:21,138 INFO [org.xnio](MSC 服务线程 1-1)XNIO 版本 3.1.0.CR7
16:04:21,153 INFO [org.xnio.nio](MSC 服务线程 1-1)XNIO NIO 实施版本 3.1.0.CR7
16:04:21,309 INFO [org.jboss.remoting](MSC 服务线程 1-1)JBoss Remoting 版本 4.0.0.Beta1
16:04:21,341 INFO [org.jboss.as.webservices](ServerService 线程池 -- 50)JBAS015537:激活 WebServices 扩展
16:04:21,356 INFO [org.jboss.as.security](ServerService 线程池 -- 46)JBAS013171:激活安全子系统
16:04:21,372 INFO [org.jboss.as.security](MSC 服务线程 1-8)JBAS013170:当前 PicketBox 版本=4.0.19.Final
16:04:21,388 INFO [org.jboss.as.naming](ServerService 线程池 -- 41)JBAS011800:激活命名子系统
16:04:21,388 INFO [org.jboss.as.clustering.infinispan](ServerService 线程池 -- 33)JBAS010280:激活 Infinispan 子系统。
16:04:21,388 INFO [org.wildfly.extension.undertow](MSC 服务线程 1-3)JBAS017502:Undertow 1.0.0.Beta18 开始
16:04:21,403 INFO [org.wildfly.extension.undertow](ServerService 线程池 -- 49)JBAS017502:Undertow 1.0.0.Beta18 开始
16:04:21,403 INFO [org.jboss.as.jsf](ServerService 线程池 -- 39)JBAS012605:激活了以下 JSF 实现:[main]
16:04:21,419 INFO [org.jboss.as.connector.logging](MSC 服务线程 1-7)JBAS010408:启动 JCA 子系统(IronJacamar 1.1.0.Final)
16:04:21,450 INFO [org.jboss.as.naming](MSC 服务线程 1-3)JBAS011802:启动命名服务
16:04:21,466 INFO [org.jboss.as.mail.extension](MSC 服务线程 1-7)JBAS015400:绑定邮件会话 [java:jboss/mail/Default]
16:04:21,466 INFO [org.jboss.as.connector.subsystems.datasources](ServerService 线程池 -- 28)JBAS010403:部署符合 JDBC 的驱动程序类 org.h2.Driver(1.3 版)
16:04:21,481 INFO [org.jboss.as.connector.deployers.jdbc](MSC 服务线程 1-3)JBAS010417:使用驱动程序名称 = h2 启动驱动程序服务
16:04:21,559 INFO [org.wildfly.extension.undertow](ServerService 线程池 -- 49)JBAS017527:为路径 C:\wildfly-8.0.0.Beta2-SNAPSHOT/welcome-content 创建文件处理程序
16:04:21,700 INFO [org.wildfly.extension.undertow](MSC 服务线程 1-6)JBAS017525:启动服务器默认服务器。
16:04:21,700 INFO [org.wildfly.extension.undertow](MSC 服务线程 1-4)JBAS017531:主机默认主机启动
16:04:21,763 INFO [org.wildfly.extension.undertow](MSC 服务线程 1-6)JBAS017519:Undertow HTTP 侦听器默认侦听 localhost/127.0.0.1:8080
16:04:21,841 INFO [org.jboss.as.connector.subsystems.datasources](ServerService 线程池 -- 28)JBAS010403:部署符合 JDBC 的驱动程序类 com.ibm.db2.jcc.DB2Driver(版本 3.57)
16:04:21,841 INFO [org.jboss.as.connector.deployers.jdbc](MSC 服务线程 1-1)JBAS010417:使用驱动程序名称 = DB2Driver 启动驱动程序服务
16:04:22,091 INFO [org.jboss.as.server.deployment.scanner](MSC 服务线程 1-5)JBAS015012:为目录 C:\wildfly-8.0.0.Beta2-SNAPSHOT\standalone\deployments 启动 FileSystemDeploymentService
16:04:22,091 INFO [org.jboss.as.remoting](MSC 服务线程 1-1)JBAS017100:监听 127.0.0.1:9999
16:04:22,122 INFO [org.jboss.ws.common.management](MSC 服务线程 1-6)JBWS022052:启动 JBoss Web 服务 - 堆栈 CXF 服务器 4.2.1.Final
16:04:22,122 INFO [org.jboss.as.connector.subsystems.datasources](MSC 服务线程 1-8)JBAS010400:绑定数据源 [java:jboss/datasources/ExampleDS]
16:04:22,122 INFO [org.jboss.as.connector.subsystems.datasources](MSC 服务线程 1-4)JBAS010400:绑定数据源 [java:/rapiddb]
16:04:22,247 INFO [org.jboss.as](控制器引导线程)​​JBAS015961:在 http://127.0.0.1:9990/management 上监听的 Http 管理接口
16:04:22,247 INFO [org.jboss.as](控制器引导线程)​​JBAS015951:管理控制台监听 http://127.0.0.1:9990
16:04:22,247 INFO [org.jboss.as](控制器引导线程)​​JBAS015874:WildFly 8.0.0.Beta2-SNAPSHOT “WildFly”在 2828 毫秒内启动 - 启动了 223 个服务中的 186 个(62 个服务是惰性的、被动的或开启的)要求)
4

2 回答 2

2

我认为这与您在服务器上的数据源中配置 JDBC 驱动程序的方式有关,或者您是否在包中提供了另一个与您使用的实际驱动程序发生冲突的驱动程序。

可以在https://community.jboss.org/message/250795找到类似的错误

如果这不起作用,还请发布您遇到问题的服务器版本。只是为了确保您不会受到服务器上固定数据源补丁的影响。

于 2013-10-24T07:36:06.203 回答
1

我在 WildFly 论坛 ( WildFly Thread ) 上发布了这个问题,发现还有另一个包含javax.sql.DataSource接口的 jar。

我使用一个名为 jarscan.jar 的实用程序来搜索我的模块中的接口,发现一个 jar 包含另一个javax.sql.DataSource类。删除 jar 表单模块解决了该问题。

于 2013-10-25T07:09:31.590 回答