On 2003.02.21 18:58 Bill Burke wrote:
> 
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] Behalf Of
> Hiram
> > Chirino
> > Sent: Friday, February 21, 2003 6:44 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [JBoss-dev] TxInterceptor split is really really bad
> >
> >
> >
> > --- Bill Burke <[EMAIL PROTECTED]> wrote:
> > > >
> > > >
> > > > I would like to note that my future plans for this
> > > involve method specific
> > > > interceptor chains with a variety of "client side"
> > > and "server side" tx
> > > > interceptors, each one performing half of the
> > > TxSupport work.  No maps,
> > > > just different specialized interceptors, with
> > > different interceptors per
> > > > method depending on the tx support.
> > > >
> > >
> > > Hmmmm...thanks for mentioning this.  The AOP
> > > framework will have to change
> > > to support his type of per method intercepiton.
> > >
> > > Currently the ClassAdvisor asks the
> > > InterceptorFactory for an instance of an
> > > Interceptor and adds it to the interceptor chain.
> > > For what you want to do,
> > > this will have to change.  The InterceptorFactory
> > > should be responsible for
> > > adding interceptors to the chain.  Otherwise, my
> > > isolation and separation of
> > > metadata, interceptors, and pointcuts will be
> > > broken.
> > >
> >
> > I don't think that you model would be too broken.
> > His interceptors should only hav to implement the
> > org.jboss.aop.InvocationFilterInterceptor interface:
> > boolean intercepts(Invocation invocation);
> >
> > The org.jboss.aop.Invocation.invokeNext() will skip
> > over interceptors that do not interested the
> > invocation.  Currently invokeNext() interogates the
> > intercetors on every invocation, but I think that we
> > should be able to keep a per Invocation interceptor
> > stack cache so that we can skip the interogation after
> > the first method call.

Per method interceptor stacks will eliminate the need to the interceptor
filter interface.

> >
> 
> That's not the issue.  The issue is configuration.  He wants to avoid
> sending over metadata about the method/tx bindings. 
WTF???

I want to send to the client the information about whether an exising tx
needs to be sent, and as I have indicated I would like to encode this in
which interceptor is in each method's client side invocation chain.  Until
we have method specific interceptor chains, I need a method to tx support
map.



 TO do this he
> creates a
> Mandatory.java class and attaches it to the method.  You see now?
> 
> Actually David, you actually have almost the same memory footprint. 

As what???

> WIthout
> per method , you have one instance of the Tx interceptor.  WIth, you have
> an
> instance per interceptor.  Almost the same as a hashmap of methodnames
> and
> strings identifying the tx attribute.

yes, this is obvious.


Maybe we have really different ideas about what will go in the interceptor
stack for an aop object.  I was assuming that  it would go like this, just
like an ejb:


local aop object > ci1 > ci2 > "local invoker" > si1 > si2 > si2 > actual
aop object


and 


remote aop object > ci1 > ci2 > real invoker (transport) > si1 > si2 >
actual aop object


where ci are client interceptors and si are  server interceptors.

This way any aop object gets the same interceptor stack no matter if it is
local or remote.  

I don't really care if either the local or remote aop object is the actual
object or some kind of proxy: I don't think it makes any difference.  I
don't see why the remote aop thingy can't be the actual object rather than
a dynamic proxy, it's just that all the work gets tossed over to a
different server.

If you plan to leave  out the ci's for local aop objects I want to know how
you have any chance of getting even mildly similar behavior between local
and remote versions.


===========

corba

My current (limited) understanding of corba tx support  leads me to believe
that any working corba implementation will use the corba tx policies to
their fullest  advantage and will have already established and enlisted a
transaction branch on the corba tx manager whenever it sends a transaction
with  an invocation.  We can't do anything about this, so we can't save it
some work if it happens to be calling a method  (not supported or requires
new) that won't use the tx that was sent.

I assume we can't install any kind of real client side interceptors in
corba, we just have to take what is sent to us.  If this is wrong please
speak up.

Therefore, we have to duplicate the functionality of the client side
interceptors somewhere on the server side in the iiop invoker.   If we
don't do this we will get the wrong semantics.  I don't know exactly how
the iiop invoker works, but I would hope that we could set it up so that it
looks like:

outside world >>> something corba and proxy-like > ci1 > ci2 > some kind of
invoker-like thing > si1 > si2 > actual target object

This is really similar to a local ejb call, except it may not start with a
dynamic proxy ( I don't know what it would start with). Also I don't know
it the invoker-like thing would do nothing or something.



For the same reason that I think you need exactly the same client and
server interceptors for aop objects I think you need exactly the same
interceptors for corba and non-corba objects.  With corba, these "client"
interceptors just have to live on the server before the "invoker/transport"


david






> 
> Bill
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
> The most comprehensive and flexible code editor you can use.
> Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
> www.slickedit.com/sourceforge
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 


-------------------------------------------------------
This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
The most comprehensive and flexible code editor you can use.
Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
www.slickedit.com/sourceforge
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to