My answers/comments are inline:

> I am sorry I went on a tangent, it is just a pet peeve of mine for the
> longest time (and I still have to hear about OLE, who likes these
> discussions ;).

No need to apologize at all.  I think it's an interesting topic as well.
Plus you're the "boss" so :)

> 
> > In the 3.x series of JBoss, there isn't a way to have one SSB 
> > with a transaction attribute of Required call another SSB 
> > with a transaction attribute of Required on a second jboss 
> > instance and have both of those beans enlist in any kind of 
> > "native" JBoss transaction.  
> 
> Colocate! colocate! colocate! if you have a REAL reason for 
> not colocate
> let's hear it.
> 
> That has to do with the lack of distributed TM. Period.

I am arguing for co-locating, so i take it that your "challenge" for reasons
*not* to co-locate is not directed at me.  

Load balancing is one reason *for* co-locating.  Lets say I want to run
multiple instances of JBoss on separate iron(s) for performance reasons.
One instance that simply does all the persistence for my application with
synchronous session facades (or perhaps async MDB based dispatchers) in
front of entity beans.  Then I have another node that does all the business
logic/presentation logic in SSB's.  Then maybe a third for the front end
(jsp's, servlets, ssb's etc).  How would I inforce ACID semantics in this
setup if local only transactions are the only option? 

> That is easy. SPEED.  Distributed transaction are pricey and 
> difficult.
> By choice we did "fastTM" as an InVM implementation. Typical case of
> 90/10.  Most applications actually use only invm stuff and so 
> having an
> implemetnation that serializes stuff back and forth isn't worth it.
> Right now FastTM is REALLY FAST, so that the overhead of 
> synchronization
> is NIL (dozen or so native java method calls). It is one of 
> these things
> where we said "you really need DTM, write it or use tyrex".  Turns out
> Tyrex was a fake with critical methods throwing NotImplementException.
> But clearly we didn't BASE the design on distribution. 

I completely agree in terms of the speed aspect, however, shouldn't JBoss
still have the option/ability of doing distributed transactions being that
it is fundamental to a ACID n-tier based system?  How are transactions
handled today with clustering?  If a clustered node goes down, can JBoss
seemlessly pick up the pieces and move forward with a transaction or a
separate node, or does it just bail out and rollback the entire thing?

The major rub is that I can't even make a ejb to ejb call between two
different jboss instances because it is trying to push the transaction
context across the nodes, when the infrastructure doesn't support it (even
if I have a transaction attribute of NEVER on both ejbs).  I think this is
exactly what Scott was addressing in his original post, that at a bare
minium, we should have the ability to say, we don't want and can't have the
transaction context pushed to the node, so don't even try.  Of course this
does opens up other issues as far as other beans involved in the container
transaction and how they would be notified if the remote call fails.  I
presume this would have to be handled with tradition exception handling in
the bean that actually makes the call to the remote node and it's job would
be to mark the container transaction.

Another scenario is a MDB deployed in one instance that is using a custom
remote DestinationManager pointing to a JMS queue on a second JBoss instance
(which currently doesn't work in 3.x .. but i'll leave that for another
thread).  How is the transaction handled in that scenario?  If you say, just
put the MDB on the other instance that houses the JMS queue and move to a
push model instead of pull, then the problem I described above comes into
play. The MDB tries to push it's transaction context to the second node, and
fails.  So the only way to do it is for the MDB to be BMT which means I now
don't have the ability to use the message retry part of JMS.  I have to
write the code that handles failures, instead of letting the container do
what it was designed to do.

> 
> That being said 2 point:
> 1- even the EJB spec writers do research on invm tm.
> 2- we are writing parts of a real DTM.  Please help. 

I've read posts from Jencks and co. and it appears that a DTM is in the
works for 4.x.  So maybe this whole topic is a mute point.  But, it could be
(possibly) another year or more before 4.x is ready for production use as
well, so that is why i originally asked if there was the ability to port
this new feature to the 3.x series.

>   
> > If you have persistent JMS queues, then I would probably 
> > agree that having a distributed global transaction involved 
> > when asychronous transports are involved may not be best 
> > practice. 
> 
> That is what I contest.  Why ? So what if it is persistent/async?
> theoretically speaking what is the limitation here? 

I think the argument is that because you have persistence you are guaranteed
message delivery even if the node dies.  So once a message is successfully
posted to the queue, stack returns to the caller (ie async) the
"transaction" with the queue is technically done where the caller is
concerned.  With persistence, if the instance craters out before the message
is succesfully consumed, then you should still have the message persisted
and it would be picked back up and redispatched when the instance is brought
back up thus protecting the original "intent" of the original poster's
transaction.  

The originating caller can then be notified later on (if needed) once the
JMS based message is consumed and processed successfully by, for example,
posting back to a JMS queue on the caller's instance.  Basically a workflow
style system.

Dustin





-------------------------------------------------------
This SF.NET email is sponsored by: Thawte.com
Understand how to protect your customers personal information by implementing
SSL on your Apache Web Server. Click here to get our FREE Thawte Apache 
Guide: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0029en
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to