您的位置:首页 > 运维架构 > Tomcat

Tomcat SSH2项目移植到Weblogic9.2问题总结

2011-04-01 11:27 337 查看
Tomcat SSH2项目移植到Weblogic9.2问题总结

最近在tomcat下开发了一个SSH2项目,但服务器是weblogic9.2的;当然项目在tomcat下测试是完全没有问题的,这是前提...
碰到很多问题,好好总结下问题搜集如下:
问题一:项目移植到weblogic9.2,启动报错。
问题二:项目部署后,启动没问题;action请求也是全的,但页面显示报异常。
问题三:不能实例化action,所有的action方法不能执行。
问题四:一个模块,应用的时候有一个功能模块有问题,当执行这个方法后,这个模块的所有action失效。
问题解决如下:
问题一:项目移植到weblogic9.2后启动报错,是因为项目的web.xml文件的版本需要修改。SSH2的web.xml文件的版本头为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
修改后的web.xml版本头为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd">

这样启动就不会有错了...
问题二:项目部署后,请求发起后,页面显示异常信息大致如下
org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

这个问题是缺少jar包,项目部署到weblogic9.2必须添加2个jar才可以正常显示页面信息,这2个jar包是el_api.jar和standard.jar;这2个jar,在tomcat下添加是会有启动异常的,但部署到weblogic是必须添加的。

问题三:不能实例化action,所有的action方法不能执行。也就是不可以实例化所有的Action类,找了很久找到了原因在那,我们在tomcat项目在添加spring配置文件时,在web.xml中是这样添加的:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext*.xml
</param-value>
</context-param>

classpath:applicationContext*.xml也就是在项目src下的spring的配置文件。但是这样的配置在weblogic中是不能解析的,至于原因我也不知道。解决的方法是将所有的spring配置文件都列上去,将classpath:applicationContext*.xml用classpath:applicationContext.xml,classpath:applicationContext_user.xml,classpath:applicationContext_menu.xml
有几个就添加几个,用,隔开,这样不能实例化action的问题就解决了。

问题四:一个模块,应用的时候有一个功能模块有问题,当执行这个方法后,这个模块的所有action失效。这个问题的场景是这样的,一个兄弟的模块,他写的实现,部署到weblogic,大部分的功能是全的,也可以用;但是其中某一个添加请求报异常,导致他的所有模块都不可用,仔细检查他的代码,发现了原因。一般在tomcat下,问题是没有的,一般在action中会根据情况会有不同的返回串,如:SUCCESS,ERROR,NONE,LOGIN等等,登录超时返回LOGIN,系统异常则是ERROR,默认返回SUCCESS;但是这为兄弟,在代码中写了根据不同情况返回不同的返回串,但他在sturcts2配置文件中却没有对应的配置,代码如下:

public String addNews() {
@SuppressWarnings("unused")
News addNew = new News();
Integer id = 0;
String ret = SUCCESS;
try {
addNew.setNewsContent(news.getNewsContent());
addNew.setCreator(news.getCreator());
addNew.setNewsTitle(news.getNewsTitle());
addNew.setCreateDate(time.format(new Date()));
addNew.setUpdateTime(time.format(new Date()));
addNew.setType(news.getType());
id = newsBPO.saveOrUpdateNews(addNew);
news = new News();
news.setNewsId(id);
} catch (Exception e) {
e.printStackTrace();
ret = ERROR;
} finally {
return ret;
}
}

代码的优劣先不说,很明显这个action方法有2种返回情况:SUCCESS,和ERROR但他的配置是

<action name="addAdInfo" class="NewsAction" method="saveAdInfo">
<result type="redirect">findAdInfo?style=1</result>
</action>

很明显他漏掉了一种情况,就是action返回串为ERROR,当然在tomcat,你的程序是完全可以跑的,也没有任何异常,但到weblogic,就报错了,而且这个错就直接导致了他开发模块都不能用...
所有问题的解决就是,根据不同的action返回值,structs2的配置应该有相对应的匹配项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: