设为首页 收藏本站
查看: 1733|回复: 0

[经验分享] weblogic需要注意的问题

[复制链接]

尚未签到

发表于 2017-2-15 11:03:14 | 显示全部楼层 |阅读模式
这几天,将一个原来在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版本太低,导致很多我们看起来很正常的东西都用不了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-342466-1-1.html 上篇帖子: WEBLOGIC相关参数调优 下篇帖子: 使用WEBLOGIC收发JMS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表