[
https://issues.jboss.org/browse/RF-11000?page=com.atlassian.jira.plugin.s...
]
Brian Leathem commented on RF-11000:
------------------------------------
To summarize my understanding of the implications of this patch:
The code in question:
{code:title=ResourceFactoryImpl.java}
protected Resource createDynamicResource(ResourceKey resourceKey, boolean
useDependencyInjection) {
Resource result = null;
Map<String, String> params = null;
MappedResourceData mappedResourceData = mappedResourceDataMap.get(resourceKey);
ResourceKey actualKey;
if (mappedResourceData != null) {
actualKey = mappedResourceData.getResourceKey();
if (useDependencyInjection) {
params = mappedResourceData.getParams();
}
} else {
actualKey = resourceKey;
if (useDependencyInjection) {
params = Collections.<String, String>emptyMap();
}
}
if (Strings.isNullOrEmpty(resourceKey.getResourceName())) {
return null;
}
if (actualKey.getResourceName().endsWith(".ecss")) {
// TODO nick - params?
result = createCompiledCSSResource(actualKey);
} else {
result = createHandlerDependentResource(actualKey, params);
}
if (result != null) {
result.setLibraryName(resourceKey.getLibraryName());
result.setResourceName(resourceKey.getResourceName());
} else if (mappedResourceData == null) {
result = defaultHandler.createResource(actualKey.getResourceName(),
actualKey.getLibraryName());
}
return result;
}
{code}
Secifically the line:
{code:title=ResourceFactoryImpl.java#L431-436}
if (actualKey.getResourceName().endsWith(".ecss")) {
// TODO nick - params?
result = createCompiledCSSResource(actualKey);
} else {
result = createHandlerDependentResource(actualKey, params);
}
{code}
The proposed patch implies that _mappedResourceData == null_ implies that the resource is
static. This implication is important, because static resource should not be loaded via a
call to _createHandlerDependentResource(...)_, but rather with a call to
_defaultHandler.createResource(...)_.
Alternatively, as Lukas explains it:
{quote}
Dynamic resources are loaded via rfRes, and these have some base64 encoded parameter which
turns into mappedResourceData. When this parameter is not provided, no parametrization is
done and it doesn't make sense to render dynamic resource (which is dynamic because of
parametrization)
{quote}
Hit miss for class loader cost performance problem in Richfaces
4.1.0.
----------------------------------------------------------------------
Key: RF-11000
URL:
https://issues.jboss.org/browse/RF-11000
Project: RichFaces
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: core
Affects Versions: 4.1.0.Milestone1
Environment: Linux, Java 6
Reporter: Pawel J.
Assignee: Brian Leathem
Priority: Trivial
Labels: patch_proposed
Fix For: 4.1.0.Milestone3
Attachments: ResourceFactoryImpl-patch.txt
Original Estimate: 1 hour
Remaining Estimate: 1 hour
There are scenarios when resources are retrieved during no partial
request processing:
# JSF html renderer (such as ScriptRenderer from faces) require to
know resources names to include them to html/head,
# Resources content request.
We have two types of resources: dynamic and static. Predefined dynamic
resources (such as StateHolderResource) are read using class loader as
they are java classes. Static resources are kept in resources folder
as part of richfaces release jars (jquery.js, richfaces.js, etc).
There is a special case with compiled css that is consider as dynamic
resources but is not important in our case.
The problem appears when we try to load static resources using dynamic
loader. This make unnecessary lookup in java class loader space which
cost time and of course we miss the call as static resources not
exists there.
Statistics that shows class loader hits for every richfaces/ajax4jsf no partial request
that will be eliminated after patch:
{code}
Resource::jquery.js ::loading::timens:: 558000 ns::timems::0.558
ms::all::1.561496 sec
Resource::richfaces.js ::loading::timens:: 490000 ns::timems::0.490
ms::all::1.561986 sec
Resource::richfaces-base-component.js::loading::timens:: 593000 ns::timems::0.593
ms::all::1.563672 sec
Resource::richfaces-queue.js ::loading::timens:: 672000 ns::timems::0.672
ms::all::1.564350 sec
Resource::richfaces-event.js ::loading::timens::3292000 ns::timems::3.292
ms::all::1.569386 sec
{code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira