linux下websphere6.1布署webwork+spring+hibernate的问题

来源:互联网 发布:caxa编程 编辑:程序博客网 时间:2024/06/06 04:08

转贴链接:http://superleo.iteye.com/blog/211470

 

最近一直忙着将Windows下的Tomcat项目移植到Red Hat AS 5下,遇到了一些问题,虽然解决了,但有些还是不是特别明白,现在我这些问题贴出来,希望大家帮我看看我是不是有的步骤有问题?

 

 

一.Linux权限和Websphere安装乱码问题

 

症状:安装Linux时,没有权限访问某文件夹。

解决办法:在Linux安装Websphere的话,需要用户为root权限,否则普通权限无法访问安装时经常出现因权限不足而停止安装的问题。

 

 

症状:在中文Linux下安装Websphere时,原本是中文界面,却变成了中文乱码(这取决于你安装Linux时是否安装的是中文版,英文版没有这个问题)

解决办法:修改root的 .bashrc 文件,加入

export LANG=C

export LC_ALL=C

将中文编码设置成英文,安装成功后,再将其注释即可。不过,我觉得这样有点太牵强了。

 

 

二.WebsphereLinux的程序运行乱码问题

 

症状:“明明在Windows下没有任何问题,而且Windows下的Websphere也表现正常啊,怎么一到Linux下就出问题了?打开乱码的页面,头文件设置的统计是UTF-8啊,没有问题啊。”

 

解决办法:这个时候,你再用记事本打开,另存为UTF-8格式,就算格式已经是UTF-8了,也强行存一次,你经过细微的比较,新的文件比原有的小一点点,但能正常显示中文了。无奈~~~~~~~

 

 

 

三.项目配置文件的修改

 

 

症状:在Websphere成功发布项目后,启动其控制台,没有任何错误信息,准备登录系统,发现找不到Hibernate映射。

 

解决办法:再次启动程序,不停的查看日志(进入到Webspherelogs目录下,不停的tail –n 100 SystemOut.log)你会发现打印出来的日志信息中,突然没有Hibernate映射过程。马上打开Spring的配置文件,比如说context.xml

 

找到配置Hibernate sessionFactory的地方,注意看mappingLocations属性是这么配置的

 

 

 

Xml代码 复制代码 收藏代码
  1. <property name="mappingLocations">  
  2.             <list>  
  3.                 <value>classpath*:**/*hbm.xml</value>  
  4.             </list>  
  5.         </property>  

 

 

 

 

这在Windows平台是没有任何问题的,但就LinuxWebsphere似乎不认。开始改吧,如果是将每个映射文件的全路径写一遍,那当然可以,但如果你的系统比较大,有100Pojo不仅麻烦,还极容易出错,好在Spring给我们做了另一件事:

 

 

 

 

Xml代码 复制代码 收藏代码
  1. <property name="mappingDirectoryLocations">  
  2.             <list>  
  3.                 <value>classpath*:com/resoft/cams/domain/</value>  
  4.                 <value>classpath*:com/resoft/cams/baseInfo/dto/</value>  
  5.                 <value>classpath*:com/resoft/cams/conference/dto/</value>  
  6.                 <value>classpath*:com/resoft/cams/query/dto/</value>  
  7.                 <value>classpath*:com/resoft/cams/sm/dto/</value>    
  8.             </list>    
  9.         </property>  

 

 

没错,就是文件夹映射,将你那些所有的*.hbm.xml文件夹写在配置文件里,就可以解决这个问题了。

 

 

 

l四.Webwork下的freemarket问题

 

症状:乱码问题解决后,有些页面总是在最底下出“找不到/****.action”。虽然程序完全能正常运行,但用户看到后,肯定不爽

 

解决办法:我发现这一类页面都是用freemarket引擎渲染的(即在xwork中定义的result type="freemarket"),如果将它们改成普通jsp的方式,那么这个问题就可以解决了。是Websphere过苛刻吗?

 

 

 

 

五.附件下载问题

 

症状:我下载了一个文本文件,为什么程序给我往里面加东西了?在文件尾部加上了什么“找不到什么action之类的”,奇怪。

 

解决办法:Websphere对规范真是不依不饶啊,打开Action中下载那段输出流代码,

加上 

 

 

 

 

Java代码 复制代码 收藏代码
  1. response.setContentLength(要下载文件的长度);  

 

 

 

 

注意:从Websphere6.0开始,直接在JSP页面中编写下载程序的代码是不允许的,原因在于JSP页面默认会构建一个OutputStream对象。但按照JSR规范来说,这是不允许的,所以下载程序请大家都写在Action里,否则很可能无法正常下载的。

 

 

 

 

症状:下载附件时,出现404错误。可是输出流在服务器端明明上有啊,我刚跟断点进去,一点问题都没有,奇怪。

 

解决办法:看看是否忘记在Action代码处加上

 

 

 

Java代码 复制代码 收藏代码
  1. response.getOutputStream().flush();  

 

 

 

 

没有它,可能下载时,会出现“404 找不到文件”的错误。在Tomcat下常写的代码,没想到竟然存在这么多隐患。

 

 

 

 

目前主要发现这几个问题,希望大家在LinuxWebsphere布署项目时,可以少走弯路。