`

weblogic10.3+sitemesh全方位部署

阅读更多
转载自 lontoo
Spingframework-2.5.5
Struts-2.0.11
Sitemesh-2.4.1
Hibernate-3.2.6(antlr-2.7.7.jar)
Weblogic Server 10.3.1(多语言版本—中文版)【java version "1.6.0_11"】

1、包antlr冲突问题

org.hibernate.QueryException:
ClassNotFoundException: org.hibernate.hql.ast.HqlToken
引起这个问题的原因是包antlr2.6.1.jar在WEBLOGIC10.3中与项目中HIBERNATE3.x用来解析SQL语句的包antlr-2.7.7.jar冲突了。

大致有3种方式可以解决这类问题:
1)在启动weblogic时,优先启动项目中使用到的antlr-2.7.7.jar的文件。在weblogic启动文件 的 classpath上优先增加antlr-2.7.7.jar 文件。如下:
set SAVE_CLASSPATH=.; d:\antlr-2.7.7.jar;%CLASSPATH%
注意:
你必须把antlr-2.7.7.jar 拷贝到 d:目录下或者其他你自己设定的目录名。

2)在hibernate.properties或者hibernate-cfg.xml,或者 db-jdbc.properties中设置一个属性hibernate.query.factory_class的值为
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
注意:
●选择Hibernate3.x的查询翻译器:
org.hibernate.hql.ast.ASTQueryTranslatorFactory
●选择Hibernate2.x的查询翻译器
org.hibernate.hql.classic.ClassicQueryTranslatorFactory

3)在/WEB-INF 目录下增加或者修改 weblogic.xml文件。
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
注意:
●这个方法不是推荐的,因为这个设置可能会引起JSTL的设置冲突。

2、Servlet2.5规范问题
如果使用servlet2.5规范来配置web.xml文件。在系统启动时出现以下错误:
java.lang.IllegalArgumentException: Illeagal combination - Mode.PAYLOAD and Provider<javax.xml.soap.SOAPMessage>
at com.sun.xml.ws.server.provider.ProviderEndpointModel.<init>(ProviderEndpointModel.java:111)
at com.sun.xml.ws.server.provider.ProviderInvokerTube.create(ProviderInvokerTube.java:63)

解决的方法
1)使用 web.xml 2.4 的规范 而不是使用 web.xml 2.5 规范;
2)在weblogic.xml中设置(参见上面的说明):
<prefer-web-inf-classes>true</prefer-web-inf-classes>;

3、装饰器无法正常工作
装饰器无法正常工作,只能返回请求页面,不会对页面进行任何装饰。比如提交一个struts2请求 /portal/abc.do,同时也设置了sitemesh过滤器映射这个请求,以及在decorators.xml中也设置了装饰器,比如:
<decorator name="foreDecorator" page="template.jsp">
<pattern>/portal/abc.do</pattern>
</decorator>
现在假设struts2请求 /portal/abc.do将会返回到一个页面 abc.jsp页面。结果,页面只返回了abc.jsp页面上的数据,而没有被template.jsp页面进行装饰。通过查看源代码发现。在准备装饰之时,weblogic的 request.getServletPath()得到是 abc.jsp,而不是/portal/abc.do。
因此在decorators.xml并不能找到需要装饰的mapping。除非将<pattern>/portal/abc.do</pattern>修改为:
<pattern>/abc.jsp</pattern>
是可以被映射并装饰了。

解决的方法
修改sitemesh的对应的decorator mapping源代码。在这里这个文件是:
com\opensymphony\module\sitemesh\mapper\ConfigDecoratorMapper.java
修改这个文件。使用 request.getRequestURI() 代替 request.getServletPath()来获得待匹配的URL。

4、Sitemesh乱码问题
关于sitemesh乱码问题,除了与Tomcat环境下的设置以外。比如:
通过过滤器设置:
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);

JSP文件设置:
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

Weblogic针对sitemesh方面还有3个地方出现乱码:
1)在装饰器文件中使用 <decorator:body /> 乱码。这个是最常用的,也就是最常见的乱码问题。
2)page:applyDecorator,指定了待装饰的jsp文件,比如:t1.jsp:
<page:applyDecorator page="t1.jsp" name="t1Decorator"/>
这样t1.jsp渲染后出现乱码。
3)一个请求通过了sitemesh过滤器,但同时又没有找到对应的装饰器(同时并不在excludes中指定),这样就是使用默认的装饰器(NoDecorator)进行直接输出。
com.opensymphony.sitemesh.webapp.decorator.NoDecorator

虽然是各种不同的情况,但原因都有些类似,就是在weblogic环境下,Sitemesh在装饰页面时,如果response的contentType为null,则使用java虚拟机属性值"file.encoding",而该值与操作系统相关,在windows系统下,该值=GBK.由于页面本身是UTF-8编码的,经过sitemesh装饰后,使用GBK编码转换,产生乱码。

解决的方法
既然跟file.encoding有关系,那么就直接设置这个系统属性可以解决上面的全部问题。解决如下:在weblogic启动文件 的 启动参数上增加-Dfile.encoding。如下:
set SAVE_JAVA_OPTIONS=%JAVA_OPTIONS% -Dfile.encoding=UTF-8
注意:
●这个方法简单明了,而且不用修改其他方面;
●但是,如果这样设置的话,Weblogic本身的启动等相关信息就乱码了。

因此,在下面使用其他的方式来解决上面的3个问题:
1)通过查看源代码,发现进行内容装饰之前需要进行对内容字节转换成字符串,在转换的时候,如果没有获得编码,那么就是用file.encoding。因此,可以修改这个文件,使默认使用的编码为”UTF-8”.
com.opensymphony.module.sitemesh.filter.TextEncoder

2)page:applyDecorator,指定了待装饰的jsp文件,那么,同时需要指定这个文件使用的编码。如下:
<page:applyDecorator page="t1.jsp" name="t1Decorator" encoding="UTF-8"/>

3)针对第3个乱码问题,可以通过修改如下文件:
com.opensymphony.sitemesh.webapp.decorator.NoDecorator
让输出的字符串作为 UTF-8的方式直接输出到response中。

5、<c:import…>乱码问题
所包含的文件需要使用charEncoding="UTF-8"进行限定。
<c:import url="/portal/block/userBlock11.jsp" charEncoding="UTF-8"/>
分享到:
评论

相关推荐

    WebLogic10.3+Apache2.2集群配置图文指南(含windows版和unix版).doc

    WebLogic 10.3+Apache 2.2 集群配置图文指南 本文档旨在为读者提供一个详细的 WebLogic 10.3+Apache 2.2 集群配置图文指南,涵盖 Windows 和 Unix 两个平台。下面是本文档的详细知识点: 一、集群配置简介 * 集群...

    Weblogic10.3+集群配置手册

    ### Weblogic 10.3 集群配置详解 #### 一、预备知识 - **Domain 和 Server 定义**: - **Domain**:是 WebLogic Server 实例的基本管理单元,它由一个被配置为 Administrator Server 的 WebLogic Server 实例管理...

    WebLogic10.3+Apache2.2集群配置图文指南( 含windows版和unix版)

    WebLogic是由甲骨文公司开发的一款Java EE应用服务器,它提供了用于开发、部署和管理企业级应用的平台。WebLogic集群是WebLogic Server的一个关键特性,它允许多个服务器实例共享资源,提高可用性和性能。 Apache ...

    WebLogic10.3+Apache2.2集群配置图文指南

    WebLogic 10.3 和 Apache 2.2 集群配置是一个复杂的过程,涉及到多个步骤和组件的集成。这个配置旨在实现高可用性和负载均衡,以提高应用程序的性能和稳定性。 ### 第 1 章:集群配置简介 在分布式环境中,集群...

    Weblogic10.3+集群配置手册.doc

    WebLogic Server 10.3 集群配置是企业级应用程序部署的关键环节,它提供了高可用性、可扩展性和负载均衡等关键特性。以下是对WebLogic集群配置的详细说明: 1. **预备知识** - **Domain 和 Server**:在WebLogic...

    weblogic10.3性能优化参数配置

    Weblogic10.3_Windows 集群布署是指在 Windows 服务器上部署 Weblogic 集群的方案。该方案可以提高服务器的高可用性和负载均衡能力,适合大规模企业级应用系统。 1. 机器配置 机器配置是影响集群性能的重要因素之...

    weblogic10.3安装与部署步骤

    本文将详细介绍WebLogic 10.3的安装和部署步骤,帮助你快速理解和操作这个强大的中间件平台。 **一、WebLogic 10.3的安装** 1. 下载WebLogic 10.3的安装包,确保系统满足其硬件和软件需求。 2. 双击安装文件,启动...

    weblogic 10.3 的部署以及配置数据源

    WebLogic Server 10.3 是一款由甲骨文公司提供的企业级应用服务器,它用于部署、管理和运行Java EE(Java Platform, Enterprise Edition)应用程序。本篇将详细讲解WebLogic 10.3的部署过程及配置数据源的步骤。 **...

    Oracle+WebLogic+Server+10.3+指导手册

    ### Oracle WebLogic Server 10.3 指导手册知识点汇总 #### 练习1:安装Oracle WebLogic Server 10.3 - **时间**:大约20分钟 - **目标**:掌握Oracle WebLogic Server 10.3的安装流程。 - **步骤**: - **定位...

    Oracle+WebLogic+Server+10.3+指导手册(中文).pdf

    ### Oracle WebLogic Server 10.3 指导手册核心知识点 #### 一、Oracle WebLogic Server 10.3 安装与配置 **重要性:**Oracle WebLogic Server 是一款先进的中间件平台,提供了强大的应用服务器功能,适用于构建、...

    weblogic 10.3 安装过程详解

    WebLogic 10.3是Oracle公司发布的一款企业级应用服务器,它提供了强大的Java EE平台支持,能够帮助企业构建、部署和管理复杂的应用程序。本文将详细介绍WebLogic 10.3的安装过程,帮助读者更好地理解和掌握其安装...

    Weblogic10.3安装和配置.doc

    "Weblogic10.3安装和配置" 摘要:本文档介绍了Weblogic10.3的安装和配置过程,包括安装Weblogic Server、创建域、配置服务器、创建DATAsource和配置deployment等步骤。 一、安装Weblogic Server * 下载Weblogic ...

    Weblogic10.3.6.0补丁包(含补丁安装说明).zip

    Weblogic 10.3.6 2019年7月16日集成补丁包(p29633432_1036_Generic_20190716.zip),补丁名称:MXLE,下载文件中包含补丁安装说明和方法(自用详细步骤)。服务器打补丁前请注意做好备份,若与旧的补丁冲突,需卸载...

    weblogic10.3 使用

    ### WebLogic 10.3 使用详解 #### 一、WebLogic 10.3 安装步骤 在正式开始WebLogic 10.3 的使用之前,首先需要完成其安装工作。安装过程主要包括以下几个步骤: 1. **下载安装包**:首先需要从Oracle官方网站下载...

    Oracle WebLogic Server 10.3.0.0下载.txt

    Oracle WebLogic Server 10.3.0.0下载 包括两个文件: server103_linux32.bin server103_win32.exe

    Weblogic 10.3 新特性 中文版

    ### Weblogic 10.3 新特性中文版 #### 概述 Oracle WebLogic Server 10.3 是 Oracle 公司推出的一款企业级 Java 应用服务器,它提供了强大的功能来支持各种 Java 应用程序和服务。WebLogic 10.3 的发布带来了许多...

    SSH2+Weblogic10.3

    这个项目是SSH2+jquery做的一个例子,主要是在weblogic10.3上部署没有问题,很多人用这个架构在weblogic有问题,这个可以直接部署,页面用jquery做了一个权限的增删改的例子,非常实用

    Oracle weblogic10.3.1.0.0集群配置手册

    《Oracle WebLogic 10.3.1.0.0 集群配置手册》是针对Oracle公司的WebLogic Server的一款详细指南,旨在帮助用户理解和配置WebLogic Server的集群环境,以实现高可用性和负载均衡。Oracle WebLogic Server是一款强大...

Global site tag (gtag.js) - Google Analytics