浏览 5438 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-22
http://pikachu.iteye.com/blog/39937中我们分析了portal render时的基本过程,但是其中的一个环节
在 Liferay 4.2 parallel rendering 探索 Velocity.evaluate(vc, sw, RuntimePortletUtil.class.getName(), content) 让人很疑惑 这次我们要打开这里的谜团,看看Velocity中的content到底是什么。 这次我决定用动态的代码trace来帮助我们的trace 首先要下载到liferay的源代码,并加载到eclipse中。 然后修改liferay 的 bin/catalina.bat文件 将 set JAVA_OPTS=-Xms128m -Xmx512m -Dfile.encoding=UTF8 -Duser.timezone=GMT -Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config -> set JAVA_OPTS=-Xms128m -Xmx512m -Dfile.encoding=UTF8 -Duser.timezone=GMT -Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config -Xdebug -Xrunjdwp:transport=dt_socket,address=4321,server=y,suspend=n 新增的参数是告诉jdk,请在4321端口上监听我的调试命令。 其他的java程序也可以用类似的方法进行调试 startup启动liferay 如果没有异常,我们在Eclipse|Run|Debug|Remote Java Application下新增一个调试配置。将port设置为4321 debug 没有反应?? 切换到Debug Perspect Bingo!! 既然调试器已经连接到liferay上了,我们就可以设置断点 在portal-ejb/src下,找到com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil 在Velocity.evaluate设置断点 然后用浏览器打开liferay页面,稍等片刻 马上watch content这个变量 很神奇,竟然是一套模板的内容 仔细查看其中的内容有 $processor.processColumn("column-1") 终于和上次我们的跟踪到的TemplateProcessor.processColumn联系起来了。 那么这套content是从哪里来的呢? 把trace 倒退几层就找到了 打开html\portal\layout\view\portlet.jsp 找到了 String content = LayoutTemplateLocalUtil.getContent(layoutTypePortlet.getLayoutTemplateId(), false, theme.getThemeId()); RuntimePortletUtil.processTemplate(application, pageContext, request, response, content); 原来content就是Layout Template的内容 另外搜索有$processor.processColumn("column-1")的文件也会发现,这些文件都在layouttpl目录下 最后我们终于把整个环串了起来 LayoutAction->(forward)portal.layout-> (tiles定义)-> html/common/themes/portal.jsp-> (include)portal_normal.jsp-> (include)/portal/layout.jsp-> (include)/portal/layout/view/portlet.jsp(加载template文件)-> RuntimePortletUtil.processTemplate-> Velocity.evaluate(使用template内容作为Velocity模板render)-> TemplateProcessor.processColumn-> PortletColumnLogic.processContent-> 带出 /html/portal/load_render_portlet.jsp; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |