文档章节

weblogic 下异常 org.hibernate.QueryException

qhaiyan
 qhaiyan
发布于 2016/02/04 13:15
字数 669
阅读 54
收藏 2
点赞 1
评论 0

项目之前在 Tomcat 环境下一直都正常运行,今天应客户要求需要迁移到 webLogic 10.3.6 下, 部署后竟然抛出了 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken 异常,经过一番搜索后弄明白了问题的产生原因及解决方法。

问题原因

    Hibernate3 采用新的基于 antlr 的 HQL/SQL 查询翻译器,在 hibernate3 中需要用到 antlr,然而这个包在 weblogic 中已经包含了 antrl 类库,所以会产生一些类加载的错误,无法找到在 war 或 ear 中的 hibernate3.jar。

解决方案


方案一:修改 Hibernate 配置 hibernate.query.factory_class 设置其他查询翻译器

(1)使用 Hibernate3 的查询翻译器: 
    hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory

(2)使用 Hibernate2 的查询翻译器: 
    hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory

    说明:为了使用 Hibernate3 的批量更新和删除功能,只能选择(1),否则不能解释批量更新的语句,但使用(1)时查询条件不支持中文。如果使用(2),可以支持中文,但没法解释批量更新语句了


方案二:修改 weblogic 的类加载顺序

    在项目的 WEB-INF 目录下新建 weblogic.xml,然后将 <prefer-web-inf-classes> 的值设为 true。

<weblogic-web-app
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.3/weblogic-web-app.xsd">    
    <container-descriptor>
        <!--优先加载位于 Web 应用程序的 WEB-INF 目录中的类,然后再加载应用程序或系统类加载器中的类-->
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

    说明:如果刚好你的应用使用了 CXF 发布 webService,那么使用该方案后会出现 javax/xml/namespace/QName 无法识别的异常,大概错误信息如下:

Invocation of init method failed; nested exception is java.lang.LinkageError:   
  loader constraint violation: when resolving field "DATETIME" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader)   
  of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type,   
  javax/xml/namespace/QName, have different Class objects for that type

 该问题如何解决将在后面的方案三和方案四时提到。


方案三:设置 weblogic 的 PRE_CLASSPATH

    修改 %DOMAIN_HOME%/bin/setDomainEnv.cmd(Linux 为 setDomainEnv.sh),如:D:\Program\weblogic-10.3.6\mydomain\bin\setDomainEnv.cmd,在 set JAVA_HOME 的后面加上set PRE_CLASSPATH=path_of_antlr_jar,如:

set PRE_CLASSPATH=F:\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar


方案四:设置 prefer-application-resources 和 prefer-application-packages

    修改 WEB-INF/weblogic.xml,不多作说明,直接上代码(此处的 prefer-application-resources 是为了解决方案二中提到的 CXF 发布 webService 的问题):

<weblogic-web-app
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.3/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-resources>
            <resource-name>META-INF/services/javax.xml.ws.spi.Provider</resource-name>
        </prefer-application-resources>
        <prefer-application-packages>
            <package-name>antlr.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>

附:weblogic.xml 部署描述符参考文档

http://docs.oracle.com/cd/E24329_01/web.1211/e21049/weblogic_xml.htm
http://edocs.weblogicfans.net/wls/docs92/webapp/weblogic_xml.html

参考资料:
http://guojuanjun.blog.51cto.com/277646/288121
http://tobato.iteye.com/blog/1845969
http://stackoverflow.com/questions/2702266/classnotfoundexception-hqltoken-when-running-in-weblogic


本文转载自:http://blog.csdn.net/hemingwang0902/article/details/42913809

共有 人打赏支持
qhaiyan
粉丝 5
博文 108
码字总数 6553
作品 0
太原
程序员
ClassNotFoundException: org.hibernate.hql.ast.HqlToken

项目从TOMCAT7移到WEBLOGIC12C后,出现异常org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken; 网上查了一下,是因为hibernate3.0是基于antlr的HQL/S......

jizhan
07/03
0
0
解决替换weblogic的commons-fileupload.jar后引发的问题

上一篇博文中提到通过替换weblogic自带的commons-fileupload.jar来解决FileUpload类的NoSuchMethodError问题。在完成替换后,该问题得到顺利解决,但是也会引发其他的一些问题,下面提到的这...

彭苏云
2014/01/21
0
0
关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题

在部署微信公众号项目时,在本地TOMCAT测试通过后部署到WEBLOGIC上。抛出了weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection这样的错误。这段...

哥本哈根的小哥
05/10
0
0
Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法

