[英]java.lang.AbstractMethodError: org.jboss.arquillian.config.descriptor.impl.EngineDefImpl.getDeploymentExportExploded()Ljava/lang/Boolean;
[英]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.