Weblogic部署相关问题

来源:互联网 发布:淘宝情趣内衣评论 编辑:程序博客网 时间:2024/04/29 16:04

虽然Servlet/jsp有统一的规范,但是由于各个应用服务器的不同版本对规范的实现在细微之处多有不同,所以同一系统部署在不同应用服务器上时,总会有一些细节需要调整。以下列出可能遇到的几个常见的问题。

 

1. 上下文路径

String contextRoot = getServletContext().getRealPath("/");

 

String contextPath = request.getRealPath("/");

 

以上代码在Tomcat中都将取得以”/”结尾的绝对路径,而在Weblogic 中取得的路径没有”/”结尾。

 

2. Jsp include

下面的代码在Weblogic中将不会编译被包含的jsp文件

<jsp:include flush="true" page="/***.jsp"/>

 

改成这样就可以了:

<jsp:include page="/***.jsp" flush="true"/>

 

3. 动态包含<%@ include %>

WebLogic Server 6.1 或更早版本中,如果在执行包含操作的文件中指定编码,则被包含的文件将作为编码与包含文件相同的文件进行处理(即使尚未指定其编码)。在 WebLogic Server 8.1 中,如果它们有各自的 page 指令,则会出现编译错误。要避免此问题,请将 weblogic.xml 中的“backwardCompatible”设置为 True

如果包含源包含目标的编码设置不同,则会出现 JSP 编译错误。

 

Tomcat 4.* 版本中,如果两个文件都有各自的page指令,将会出现编译错误。但在Tomcat 5.* 版本,则可以正常通过。

 

4. Hibernate3的antlr包兼容调整

将antlr-2.7.6rc1.jar包复制到C:/bea8/weblogic81/server/lib/,

并在startWebLogic.cmd中填写以下指令,

set PRE_CLASSPATH=%WL_HOME%/server/lib/antlr-2.7.6rc1.jarset CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%

避免Hibernate和Weblogic的antlr包版本不一致问题。

5. session内容获取不到的问题

在jsp里面使用session.setAttribute("foo",foo)的时候,有时从servlet里面获取不到值。

改为采用request.getSession().setAttribute("foo",foo); 即可。