繁体   English   中英

java.lang.AbstractMethodError:org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5.createBlob()Ljava / sql / Blob;

[英]java.lang.AbstractMethodError: org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5.createBlob()Ljava/sql/Blob;

我有一个问题,我在JBoss 5.1.0.GA上托管了一个Web应用程序,并且在其中使用Oracle11g作为数据库服务器。

当尝试使用PreparedStatement将Blob存储在表DB的字段中时,出现此错误

java.lang.AbstractMethodError: org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5.createBlob()Ljava/sql/Blob;

排队

Blob bl = pstmt.getConnection().createBlob();

我使用的代码是这样,bob是一个byte []:

 if (this.conexion.isOracle()) {
        Blob bl = pstmt.getConnection().createBlob();
        bl.setBytes(1,bob);
        pstmt.setBlob(indice++, bl);

    } else {
        pstmt.setBytes(indice++, bob);
    }

在Jboss中,我有ojdbc6.jar驱动程序,并且代码也使用该jar进行编译。 我的计算机上安装的jdk版本是1.6.0_32

您知道什么可能导致此错误吗? 您可能与使用该版本的JBoss有关?

因为引用错误的类在org.jboss.jbossas jar中:jboss-as-connector:5.1.0.GA:jar,但是在服务器内部则没有。

我进行的测试是jar的descargarme版本6.1,如果它包含createBlob方法的实现,并且我进入JBoss,但错误仍然相同。

非常感谢,问候,

您至少需要JDK 1.6才能运行JBOSS,还需要最新版本的ojdbc6.jar(Oracle JDBC驱动程序)。

JBoss使用jdbc包装器类,该包装器类在发行版中是为JDK5编写的,并非所有方法都已实现(我怀疑是因为JDK5仍然是JDBC3,而JDK6是JDBC4)。

有一个更新的jboss-common-jdbc-wrapper-4.2.3.GA.jar(例如,来自公共Maven存储库)可实现JDK6的包装并实现方法(与国家字符集有关)。

因此,您必须从maven下载“较新的”包装器类,并替换服务器分发中的相应jar。

编辑1-使用正确的服务器构建风格(jdk6)

在JDK5过时和JDK6发布期间,每台JBoss服务器都以两种方式构建:普通的和-jdk6两种。 因此,最简单的解决方案是下载jdk6版本并保持这种风格,而无需修补。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM