当前项目是使用Struts Portlet Framework 5.0的,Struts 是1.1版本。原本打算在RAD 7里面按照向导起一个Struts Portlet项目,然后再把Modules 一个个迁移过去,但是其好项目后一看傻掉了,是Struts 2.0的框架。于是,只好按照下面的步骤一步一步迁移了。
l 在Websphere Portal的安装目录下找到installableApps目录,里面有一个SPFLegacyBlank.war,将它导入到RAD的工作空间中,我们将用其中的文件作为模板。
l 从模板应用程序复制 META-INF/services/org.apache.commons.logging.LogFactory 文件到迁移项目中。
l 将以下 JAR 文件从模板应用程序复制到迁移项目的 WEB-INF/lib 目录中,如果这些 JAR 文件已经存在,那么覆盖它们。
u commons-beanutils.jar
u commons-collections.jar
u commons-digester.jar
u commons-fileupload.jar
u commons-lang.jar
u commons-validator.jar
u jakarta-oro.jar
u PortalStruts.jar
u PortalStrutsCommon.jar
u PortalStrutsTags.jar
u struts.jar
u struts-legacy.jar
u StrutsUpdateForPortal.jar
u wp.struts-commons-logging.jar
u wp.struts.tlds.common.jar
l 从迁移项目的 WEB-INF/lib 目录中删除以下文件:
u commons-dpcp.jar
u commons-logging.jar
u commons-pool.jar
u commons-resources.jar
u commons-services.jar
u jdbc2_0-stdext.jar
l 删除迁移项目中的struts TLD文件,并从web.xml中移除这些TLD的引用
u struts-bean.tld
u struts-chtml.tld
u struts-html.tld
u struts-logic.tld
u struts-nested.tld
u struts-portal-html.tld
u struts-portal-wml.tld
u struts-template.tld
u struts-tiles.tld
u struts-wml.tld
l 修改JSP中对Struts, JSTL的URI的约定(非常重要,否则会出现页面无法显示的情况)。例如,
<%@ taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="logic" %>
需要改为
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
l
u http://struts.apache.org/tags-bean
u http://struts.apache.org/tags-chtml
u http://struts.apache.org/tags-html
u http://struts.apache.org/tags-logic
u http://struts.apache.org/tags-nested
u http://portal/struts/tags-html-1.0
u http://portal/struts/tags-wml-1.0
u http://struts.apache.org/tags-template
u http://struts.apache.org/tags-tiles
u http://struts.apache.org/tags-wml-1.0
l 在项目portler.xml中移除
<config-param>
<param-name>FilterChain</param-name>
<param-value>StrutsTranscoding</param-value></config-param>
完成上述步骤以后,移植就算完成了。
另外附加一个Websphere 5.0移植含Web项目的EAR到Websphere 6.0上的一个小帖士,是在部署期间很莫名的一个错误:
IWAE0022E Exception occurred loading deployment descriptor for module ‘XXX_Web’ in EAR file XXX_EAR
而在RAD7的Websphere6的测试服务器上部署的时候并未出现这个错误,仔细检查过部署描述文件也没发现有什么问题。后来,不知算不算运气好,终于找到原因,原来问题出在Web项目的web.xml,移除其中所有的<Servlet>下的<display-name>后问题得以解决。
参考资料:http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wpf/mig_struts.html