资源绑定导致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架构内部的表达式解析存在性能问题。
–