网上流转一篇描述LiferayPortal4在Websphere6下的安装的文章,但那只是解决了Portal核心应用的安装问题,要让Portal的功能完全可以使用,还有一段路。
经过实践,将Liferay)ortal5.2.2安装到了Websphere7.0下面,常用的功能均能正常运行,但还存在少数js文件不能访问的问题。
Error 500: javax.servlet.ServletException: Filter [Cache Filter - Resource]: filter is unavailable.
修改CacheFilter的processFilter()方法可解决,详见http://issues.liferay.com/browse/LPS-3392
CacheResponse cacheResponse = new CacheResponse( response, StringPool.UTF8); processFilter( CacheFilter.class, request, cacheResponse, filterChain); /*WORKAROUND FOR WEBSPHERE*/ if(cacheResponse.getContentType()==null){ String path=request.getPathInfo(); if(path.endsWith(".css")){ cacheResponse.setContentType("text/css"); }else if(path.endsWith(".js")){ cacheResponse.setContentType("text/javascript"); }else if(path.endsWith(".html")){ cacheResponse.setContentType("text/html"); } _log.info("setting cacheResponse content type:"+cacheResponse.getContentType()); } /*END OF WORKAROUND FOR WEBSPHERE*/ cacheResponseData = new CacheResponseData( cacheResponse.getData(), cacheResponse.getContentType(), cacheResponse.getHeaders());
环境:WindowXP LiferayPortal5.2.2 Oracle10g Websphere7.0
${WAS_INSTALL_ROOT} 指 WAS 安装后得到的 IBM\WebSphere\AppServer 目录。
${portal_home} 指 Portal 部署包解压后得到的 liferay-portal-5.2.2 目录。
先安装 WebSphere7.0
登录 WebSphere 的管理控制台。
1. 将 ${portal_home}\tomcat-5.5.27\common\lib\ext 下的文件,全部复制到 ${WAS_INSTALL_ROOT} \lib\ext
2. 因为 WebSphere7 使用 JDK1.6 ,而 Oracle10g 的驱动 ojdbc14.ar 与 JDK1.6 有一定的兼容性问题,会以下面的提示信息,可将 Oracle11g 的驱动文件 object6.jar 复制到 ${WAS_INSTALL_ROOT} \lib\ext 下面(用10g的驱动也不会有问题)
[10-11-10 15:32:34:171 CST] 00000014 InternalGener I DSRA8204I: Database 产品版本: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options [10-11-10 15:32:34:187 CST] 00000014 InternalGener I DSRA8205I: JDBC driver 名: Oracle JDBC driver [10-11-10 15:32:34:203 CST] 00000014 InternalGener I DSRA8206I: JDBC driver 版本: 10.2.0 .1.0 [10-11-10 15:32:34:203 CST] 00000014 InternalOracl W DSRA7042W: Oracle 不支持将版本 10 的 JDBC 驱动程序与应用程序服务器使用的 Java 运行时环境的版本配合使用。
|
3. 重启 WebSphere 。
1. 点击 [ 资源 ]->[JDBC]->[JDBC 提供程序 ]
2. 选择一个作用域,例如选择最下面的一个,作用域为 server1
3. [ 新建 ]
4. “ 数据库类型”选择 Oracle; “实现类型”选择“连接池数据源” ;
5. “另存为 WebSphere 变量 ${ORACLE_JDBC_DRIVER_PATH} 的 ojdbc6.jar 的目录位置”设置为: ${WAS_INSTALL_ROOT}/lib/ext
6. [ 下一步 ]
7. [ 完成 ]
8. 点击“ Oracle JDBC Driver ”链接
9. 将“类路径”里面的 ojdbc6 改成 ojdbc14
10. [ 确定 ]
11. 点击页面上方的“保存”链接
1. 点击 [ 资源 ]->[JDBC]->[ 数据源 ]
2. 选择一个作用域,例如选择最下面的一个,作用域为 server1
3. [ 新建 ]
4. “ 数据源名 ” 填写“ PortalOracleDatasource ”;“ JNDI 名称”填写“ jdbc/LiferayPool ”
5. [ 下一步 ]
6. 点击“使用现有的 JDBC 提供程序”,选择“ Oracle JDBC Driver ”
7. [ 下一步 ]
8. “ URL ”,按实际的数据库连接串填写,例如: jdbc:oracle:thin:@172.16.25.219:1521:orcl
9. [ 下一步 ]
10. [ 下一步 ]
11. [ 完成 ]
12. 点击“ PortalOracleDatasource ”链接
13. 点击页面右边“ JAAS –J2C 认证数据”链接
14. [ 新建 ]
15. “别名”可任写,例如: portalDbUser ;“用户标识”和“密码”为连接数据库的用户名和密码。
16. [ 确定 ]
17. 点击页面上方的“保存”链接
18. 点击页面上方的“ PortalOracleDatasource ”链接
19. [ 安全性设置 ]- 下面的“组件管理的认证别名”和“容器管理的认证别名”都选择刚才创建的认证。
20. [ 确定 ]
21. 点击页面上方的“保存”链接
22. 勾选“ PortalOracleDatasource ”链接前面的选择框,点击 [ 测试 ]
23. 页面上方将出现测试成功的提示消息。
因为 Portal 的核心应用必须使用根上下文“ / ”,而 WebSphere 自带的示例应用 DefaultApplication 已经使用了根上下文,所以需将其改名。
1. 登录 Websphere 管理控制台
2. [ 应用程序 ]->[ 应用程序类型 ]->[WebSphere 企业应用程序 ]
3. 点击“ DefaultApplication ”链接
4. 点击“ Web 模块属性”下面的“ Web 模块的上下文根”链接
5. 将“上下文根”的值改为“ /defaultWeb ”
Portal 的核心应用位于 ${portal_home}\tomcat-5.5.27\webapps\ROOT 下面
1. 修改 WEB-INF\classes\portal-ext.properties 文件,加入一行文字(可以不修改,默认在c:\windows\system32\config\systemprofile下面创建liferay目录)
default.liferay.home=C:/liferay |
2. 将 ROOT 下面的文件打成 portal.war
3. 登录 Websphere 管理控制台
4. [ 应用程序 ]->[ 新建应用程序 ]->[ 新建企业应用程序 ]
5. 在“本地文件系统”下,点击“浏览”,选择刚才打包的 portal.war
6. 一直点击 [ 下一步 ] ,在“为 Web 模块映射上下文根”步骤,上下文根一定要为“ / ”
7. [ 完成 ] (安装需要比较长的时间)
8. 点击页面下方的“保存”链接(需要较长的时间响应)
9. [ 应用程序 ]->[ 应用程序类型 ]->[WebSphere 企业应用程序 ]
10. 选取“ portal_war ”,点击 [ 启动 ] 按钮
11. 从后台可以看到 portal 启动成功的信息,但 Portal 还不能访问,需要重启 WebSphere
12. 重启后,可通过 http://localhost:9080 访问 Portal ,但要部署完 mytheme 主题后,页面才会显示正常, mytheme 主题的部署见下一节“部署插件”。
13. 如果提示该页无法显示,可以是 web 应用的默认端口有所变化,可按下面的步骤查看访问端口
14. [ 服务器 ]->[ 服务器类型 ]->[WebSphere Application Server]
15. 点击“ Server1 ”链接
16. 点击右边的 [ 通信 ]->[ 端口 ]
17. WC_defaulthost 为 web 应用的访问端口
将 ${portal_home}\tomcat-5.5.27\webapps 下面的 tunnel-web 和 mytheme 两个目录下面的文件,分别打成 war 包,按照下面部署插件的方法安装到 WebSphere 。
Portal 的安装手册中,有描述如何开启 Portal 的自动部署功能。我们需要配置“目标目录”的值,这里我们在原来“部署目录”的同一级,创建一个 deplayed 目录。
注意: tunnel-web 和 mytheme 的部署可以跳过步骤 1 和 2 。
1. 将打包后的插件( war 文件)复制到“部署目录”
2. 系统会自动对 war 文件进行处理,并将文件移动到“目标目录”,整个过程大概需要几十秒的时间
3. 登录 Webshpere 的管理控制台
4. [ 应用程序 ]->[ 应用程序类型 ]->[WebSphere 企业应用程序 ]
5. 选取“ portal_war ”,点击 [ 更新 ] 按钮
6. [ 应用程序更新选项 ] 下,点选“替换或添加单个模块”,选择“目标目录”下要上传的 war 文件,指定模块的名称(注意 war 文件所有路径不能含有中文)。
7. [ 下一步 ]
8. 按照下图所示选择后, [ 下一步 ]
9. 一直点击 [ 下一步 ] ,在“为 Web 模块映射上下文根”这一步骤,“上下文根”的值与模块名对应
10. [ 完成 ] (安装需要比较长的时间)
11. 点击页面下方的“保存”链接(需要较长的时间响应)
1. 需要在 Portlet 的 war 包的 WEB-INF 目录下增加 web.xml 文件, web.xml 的内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <context-param> <param-name>com.ibm.websphere.portletcontainer.PortletDeploymentEnabled</param-name> <param-value>false</param-value> </context-param> <listener> <listener-class>com.liferay.portal.kernel.servlet.PortletContextListener</listener-class> </listener> </web-app> |
2. 如果使用的是我们提供的 Portlet 模板开发的插件,还需要修改 Portal 企业应用的类加载方式,按下面的步骤操作
3. [ 应用程序 ]->[ 应用程序类型 ]->[WebSphere 企业应用程序 ]
4. 点击“ portal_war ”链接
5. 点击“详细属性”下的“类装入和更新检测”链接
6. “ WAW 类装入器策略”,选择“应用程序的单个类装入器”,点击 [ 确定 ]
7. 点击页面上方的“保存”链接