You are browsing the archive for 2009 六月.

资源绑定导致ADF应用严重的性能问题

六月 18, 2009 in Oracle 融合中间件

 

在Oracle发布的JDeveloper 11g第一个版本中,为实体对象或视图对象定义属性控制提示,如属性的标签文本、工具提示和格式掩码提示等等,

JDeveloper自动生成如下格式的资源绑定

<LABEL
          ResId=”${adfBundle['com.oracleseeker.model.services.admin.EmpBoundle']['_U662F_U5426_U542F_U7528']}”/>
        <TOOLTIP
          ResId=”${adfBundle['com.oracleseeker.model.services.admin.EmpBoundle']['_U83DC_U5355_U9879_U662F_U5426']}”/>

在Fusion Web应用开发过程中,只要使用了定义了如上格式资源绑定的视图对象来创建视图页面,导致页面的加载非常的慢,

JSF页面的get时间基本上都在5秒以上,这样的速度对于一个web应用来说是无法容忍的。

 

而从JDeveloper 11g Update1版本之后,Oracle发现了此问题并作出了修正,采用了新的资源绑定方式:

<LABEL
          ResId=”com.oracleseeker.model.queries.admin.EmployeesVO.FullName_LABEL”/>

…..

<ResourceBundle>
    <PropertiesBundle
      PropertiesFile=”com.oracleseeker.model.AppModelBundle”/>
  </ResourceBundle>

采用新的绑定方式解决了性能问题,新的资源绑定方式不但解决了性能问题,其实还带来了其它的好处:

将资源绑定信息统一到PropertiesFile中文件中维护,资源引用ResId采用了视图对象下属性列名的具体属性作为消息的关键字,这样可以在修改项目包结构的时候减少修改量。

也不知道采用这样的资源绑定方式就与旧的绑定方式有非常大的区别,从Oracle 的Metalink上面找到一些痕迹说是由于ADF架构内部的表达式解析存在性能问题。

 

 

beforePhase使用不当导致ADF应用性能问题

六月 16, 2009 in Oracle 融合中间件

 

在使用Oracle ADF进行Fusion Web应用开发时,有时候希望在页面显示之前进行一些逻辑处理,自然会想到使用生命周期的事件,

JSF(Oracle ADF基于JSF)页面的生命周期共分为6个生命周期阶段,而每个阶段之前和之后出发的事件,被称为阶段事件,这些事件由

listener处理,listener的配置可以查看web配置文件。

Read the rest of this entry →

getRowCount() VS getEstimatedRowCount()

六月 13, 2009 in Oracle 融合中间件

 

很久没有更新日志了,最近一段时间一直在为项目解决Oralce ADF的问题,同时也在学习和总结Oracle ADF的使用和开发技巧,希望逐步能够形成自己的最佳实践总结。

今天要描述的是ViewObjectImpl中针对行集的两个统计记录行数的两个方法:getRowCount()getEstimatedRowCount()

在Oracle ADF的Web应用中,经常会需要统计行记录的数量,如在表格的底部显示表格查询的记录数这样的需求,而如果不能够切当的使用方法,很有可能导致严重的性能问题。

可能会有人提出疑问“有这么严重吗?”,下面是Oracle ADF Java DOC中对于两个方法的描述:

 

Read the rest of this entry →