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

Reply via email to