休眠无法转换为oracle.sql.BLOB

时间:2018-11-02 20:54:59

标签: java hibernate jboss classcastexception

我正在使用JBoss 7,jdk 1.7u191,休眠3.6。

我有一段代码,用户尝试将文件附加到电子邮件,附件被放入Blob中,而炸毁的部分就是这个。

public void setFileBlob(Blob fileBlob) {
    Blob tmpBlob = fileBlob;
    this.fileBlob = (BLOB)tmpBlob;        
}

java.lang.ClassCastException:com.sun.proxy。$ Proxy369无法转换为oracle.sql.BLOB

引发该错误的行是“ this.fileBlob = ...” Blob来自java.sql.Blob的更高层导入,而BLOB是oracle.sql.BLOB。

因此,我正在寻找帮助解决此问题的建议,因为这感觉像是一个奇怪的类加载器问题。一些重要的背景。

  1. 我100%确保了类路径中没有多余的ojdbc * .jar文件。只有1。
  2. 在JBoss 6下,此代码运行良好。相同的代码在JBoss 7中不起作用。
  3. 这是用于负载平衡的应用程序,因此我有多个JBoss,所有的JBoss都具有100%相同的代码/安装(我们的安装和Java均通过软件包管理器完成)。我有8个JBoss中有2个因此错误而失败。其他六个似乎正在运行,我可以直接登录到一个JBoss,它将重复运行,而另一个将失败。
  4. 我对正在运行的服务器进行了压缩,然后将其复制到测试服务器,并将其与不运行的服务器进行了比较。他们是一样的。实际上,我用工作正常的tarball启动了它,但在另一台服务器上却不工作。
  5. 出于完整性考虑,我还比较了每个系统上的java安装和软件包都是相同的。

因此,我倾向于处理类加载器问题,在该问题中,基于Jboss出现时以什么顺序加载的内容将决定它是否起作用。但是我对要检查什么的想法不多了,将不胜感激建议。 thx-卡尔

0 个答案:

没有答案