Hibernate使用的文法分析器是antlr,WebLogic同样也是。 不少用户碰到ClassNotFoundException: org.hibernate.hql.ast.HqlToken的典型问题,这个典型问题已经通过配置weblogic.xml,要求Web...

山海经
2014/11/27
0
0
weblogic在ubuntu自动启动

不会写文,不会写shell,记忆力差得记下 前阵子 ubuntu server 64 上装了个 weblogic 12c,要添加个weblogic的服务。 下面的变量根据实际情况改改。 /etc/init.d/weblogic: #!/bin/sh MW_HOM...

POintMELOve
2012/12/21
0
0
weblogic oracle ArrayIndexOutOfBoundsException

在代码中使用PreparedStatement的prepareStatement(String sql, String columnNames[]) 方法时,抛出ArrayIndexOutOfBoundsException异常,之前在jetty和tomcat上都没有出现此类问题,但是部...

walala_Lee
2013/03/07
0
0
weblogic 控制台日志保存到文件

工作中遇到weblogic运行时出现异常,但控制台滚到导致无法查看异常信息.而在adminserver.log里面没有该异常信息打印. 经整理,可分别通过以下两种方法解决 一 、打开C:beauser_projectsdomains...

爬爬
2012/11/21
0
0
安装Weblogic开机自启动的脚本。以及普通用户weblogic的调用管理。

安装Weblogic开机自启动的脚本。以及普通用户weblogic的调用管理。 1:以root添加用户,创建BEA_BASE groupadd bea useradd -g bea -m weblogic mkdir /opt/bea chown bea.weblogic /opt/bea...

王宝林
2012/05/16
0
0
Weblogic11g for linux使用手册

Weblogic操作手册 For linux 1. 安装 为了管理上的方便和要求,由某一用户(组)管理weblogic及其衍生的应用。本文以weblogic用户为例,之后的安装及配置管理都在weblogic用户下进行。 1.1....

Deng小尧
2013/07/18
0
0
启动 WLS 时的身份验证错误(解决linux下问题)

故障排除 请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。 快速链接 为什么发生此问题? 启动身份无效(WLS 7.0 和 WLS 8.1) 内嵌的 LDAP:丢失管理密码(WLS...

傲娇字符
2015/08/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ClassNotFoundException: javax.el.ELManager

这个是因为tomcat7中的el-api2.2,有些版本太低,建议升级tomcat到8.0,利用el-api3.0就会解决这个问题。

无语年华
6分钟前
0
0
Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
19分钟前
0
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
19分钟前
0
0
Kafka相关使用

安装前提,需要有jdk环境,还有zookeeper环境 zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ zookeeper安装参考:https://www.jianshu.com/p/f7037105db46 kafka的下......

朝如青丝暮成雪
20分钟前
0
0
CentOS7 解决无法使用tab自动补全 tab代码提示

一、前言 对于刚刚开始学习linux的新人来说,linux的一切都显着神秘,只能惊叹于大牛在Linux上行云流水的操作。今天介绍一下在linux中自动补全的功能。 对于新人来说,在不懂得技巧的情况下,...

ziluopao
26分钟前
0
0
redis安装

https://www.cnblogs.com/feijl/p/6879929.html

ghou-靠墙哭
26分钟前
0
0
Spring核心——注解自动装载

从配置上扩展 之前的文章介绍了Spring的IoC容器配置管理方面的详细内容,需要了解的可以从IoC容器的设计模式开始阅读。在介绍基于注解配置的配置之前我们再重复一下在之前提到的基本认识: ...

随风溜达的向日葵
30分钟前
2
0
ElasticSearch学习(8)—— SearchType

Elasticsearch有四种类型的SearchType 1、query and fetch 向索引的所有分片(shard)都发出查询请求,各分片返回的时候把元素文档(document)和计算后的排名信息一起返回。这种搜索方式是最...

叶枫啦啦
31分钟前
0
0
MYSQL备份工具-mysqldump

介绍 mysqldump 是文本备份还是二进制备份 它是文本备份,如果你打开备份文件你将看到所有的语句,可以用于重新创建表和对象。它也有 insert 语句来使用数据构成表。 语法 mysqldump 的语法是...

郭恩洲_OSC博客
33分钟前
0
0
我的第一个go web框架

使用了beego等go web开发框架之后,感觉各种不方便,尤其是在接收参数、和自定义输出的时候,各种难受,定义各种model,这不是找事情嘛??尤其是在角色权限控制的时候我也感觉力不从心。。。...

独坐苔痕但观罗敷
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部