现在的位置: 首页 > 综合 > 正文

smart发布中发现的weblogic/tomcat/resin的兼容性问题以及解决方案

2013年02月07日 ⁄ 综合 ⁄ 共 2309字 ⁄ 字号 评论关闭

深圳市XX局邀请我为他们做工作流培训,其中有一项是smart的技术思路培训;但他们要求必须要用weblogic8.1和oracle。由此引发了我们的smart在weblogic8.1中的 发布,也由此产生了这篇文章。

我们知道,smart_forleave http://blog.csdn.net/hongbo781202/archive/2006/07/07/890968.aspx 是采用了jstl1.1和EL技术的,由此决定它只能在jsp2.0和servlet2.4环境下运行(包括tomcat5.0.x  weblogic9.x resin3.x等等)。

weblogic8.1和tomcat4.x都是jsp1.2和servlet2.3 实现,所以我们只能采用jstl1.0,不能采用EL。这样我就对部分JSP进行了改写,把EL的地方全部换成了jstl1.0来实现,但之后还是发现了一些问题,问题的描述和解决办法如下:

1)JSP2.0(tomcat5.x)中,即便你在a.jsp中<%@ include file="header1.jsp" %>,且header1.jsp中有<%@ page contentType="text/html; charset=UTF-8" %>指令,你在a.jsp中的page指令还是必须有,如果没有,外层页面会有乱码。

     tomcat4.x中,可以两个文件都有,也可以只有一个文件中有。

    weblogic8.1中,必须只能有一个文件中有;如果两个文件都有,会后台不报错,但 IE中是空白页。

2) taglib指令也和 page指令同样的规则。 我是比较了好久不同的版本才发现这个问题,可气的是weblogic后台

不报错。

3)weblogic8.1中,如果JSP中UTF-8,则必须在web.xml中加入

<context-param>
<param-name>weblogic.jsp.encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>

如果没有这个配置,weblogic的jspc 集体罢工,而且后台不报错,但只能显示html,对JSP无效。

4) 在weblogic8.1中,对稍微复杂的JSP(这里是指非纯HTML的JSP文件),必须使用

<%@ include file="header1.jsp" %>
<%@ include file="header2.jsp" %> 动态编译,而不能使用

<jsp:include page="footer.jsp" />静态编译。  这个是weblogic的jspc的问题。

5) weblogic8.1对 webwork,spring,hibernate3都有不兼容性问题,这些资料在我的blog里面有写到过,网上

的讨论也非常多。

webwork的见http://blog.csdn.net/hongbo781202/archive/2005/03/29/333007.aspx

hibernate3的 见

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=33234&messageID=198334

smart也碰到了hibernate3的问题,所以在smart_jsp1.2中用的hibernate2的antlr(因为weblogic.jar中用的这个版

本)。

----------------------------------------------------------------------------------------------

2007.1.4日:我又发现上面的第5个问题,找到了新的解决办法:

Hibernate3与WebLogic8一起用会因为antlr.jar的问题导致发生Hibernate不能正常工作的情况,报的错误就是ClassNotFoundException。原因是WebLogic8中内置的antlr.jar是hibernate2中的antlr,和Hibernate3中的antle.jar不一致。修改的方式就是在自己的webapp的WEB-INF中新建weblogic.xml文件,让weblogic先识别自己系统的antlr.jar即可。

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app>
  <jsp-descriptor>
    <jsp-param>
      <param-name>pageCheckSeconds</param-name>
      <param-value>0</param-value>
    </jsp-param>
    <jsp-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </jsp-param>
  </jsp-descriptor>
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
</weblogic-web-app>

 

抱歉!评论已关闭.