这几天,将一个原来在tomcat下的项目移植到weblogic上,开始接到这个任务的时候,觉得没啥问题,毕竟只是个服务器而已。开始运用是跑在tomcat 5.0下 jdk 1.4 一切正常,当我把项目移植到weblogic8.16上时出了几个让我头疼的问题:
1 action配置里的 scope=“request”始终报错,死活通不过。具体错误忘了记下来。
2 页面中文乱码。(项目里的所有页面均有<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)。
3 项目里用于获取服务器ip地址的getRequest().getLocalAddr(),getRequest().getLocalPort()方法报不存在,getRealPath("")以及getRealPath(".")均返回不正确的值。
4 原来用ajax方法从后台输出的中文返回为乱码。
以上方法在tomcat5.0上均正常。
这让我很郁闷。
对于第一个问题,将所有request换成prototype,实现效果一样,在weblogic8.16下通过。
第二个问题,在运用的WEB-INF目录下(与web.xml同文件夹)下增加一个名为weblogic.xml的文件(weblogic默认会先加载此文件),里面加入下面一段代码:
<weblogic-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>
pageCheckSeconds
</param-name>
<param-value>
1
</param-value>
</jsp-param>
<jsp-param>
<param-name>
verbose
</param-name>
<param-value>
true
</param-value>
</jsp-param>
</jsp-descriptor>
<context-param>
<input-charset>
<resource-path>/</resource-path>
<java-charset-name>utf-8</java-charset-name>
</input-charset>
</context-param>
</weblogic-web-app>
第一段<jsp-descriptor>是针对jsp页面的过滤规则(我们的项目里面没有jsp页面,所以完全可以不用)。
第二段<context-param>是对所有页面均采用utf-8编码,这样页面上的中文就没问题了(前提是你所有页面都加了我前面所说的utf-8编码),至此第二个问题解决。
第三个问题,一查文档,发现weblogic8.16的Serverlet的版本是2.3(这是一个很低的版本),里面根本就没有getLocalAddr(),getLocalPort()方法,没办法只有换着法子来实现了,对于获取本地id地址改用InetAddress.getLocalHost().getHostAddress(),此方法属于jdk里的方法,从jdk1.0里就开始有了,所以肯定能支持。getLocalPort(),用request.getServerPort()方法代替(好在serverlet2.3里有此方法,否则就郁闷了)。至此第三个问题也解决了。在serverlet2.3里面getRealPath("")返回null,getRealPath(".")返回“.",没办法只能修改成能够支持的方式getRealPath("/WEB-INF"),这样返回WEB-INF文件夹所在的物理路径,然后对这个路径进行处理,得到运用所在的物理路径。如此修改一番,OK;
第四个问题,此问题属于最隐晦的了。给大家贴一段代码,大家认为会有什么问题:
PrintWriter pw = response.getWriter();
response.setContentType( "text/html;charset=utf-8");
pw.write(result);
此段代码在tomcat下完全能正常返回中文。但在weblogic8.16下中文就是乱码。以前只碰到过从页面用ajax抛到后台的数据中文会是乱码,这会从后台 抛到前台的中文既然成乱码了,岂不怪哉。诚然此问题有悖常理。肯定是一个很隐蔽的地方导致的。最后查阅sun官方对于serverlet2.3的文档才发现,原来在2.3里必需将:
response.setContentType( "text/html;charset=utf-8");
写在
PrintWriter pw = response.getWriter();
的前面,否则无法设置编码!!!!!!
也就是说必需写成:
PrintWriter pw = response.getWriter();
response.setContentType( "text/html;charset=utf-8");
pw.write(result);
Oh my god!!!!好在在以后的版本里不会有此问题。
总结一下:weblogic8.16(8.1x应该都这样)所支持的serverlet版本太低,导致很多我们看起来很正常的东西都用不了。
分享到:
相关推荐
### WebLogic 日常巡检与问题排查 #### 引言 WebLogic作为一款广泛使用的Java应用服务器,在企业级应用环境中扮演着重要的角色。为了确保WebLogic服务器能够稳定、高效地运行,定期进行健康检查(巡检)是非常必要...
在本文中,我们将讨论如何使用 WebLogic 设置代理转发功能,包括简单代理转发功能的注意事项和集群分发的配置步骤。 设置简单代理转发功能 要设置简单代理转发功能,需要创建一个服务或集群,并配置代理文件。可以...
但是,需要注意的是,需要正确地关闭 Connection,以免出现资源泄露问题。 4. 防止 JSP 页面刷新 可以使用 JavaScript 或者 Meta Refresh 来防止 JSP 页面刷新。 5. JSP 在 I/O 方面的一些问题 在 JSP 中,需要...
需要注意的是,`getRealPath()`返回的结果可能因服务器或调用方法的环境而异。 #### 二、WebLogic启动后自动执行类的方法 在某些情况下,开发者希望在WebLogic Server启动后自动执行某个类的方法。这可以通过配置...
### WebLogic Server 常见问题解答FAQ #### 概述 WebLogic Server是由BEA Systems公司开发的一款高性能的企业级应用服务器,适用于构建、部署和管理企业级Java应用程序。随着互联网技术的发展,WebLogic Server逐渐...
Weblogic 作为一个流行的 Java 企业级应用服务器,通常需要在服务器启动时自动启动,以确保业务的连续性。然而,在 Windows 系统下,Weblogic 的自动启动却需要进行一些额外的配置。在这篇文章中,我们将详细介绍...
在实际操作中,可能还需要处理特定的网络、权限、性能优化等问题,这都需要具备一定的AIX系统管理和WebLogic运维经验。通过不断的实践和学习,可以更好地掌握在AIX环境下管理WebLogic Server的技能。
### 解决WebLogic时间与系统时间不一致的问题 在日常使用WebLogic服务器的过程中,我们可能会遇到WebLogic服务器显示的时间与操作系统的时间不一致的情况。虽然这种情况并不常见,但它可能会影响应用程序的正常运行...
在从 Tomcat 移植至 WebLogic 时需要注意的几个问题: * 需要预加载 Jar 包以解决类加载问题 * 需要修改配置文件中的通配符路径 * 需要解决中文乱码问题 * 需要修改 weblogic.xml 文件以改变上下文 通过遵循以上...
对于那些从单纯的WebLogic Server升级到WebLogic Platform的用户来说,尤其需要注意升级许可证以覆盖所有必要的组件。同时,定期检查和理解许可证文件的内容,有助于及时发现和解决问题,提高运维效率。
此外,还需要注意特定平台的干扰包问题,例如在AIX平台上可能需要删除或重命名某些干扰包文件,以解决安全参数协商失败的问题。 8. **事务控制示例代码**:文档中提供了事务控制的代码示例,展示了如何在代码中初始...
3. **安全性**:在处理文件下载逻辑时,还需要注意安全问题,比如防止XSS攻击等。 通过以上步骤,可以有效地解决WebLogic与Tomcat环境下下载附件乱码的问题。开发者可以根据自己的实际需求调整配置,确保文件下载...
### WebLogic详细安装部署流程 #### 一、安装前准备 **1.1 JDK环境配置** - **确保JDK已安装:** 在安装WebLogic之前,必须先安装Java Development...在整个过程中,需要注意细节,确保每一步都按照正确的顺序进行。
本篇文章将详细阐述如何在Windows环境下部署WebLogic 9.2,包括创建域、启动服务、配置数据源、部署应用以及一些注意事项。 1. **创建WebLogic域** 创建WebLogic域是部署的基础步骤,域包含了WebLogic Server实例...
- 在升级到WebLogic Server 12.2.1.3.0之前,还需要使用重新配置向导进行额外配置。 #### 七、参考资料 - [融合中间件支持的系统配置]...
注意修改后需要重启服务器使配置生效。 六、WebLogic常用技巧与最佳实践 WebLogic提供丰富的监控和诊断工具,如日志、JMX、JFR等。学习如何有效利用这些工具可以提高问题排查效率。此外,了解如何优化WebLogic的...
需要注意的是,虽然Guardian能够提供很多帮助,但是用户仍需具备一定的WebLogic服务器知识,以便更好地理解和解决出现的问题。此外,文档信息是基于扫描文本生成的,因此在阅读过程中可能会遇到个别文字识别错误或者...
本文档基于WebLogic 8.1 SP1版本,未配置SSL的情况下,详细介绍如何设置简单的代理转发功能以及需要注意的关键点。 #### 二、准备工作 1. **创建服务或集群** - 可以根据实际需求创建一个服务或集群。集群的配置...
需要注意的是,`<session-timeout>` 元素的值以分钟为单位。如果将其设置为 `-2`,则将使用在 `weblogic.xml` 文件中设置的 `TimeoutSecs` 属性值。如果将其设置为 `-1`,则 Session 将永不过期,而忽略在 `weblogic...