最近公司的项目需要上线,于是让我部署weblogic,我用的版本是weblogic10.3的,在部署的时候采用的是产品模式的部署方式。(在本机上测试的时候用的是开发模式的方式)部署完成之后,把此前在Tomcat 6.0上开发的项目移植到weblogic上的时候,出现了一些在开发环境上没有出现的问题,在这里记录一下在weblogic上部署项目的时候需要注意的问题。
1、在安装完成weblogic之后,我们需要把hibernate框架使用的一个jar包(antlr-2.7.6rc1.jar)放到weblogic的安装目录里。具体路径为D:\bea\wlserver_10.3\common\lib。
如果我们还不能够解决冲突的话则要到工程所在的域文件夹D:\bea\user_projects\domains\base_domain\bin里,setDomainEnv.cmd的文件中修改服务的环境变量,把A步骤中的路径加上:右键 -> 编辑,打开文件,在set CLASSPATH之前加上:set PRE_CLASSPATH=D:\bea\wlserver_10.3\common\lib\antlr-2.7.6rc1.jar;在set CLASSPATH之后加上:
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%。
2、Date和Calender的区别
在tomcat 6.0上开发项目的时候,我使用了DateUtils下面的addWeeks(?,?)方法,但是,在weblogic下面,只要所有使用到这个方法或者类似这个方法的地方点击链接都会报struts找不到异常,但是就奇怪了,后来一句句跟代码,才发现只要执行到这一句都会报错。于是就换成了用Calendar的方式解决了问题。
部分代码如下:
Date startDate = new Date();
// Date endDate = DateUtils.addWeeks(startDate, 1); //以前用的报错的东东
Calendar c =new GregorianCalendar();
c.setTime(startDate);
c.add(Calendar.DAY_OF_MONTH, 7);
Date endDate = c.getTime();
后来在网上查了一些文章,还发现在在weblogic上部署的时候需要注意的一些问题及解决办法,一起贴出来和大家分享。
1.部署出错。
部署出错常见问题就是,web.xml不规范。web.xml不规范将直接导致部署不成功!weblogic对web.xml检查非常严格,大部分能在tomcat下调试成功的,在weblogic下不一定会成功。原因是,tomcat不能算是一个服务器所以检查相对不够严格。注意这里说的tomcat指的是5.5及以下。tomcat6在整个结构上有了一定的改变,部分tomcat5.5能通过的,在tomcat6下并不一定成功!所以出错后,应当根据提示检查下web.xml书写是否规范。
部署不成功的另一种问题,JRE版本不对应。换句话说就是服务器上的JDK低于你开发环境中的JDK,导致的版本出错。这个是比较郁闷的,通常情况下有两种建议:其一,最好的办法是将服务器上的JDK升级至官方最高版本。这样做的好处是,不用担心版本问题,另外新版本通常支持新的特性,对开发也有很大的帮助。其二,将本地的JDK和服务器上的JDK控制在同一个版本。这样就不用担心版本不对应。下面说下问题出现以后的解决方法,通过MyEclipse的项目属性->JRE设置->添加新的JRE->让项目的使用新添加的JRE。
2.乱码问题。
通常情况下在移植项目到Weblogic服务的时候,容易碰到HTML乱码问题。这个问题通常是因为页面中的Meta标签未生效,解决的办法是在web.xml中加入下面的代码:
XML/HTML代码
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
3.ServletContext
今天发现在JSP页面中直接调用.getServletContext()会出错。解决方法:PageContext.getServletContext();
以上为本人在进行项目移植的时候遇到的问题,当然可能不够完整。希望大家在实际操作中能将新的问题反馈给我,好补充这篇文章。
4.JSP写的验证码
这个验证码比较简单在文件的一开始加入out.clear();即可解决问题!
//8月10日更新 事实上out.clear();治标不治本!图片确实能显示出来了,可是控制台却报IO异常。折腾了半天找到原因,weblogic同tomcat不太一样,详情看代码。
Java代码
/** Tomcat写法 */
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out=pageContext.pushBody();
/** Weblogic写法 */
ImageIO.write(image, "JPEG", response.getOutputStream());
5.FCKeditor JS错误
这个问题更加BT,简直让人无法忍受!你用记事本把根目录所有的文件都打开然后CTRL+S保存就OK了!另外还有可能出现载入XML错误!同上面一样,在web.xml中加入这段话就OK了!
XML/HTML代码
<mime-mapping>
<extension>xml</extension>
<mime-type>application/xml</mime-type>
</mime-mapping>