本人一个SSH的项目,在tomcat上部署之后运行没有任何问题,但是部署到weblogic上以后就会出现以下问题:
<action name="toShowGlyInfo" class="glyManageAction" method="showAllInfo"> <result name="listpage">/backmanage/glymanage/glyInfoList.jsp</result> </action> <action name="toAddGlyInfo" class="glyManageAction" method="toGlyInfoAdd"> <result name="returnPage">/backmanage/glymanage/glyInfoAdd.jsp</result> </action>
访问"toShowGlyInfo"这个action会报"http 500内部服务器错误",没有其它提示;而访问"toAddGlyInfo"这个action则没有任何问题。后来发现这两个action所指向的方法有如下不同:第一个action指向的方法利用hibernate的session对象访问了数据库执行了查询,而第二个action指向的方法则没有与数据库进行交互,只是进行了一个页面的跳转。
System.out.println("dao4444"); Query queryCount = session.createQuery(sqlCount); System.out.println("dao444411111");
如上图,"dao4444"可以正常打印,而"dao444411111"没有打印出来,也没有任何异常或者提示信息。
后来从网上查找可能的原因为:WebLogic与hibernate3的antlr.jar包冲突。在hibernate3中需要用到antlr,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误。这样weblogic就会中止服务。
解决方法如下:
1、拷贝Hibernate3里带的包antlr-2.7.6.jar拷贝到${WL_HOME}/server/lib下
2、修改startWebLogic.sh :在CLASSPATH之前加一句:PRE_CLASSPATH="${WL_HOME}/server/lib/antlr-2.7.6.jar"