我有以下场景:
- LR门户6.1.20 IBM WebSeal背后的EE GA2门户
- 分级网站
- 需要将其内容从暂存发布到活动的自定义portlet
自定义portlet使用一个扩展BasePortletDataHandler
并覆盖以下方法的类发布其内容:
- doExportData
- doImportData
- doDeleteData
- isAlwaysExport
- isPublishToLiveByDefault
- isAlwaysStaged
这在没有WebSeal的开发模式下运行得很好。在控制面板中,转到"站点页面"并调用"实时发布"。
然而,在生产中,每当这个过程花费超过2分钟时,我们就会得到WebSeal超时。该进程仍在后台运行,但用户无法判断它是否完成、是否有效。他从来没有得到任何反馈。
有没有一种方法可以为处理这些问题的控制面板实现一个自定义portlet?我如何获取/跟踪进程的状态,以及如何保持会话的有效性?
我对liferay没有任何经验,但我每天都管理WebSEAL,所以我可以从这个角度来处理你的问题。您可以增加单个交叉点的超时。我在过去的应用程序中也遇到过类似的情况。我们不得不暂停300秒。
[junction:junction_name]
http-timeout = 300
https-timeout = 300
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=%2Fcom.ibm.itame.doc_6.1.1%2Fam611_webseal_admin95.htm
您可能还需要增加服务器超时:
[server]
client-connect-timeout = 300
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.itame.doc_6.1.1/am611_webseal_admin94.htm?path=3_10_3_3_1_4_0_6_5#http-https超时
问题是应用程序没有通过TCP连接发送任何数据,因此WebSEAL会使连接超时。除非您可以更改应用程序的工作方式,否则您将不得不增加超时时间。最好使用AJAX或类似技术,让客户端在程序启动后定期向服务器查询状态。然而,我有一个客户正在与我们集成,他们无法更改应用程序代码,所以我也不得不增加他们的超时时间。