Hi Irantha
Sorry about this being rather long..
But you already new I am working on transactions. I even threw away
one of my earlier JTA implementations because you was not willing to
commit. Sure its not perfect but we could have made it perfect with
everybody's contributions. Aren't there a place for iterative &
collaborative development in Apache projects?
I think by collaborating rather than competing, everybody can do a
greater contribution to this project as well as a greater good for the
open source community.
Let me just share with you where I started contributing to Synapse [1]
back in April 2006.. I was new to all this too.. Usually its a good
practice to select something manageable in complexity for a first
contribution.. since it will initially be more about learning the
project, and its development style etc, and will allow others to comment
and review on your code for you to improve your subsequent contributions.
"/As the group started to develop their own version of the software,
moving away from the NCSA version, more people were attracted and
started to help out, first by sending little patches, or suggestions, or
replying to email on the mail list, later by more important
contributions./"[7]
See [2], [3], [4], for more examples on how some other committers
started with Synapse. Synapse is now a mature project, with many users
depending on it in production and they have been expecting many advanced
features and enhancements from JMS for quite some time [5]
Of course you and anyone else is more than welcome to contribute.
Initially you can file JIRAs, reply to user queries on the list and help
them, update documentation, provide simple patches etc.. Then once you
are familiar with the codebase, and the style of code locks to the same
phase, you would be in a much better position to make more important
contributions. Since we mainly communicate over the mailing lists, thats
how both the dev and user communities gets to know you, and how you
build your credibility within the community. I would also suggest the
Wiki for any new ideas if they cannot go into a mail or JIRA.. and also
suggest thinking out loud in email and JIRA's so that people knows what
you are upto before you do something. See how many emails Senaka is
exchanging on ws-commons [8] and the frequency, and I think its a fine
example of iterative and collaborative development in Apache projects
I don't see much related to JTA transactions on your patch yet, so do
you want to come to a consensus on how to proceed as there is no point
both of us doing the same?
Thanks :-) .. actually the JTA use is hidden behind as service level
parameters.. if you specify a parameter stating you require to process a
request using JTA, you just specify that parameter, and its handled for
you. The UserTransaction then flows until completion of the thread, and
on return to the thread pool, commit/rollback the transaction like on a
JEE server with setRollbackOnly. You can also commit it in the next
immediate transport send to actually send the message out and get a
response. Where required *and* supported by the TM, one can disconnect
the JTA transaction from the thread, and then its upto the user how he
manages things.
Like you may have guessed, my updates does not let one use a JTA
transaction for a HTTP/s message for example.. And I think you could
implement a set of mediators that allows one to create or play with the
transactions that flows into mediation. This could be
<transaction
action="new|use-existing-or-new|fault-if-no-tx|commit|rollback|suspend|resume"/>
Out of these the commit, rollback, suspend and resume would be easy
ones, since you just play with a UserTransaction that comes on the
message level property named BaseConstants.USER_TRANSACTION. To create a
new transaction (e.g. to use JTA with a http message) you should define
a new configuration element (like clustering for example) in the
axis2.xml that defines the JNDI parameters, and the JNDI name to use to
get a UserTransaction. This code should ideally belong to a new package
in the Axis2 codebase. I will not be working on these at all, so I
suggest you look at them right away. You could begin by creating a JIRA
for this set of mediators, and assign it to yourself, and keep updating
it and/or communicating on the dev list on any issues.
I hope you did not get discouraged about contributing to Synapse, and I
apologize for any hurt this has caused. I hope you would work on the
above patch, and look forward to seeing you contributing more to Synapse
in future.
asankha
[1] http://tinyurl.com/6cpfxp
[2] http://tinyurl.com/5bd52f
[3] http://tinyurl.com/59fapj
[4] http://tinyurl.com/63wgdd
[5] http://tinyurl.com/575la3
[6] http://tinyurl.com/5l58cx
[7] http://tinyurl.com/6982qx
[8] http://tinyurl.com/5nyc82
--
Asankha C. Perera
http://adroitlogic.org
http://esbmagic.blogspot.com