论坛首页 Java企业应用论坛

Oracle Portal 个人开发经验总结

浏览 5239 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-15  
1:在deregister一个provider时,有可能这个provider的url已经不可用了,但是portal还是会尝试去链接provider,直到timeout,如果timeout时间比较长,deregister的时间就会很长.
解决办法:先Edit Registration,把provider的链接给程一个可用的url链接,然后在deregister,这样速度会快很多。

2: Export Oracle Portal Instance时,provider信息也会被导出来,但是在import时,Oracle Portal会检查要注册的Provider链接信息,如果目标机器跟源机器的Provider源不能够连通,那么导出到provider就不会被注册到目标portal instance上(我们在部署portal时就出现了这个问题,我们在内网开发的,目标机也是vpn内网)。
解决办法:先把portlet部署到目标机上,然后在把本地的provider注册信息都改成目标机的url,再export,在到目标机import,这样provider注册信息就能够被导到目标机器上了。

3:开发Portlet中JS问题,portlet开发不同于普通页面的开发,因为portlet很可能被加入到任意一个portal页,同时一个portlet可能被加入portal页多次,那么在portlet里写javascript时命名就注意防止命名冲突,而且如果是多人协作开发portlet时,js命名尤为重要,要有一个好的命名规则,否则就会出现portlet单个跑都没有问题,但是一放到portal上就出不来了。
解决办法:使用Extjs的命名空间+好的命名规则+PDK-Java的PortletRenderRequestObj.getQualifiedParameter().

4: 开发Portlet中JS引用库问题,不要在每个portlet中都引用公共JS库文件,例如prototype.js, ext-base.js等等,这样会造成js库重复引用。
解决办法:把JS库应用放到HTML Template里去,在portlet里不包含基础JS库的引用。

5:Ajax跨域提交问题,这个在portal开发中经常出现,因为provider很可能(大多数情况下都不是跟portal server在一台机器上),Ajax跨域请求会出错。
解决办法:创建一个AjaxProxy工程,部署到portal server上,代码详见http://ivanl.iteye.com/blog/47910 这篇blog,在portlet中都通过ajaxProxy来进行Ajax请求调用。

6:Parameter传递,前文提到过portlet打多数情况下都不会跟portal instance在一台机器上,用户请求的又都是portal page,这样在url后面加上参数是无法直接传给portlet的。
解决办法:
  6.1: 在portal page上建立参数,用来接受url中的参数。
  6.2: 在portlet 的provider.xml里声明输入参数,准备在portlet中使用。
  6.3: 在Portal page中的properties->parameters tab中mapping page parameter and portlet parameter.

7: portlet一定是html片段,不能包含<html>,<body>等标签,我见过有人这么加过(暴汗)。

8:整个页面是div+span的梦想,在portal中不能实现,因为每一个region就是一个table,Oracle poral是用table来布局的。
解决办法:别想了。
   发表时间:2007-10-15  
呵呵,楼主总结的东西对我很有帮助。请教一个问题。

在 oracel portal 上已经部署了一个 war。
后来该 war 中又新增了几个 porlet,请问怎样增量部署?
或者有没有彻底卸载portlets,或彻底清除已经注册的 provider 的办法?
0 请登录后投票
   发表时间:2007-10-15  
lyon_ding 写道
呵呵,楼主总结的东西对我很有帮助。请教一个问题。

在 oracel portal 上已经部署了一个 war。
后来该 war 中又新增了几个 porlet,请问怎样增量部署?
或者有没有彻底卸载portlets,或彻底清除已经注册的 provider 的办法?


1:新增portlet后,redeploy你的war/ear就可以
2:进portal welcome->navigator->provider->registered provider->unregister provider
0 请登录后投票
   发表时间:2007-10-19  
严重同意楼主观点,小弟也是开发PORTLET过,你所说的我问题我起初也都发现了并在项目组里制定了开发规范和example代码。
0 请登录后投票
   发表时间:2007-10-20  
今天又碰到了一个portal page传参数问题。
问题描述:我在html template里使用portal  tags #PAGE.CUSTOMIZEPAGE#,这个tag会render一个链接,指向本页的personalize page,在personalize page里可以只有设置portlet的布局,增加删除portlet,而不影响其它用户,这个功能很好,但是在返回页面时,原来页面url的参数就不见了。

问题分析:#PAGE.CUSTOMIZEPAGE# render出来的链接回把原页面的链接当成一个参数p_back_url传给personalizepage,但是原页面里带的参数,他就会截去
例如源页面url为http://some.com/portalPage?pageParam=abc
p_back_url子会等于http://some.com/portalPage,问号后面的都回被截去,导致在personalize后点击close,原来的页面参数丢失。

解决办法:自己写js,把丢失的页面参数拼在p_back_url后面。

疑问:我觉得这种解决办法不是很好,不知道有没有更好的解决办法?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics