On Jan 22, 2010, at 7:53 AM, Gurkan Erdogdu wrote:
What!? I'm shocked. Never would have guessed ;)
lol
@Scope manager (OWB) can remove Stateful beans e....
Currently we use this code in EJBBean to create session object
proxies;
String jndiName = "java:openejb/Deployment/" +
JndiBuilder.format(deploymentInfo.getDeploymentID(),
this.iface.getName());
Object object = onctext.lookup(jndiName)
If this proxy provide remove() method, we may call it using
reflection.
Right, exactly.
-David
2010/1/21 David Blevins <[email protected]>
Also moved to a new thread.
On Jan 21, 2010, at 8:27 AM, Gurkan Erdogdu wrote:
Hi David;
I would also like to help on JCDI integration :)
Anyway, a critical piece we'll need for the integration is some way
that
the @Scope manager (OWB) can remove Stateful beans even though
these beans
may not have a remove method. The best way to do this is to craft up
something a bit like the old 2.1 days when there was a standard
remove
method on every EJB proxy.
We add this interface to every proxy:
org.apache.openejb.core.ivm.IntraVmProxy
In the simplest case, we just add a remove() method to that guy.
Maybe
more elegantly, we make a new interface just for this directly
under the
org.apache.openejb package and maybe have the IntraVmProxy
interface just
extend it.
The "_invoke" method of the EjbHomeProxyHandler would be coded to
ignore
the remove method. The "_invoke" method of the
"EjbObjectProxyHandler"
would be coded to spot it and then call the "remove(...)" method of
the
EjbObjectProxyHandler just like it would do for an EJBObject.remove
call.
We might have to pass a different method instance into that remove
method
for it work. Likely it will have to be an instance of either the
EJBLocalObject.remove method or the EJBObject.remove method for the
container to understand it.
That's the general idea anyway. Something along these lines should
work.
-David
--
Gurkan Erdogdu
http://gurkanerdogdu.blogspot.com