]
ahus1 updated JBSEAM-4861:
--------------------------
Attachment: Component.patch
Patch to fix this in Seam 2.2/2.3
Component.java uses application wide factoryLock too often
-----------------------------------------------------------
Key: JBSEAM-4861
URL:
https://issues.jboss.org/browse/JBSEAM-4861
Project: Seam 2
Issue Type: Patch
Components: Core
Affects Versions: 2.2.2.Final, 2.3.0.ALPHA
Reporter: ahus1
Attachments: Component.patch
Whenever getInstanceFromFactory() is called and a factory is used, a (application wide)
lock is used: factoryLock.
In my environments the Factory uses expensive calls to the backend to create an object,
and during this time no other Factory method is allowed to be called. This is a severe
bottleneck in a multiuser environment.
This lock is important for APPLICATION scoped components, but other components that are
i.e. CONVERSATION scoped, Seam already ensures that only one Thread has access to the
current conversation. The same should be true for PAGE and EVENT. In this cases no lock
should be acquired.
See the follwing code snippet. I also attach a patch.
I tested the patch for Seam 2.2.2.Final - I would be most happy to have this included in
2.2 and 2.3 branch.
Br Alexander.
ScopeType s = getOutScope(factoryMethod.getScope(),
factoryMethod.getComponent());
if (s != ScopeType.CONVERSATION && s != ScopeType.EVENT
&& s != ScopeType.PAGE) {
factoryLock.lock();
}
try {
/* **** */
} finally {
if (s != ScopeType.CONVERSATION && s != ScopeType.EVENT
&& s != ScopeType.PAGE) {
factoryLock.unlock();
}
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: