come up in my mind:Oracle Portal 个人开发经验总结

来源:百度文库 编辑:偶看新闻 时间:2024/06/11 23:18:31

Oracle Portal 个人开发经验总结

    博客分类:
  • 技术天地
OracleAjaxEXTJavaScriptprototype1:在deregister一个provider时,有可能这个provider的url已经不可用了,但是portal还是会尝试去链接provider,直到timeout,如果timeout时间比较长,deregister的时间就会很长.
解决办法:先Edit Registration,把provider的链接给程一个可用的url链接,然后在deregister,这样速度会快很多。

2: Export Oracle Portal Instance时,provider信息也会被导出来,但是在import时,OraclePortal会检查要注册的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片段,不能包含,等标签,我见过有人这么加过(暴汗)。

8:整个页面是div+span的梦想,在portal中不能实现,因为每一个region就是一个table,Oracle poral是用table来布局的。
解决办法:别想了。