Patches item #629903, was opened at 2002-10-28 15:21
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376687&aid=629903&group_id=22866
Category: JBossServer
Group: v3.2
Status: Open
Resolution: None
Priority: 5
Submitted By: Rich Tong (rtong)
Assigned to: Nobody/Anonymous (nobody)
Summary: fix for can't disable pass-by-reference
Initial Comment:
I would like to submit a fix for bug that pass-by-reference
optimization for intraVM invocation can't be disabled. This is
for v3.2beta. The fix is described as following. Thanks.
1.for org.jboss.invocation.InvokerInterceptor
use the following for method invoke():
public Object invoke(Invocation invocation)
throws Exception
{
// optimize if calling another bean in same EJB-
application
//RT: fix
InvocationContext context =
invocation.getInvocationContext();
Boolean intraVMOptimization = (Boolean)
context.getValue("Optimized");
//by default, use optimization
boolean optimized = (intraVMOptimization == null? true:
intraVMOptimization.booleanValue());
//allow user to turn off local optimization
if (isLocal() && optimized) {
// The payload as is is good
return localInvoker.invoke(invocation);
}
else {
// this payload will go through marshalling
return invocation.getInvocationContext().getInvoker
().invoke(invocation);
}
}
2.for org.jboss.proxy.ejb.ProxyFactory
(1)add a method
protected void setIntraVMOptimization(InvocationContext
context) throws Exception{
boolean optimized =
MetaData.getOptionalChildBooleanContent
(invokerMetaData.getProxyFactoryConfig(), "Optimized");
context.setValue("Optimized", new Boolean(optimized));
}
(2)add codes to method
public Object getStatefulSessionEJBObject(Object id)
{
...
context.setInvokerProxyBinding
(invokerMetaData.getName());
//RT: fix intraVM optimization problem
try{
setIntraVMOptimization(context);
}catch(Exception e){
//do nothing
;
}
...
}
(3)add codes to method
public Object getEntityEJBObject(Object id)
{
...
context.setInvokerProxyBinding
(invokerMetaData.getName());
//RT: fix intraVM optimization problem
try{
setIntraVMOptimization(context);
}catch(Exception e){
//do nothing
;
}
...
}
(4)add codes to method
public Collection getEntityCollection(Collection ids)
{
...
context.setInvokerProxyBinding
(invokerMetaData.getName());
//RT: fix intraVM optimization problem
try{
setIntraVMOptimization(context);
}catch(Exception e){
//do nothing
;
}
...
}
(5)add codes to method
protected void bindProxy() throws Exception
{
...
context.setInvokerProxyBinding
(invokerMetaData.getName());
//RT: to provide intra-VM optimization flag
setIntraVMOptimization(context);
...
}
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=376687&aid=629903&group_id=22866
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development