diff --git a/legal/antlr-2-LICENSE.txt b/legal/antlr-2-LICENSE.txt
new file mode 100644
index 0000000..d62cc1a
--- /dev/null
+++ b/legal/antlr-2-LICENSE.txt
@@ -0,0 +1,31 @@
+
+SOFTWARE RIGHTS
+
+ANTLR 1989-2006 Developed by Terence Parr
+Partially supported by University of San Francisco & jGuru.com
+
+We reserve no legal rights to the ANTLR--it is fully in the
+public domain. An individual or company may do whatever
+they wish with source code distributed with ANTLR or the
+code generated by ANTLR, including the incorporation of
+ANTLR, or its output, into commerical software.
+
+We encourage users to develop software with ANTLR. However,
+we do ask that credit is given to us for developing
+ANTLR. By "credit", we mean that if you use ANTLR or
+incorporate any source code into one of your programs
+(commercial product, research project, or otherwise) that
+you acknowledge this fact somewhere in the documentation,
+research report, etc... If you like ANTLR and have
+developed a nice tool with the output, please mention that
+you developed it using ANTLR. In addition, we ask that the
+headers remain intact in our source code. As long as these
+guidelines are kept, we expect to continue enhancing this
+system and expect to make other tools available as they are
+completed.
+
+The primary ANTLR guy:
+
+Terence Parr
+parrt@cs.usfca.edu
+parrt@antlr.org
diff --git a/legal/jaxws-tools-LICENSE.txt b/legal/jaxws-tools-LICENSE.txt
new file mode 100644
index 0000000..55ce20a
--- /dev/null
+++ b/legal/jaxws-tools-LICENSE.txt
@@ -0,0 +1,119 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
+
+
+
diff --git a/legal/jsr311-api-LICENSE.txt b/legal/jsr311-api-LICENSE.txt
new file mode 100644
index 0000000..55ce20a
--- /dev/null
+++ b/legal/jsr311-api-LICENSE.txt
@@ -0,0 +1,119 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)�the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)�ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections�2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section�2.1(b) above, no patent license is granted: (1)�for code that You delete from the Original Software, or (2)�for infringements caused by: (i)�the modification of the Original Software, or (ii)�the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)�Modifications made by that Contributor (or portions thereof); and (2)�the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections�2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section�2.2(b) above, no patent license is granted: (1)�for any code that Contributor has deleted from the Contributor Version; (2)�for infringements caused by: (i)�third party modifications of Contributor Version, or (ii)�the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)�under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)�rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)�otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections�2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections�6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48�C.F.R.�2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. �252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48�C.F.R.�12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
+
+
+
diff --git a/legal/regexp-LICENSE.txt b/legal/regexp-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/legal/regexp-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/legal/woden-impl-commons-LICENSE.txt b/legal/woden-impl-commons-LICENSE.txt
new file mode 100644
index 0000000..fef8c29
--- /dev/null
+++ b/legal/woden-impl-commons-LICENSE.txt
@@ -0,0 +1,202 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/modules/adb-codegen/pom.xml b/modules/adb-codegen/pom.xml
index 0b0d86f..b8880d0 100644
--- a/modules/adb-codegen/pom.xml
+++ b/modules/adb-codegen/pom.xml
@@ -93,7 +93,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/adb/pom.xml b/modules/adb/pom.xml
index 4ff7206..53dcbd8 100644
--- a/modules/adb/pom.xml
+++ b/modules/adb/pom.xml
@@ -86,7 +86,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java b/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
index 28a5b58..7c0fc6c 100644
--- a/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
+++ b/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
@@ -174,7 +174,7 @@
             for (Class exceptionType : exceptionTypes){
                 if (exceptionType.getName().equals(cause.getClass().getName())){
                     // this is an bussiness logic exception so handle it properly
-                    String partQName = method.getName() + getSimpleClassName(exceptionType);
+                    String partQName = inMessage.getAxisService().getName() + getSimpleClassName(exceptionType);
                     TypeTable typeTable = inMessage.getAxisService().getTypeTable();
                     QName elementQName = typeTable.getQNamefortheType(partQName);
                     SOAPFactory fac = getSOAPFactory(inMessage);
diff --git a/modules/addressing/pom.xml b/modules/addressing/pom.xml
index 352b91a..e095309 100644
--- a/modules/addressing/pom.xml
+++ b/modules/addressing/pom.xml
@@ -85,7 +85,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/all/pom.xml b/modules/all/pom.xml
index a754c72..053247b 100644
--- a/modules/all/pom.xml
+++ b/modules/all/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.axis2</groupId>
         <artifactId>axis2-parent</artifactId>
-        <version>1.6.0</version>
+        <version>1.6.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
@@ -183,8 +183,8 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
-                        <Bundle-Name>${pom.artifactId}</Bundle-Name>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Name>${project.artifactId}</Bundle-Name>
                         <Export-Package>
                             org.apache.axis2.*; version="${project.version}",
                             org.apache.ws.java2wsdl.*; version="${project.version}",
diff --git a/modules/clustering/pom.xml b/modules/clustering/pom.xml
index 19a8639..8ec548c 100644
--- a/modules/clustering/pom.xml
+++ b/modules/clustering/pom.xml
@@ -96,7 +96,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/codegen/pom.xml b/modules/codegen/pom.xml
index 5042662..7c1fabd 100644
--- a/modules/codegen/pom.xml
+++ b/modules/codegen/pom.xml
@@ -98,7 +98,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl b/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl
index 280b90c..3da35a5 100644
--- a/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl
+++ b/modules/codegen/src/org/apache/axis2/wsdl/template/java/NoneDatabindingTemplate.xsl
@@ -35,7 +35,7 @@
         return param;
         }
 
-        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, org.apache.axiom.om.OMElement param, boolean optimizeContent)
+        private org.apache.axiom.soap.SOAPEnvelope toEnvelope(org.apache.axiom.soap.SOAPFactory factory, org.apache.axiom.om.OMElement param, boolean optimizeContent, javax.xml.namespace.QName methodQName)
         throws org.apache.axis2.AxisFault {
         org.apache.axiom.soap.SOAPEnvelope envelope = factory.getDefaultEnvelope();
         envelope.getBody().addChild(param);
diff --git a/modules/corba/pom.xml b/modules/corba/pom.xml
index 68afba4..1ebff39 100644
--- a/modules/corba/pom.xml
+++ b/modules/corba/pom.xml
@@ -79,7 +79,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/distribution/pom.xml b/modules/distribution/pom.xml
index 44d9da9..2a5c8d7 100755
--- a/modules/distribution/pom.xml
+++ b/modules/distribution/pom.xml
@@ -292,6 +292,91 @@
                     </execution>
                 </executions>
             </plugin>
+            
+            <!-- Prepare some additional dependencies required by specific samples. We could
+                 also do this by invoking the relevant download.jars targets in the provided
+                 ant scripts, but this may cause issues with HTTP proxies and has the disadvantage
+                 that the JARs are downloaded every time instead of being copied from the local
+                 Maven repository. -->
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>test-dependencies</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.codehaus.castor</groupId>
+                                    <artifactId>castor</artifactId>
+                                    <version>1.0.4</version>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>net.java.dev.stax-utils</groupId>
+                                    <artifactId>stax-utils</artifactId>
+                                    <version>20060502</version>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>xerces</groupId>
+                                    <artifactId>xercesImpl</artifactId>
+                                    <version>2.9.1</version>
+                                </artifactItem>
+                            </artifactItems>
+                            <outputDirectory>${project.build.directory}/axis2-${project.version}/samples/databinding/lib</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Now unpack the distribution and run some automated tests on the samples -->
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>test-samples</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <tasks>
+                                <unzip src="${project.build.directory}/axis2-${project.version}-bin.zip" dest="${project.build.directory}" />
+                                
+                                <!-- Test of the databinding sample -->
+                                <ant dir="${project.build.directory}/axis2-${project.version}/samples/databinding" />
+                                
+                                <!-- Test of the mtom sample -->
+                                <ant dir="${project.build.directory}/axis2-${project.version}/samples/mtom" target="generate.service" />
+                                <ant dir="${project.build.directory}/axis2-${project.version}/samples/mtom" target="generate.client" />
+                            </tasks>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-invoker-plugin</artifactId>
+                <version>1.5</version>
+                <executions>
+                    <execution>
+                        <id>build-maven-samples</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <projectsDirectory>${project.build.directory}/axis2-${project.version}/samples</projectsDirectory>
+                            <pomIncludes>
+                                <pomInclude>*/pom.xml</pomInclude>
+                            </pomIncludes>
+                            <streamLogs>true</streamLogs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            
             <plugin>
                 <!-- We don't want to deploy the distributions to the Maven repository.
                      Reasons:
diff --git a/modules/distribution/src/main/assembly/bin-assembly.xml b/modules/distribution/src/main/assembly/bin-assembly.xml
index 167e68f..db50bf3 100755
--- a/modules/distribution/src/main/assembly/bin-assembly.xml
+++ b/modules/distribution/src/main/assembly/bin-assembly.xml
@@ -180,6 +180,16 @@
             </excludes>
         </dependencySet>
         <dependencySet>
+            <!-- This is necessary to use JAX-WS 2.2 on Java 1.6 -->
+            <useProjectArtifact>false</useProjectArtifact>
+            <outputDirectory>lib/endorsed</outputDirectory>
+            <includes>
+                <include>javax.xml.bind:jaxb-api:jar</include>
+                <include>org.apache.geronimo.specs:geronimo-saaj_1.3_spec:jar</include>
+                <include>org.apache.geronimo.specs:geronimo-jaxws_2.2_spec:jar</include>
+            </includes>
+        </dependencySet>
+        <dependencySet>
             <useProjectArtifact>false</useProjectArtifact>
             <includes>
                 <include>org.apache.axis2:axis2-webapp</include>
diff --git a/modules/fastinfoset/pom.xml b/modules/fastinfoset/pom.xml
index bf72dd6..ac78949 100644
--- a/modules/fastinfoset/pom.xml
+++ b/modules/fastinfoset/pom.xml
@@ -157,7 +157,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/java2wsdl/pom.xml b/modules/java2wsdl/pom.xml
index 1258416..9e43e92 100644
--- a/modules/java2wsdl/pom.xml
+++ b/modules/java2wsdl/pom.xml
@@ -111,7 +111,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/jaxbri/pom.xml b/modules/jaxbri/pom.xml
index 62057e8..389ca4a 100644
--- a/modules/jaxbri/pom.xml
+++ b/modules/jaxbri/pom.xml
@@ -106,7 +106,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/jaxws-mar/pom.xml b/modules/jaxws-mar/pom.xml
index 1ec5635..7ac486a 100644
--- a/modules/jaxws-mar/pom.xml
+++ b/modules/jaxws-mar/pom.xml
@@ -86,7 +86,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/jaxws/pom.xml b/modules/jaxws/pom.xml
index d14cbfc..9ac04f1 100644
--- a/modules/jaxws/pom.xml
+++ b/modules/jaxws/pom.xml
@@ -163,7 +163,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java b/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
index 6fdbcb7..cf60634 100644
--- a/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
+++ b/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
@@ -688,7 +688,7 @@
                 jbc_classCL = JAXBUtils.getJAXBContext(marshalDesc.getPackages(), 
                         holder_classCL,
                         marshalDesc.getPackagesKey(), 
-                        contextCL, 
+                        classCL, 
                         null);
             } catch (Throwable t) {
                 if (log.isDebugEnabled()) {
diff --git a/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java b/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java
index dfc4c04..bedc96a 100644
--- a/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java
+++ b/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java
@@ -210,8 +210,11 @@
                                 className,
                                 location);
                 if(axisService != null) {
+                    if (serviceHierarchy != null) {
+                        axisService.setName(serviceHierarchy + axisService.getName());
+                    }
                     log.info("Deploying JAXWS annotated class " + className + " as a service - "
-                            + serviceHierarchy + axisService.getName());
+                            + axisService.getName());
                     axisServiceList.add(axisService);
                 }
             }
@@ -222,9 +225,10 @@
         }
         //creating service group by considering the hierarchical path also
         AxisServiceGroup serviceGroup = new AxisServiceGroup();
-        serviceGroup.setServiceGroupName(serviceHierarchy + groupName);
+        if (serviceHierarchy != null) {
+            serviceGroup.setServiceGroupName(serviceHierarchy + groupName);
+        }
         for (AxisService axisService : axisServiceList) {
-            axisService.setName(serviceHierarchy + axisService.getName());
             serviceGroup.addService(axisService);
         }
         axisConfig.addServiceGroup(serviceGroup);
diff --git a/modules/jibx/pom.xml b/modules/jibx/pom.xml
index 64950ba..aedd149 100644
--- a/modules/jibx/pom.xml
+++ b/modules/jibx/pom.xml
@@ -102,7 +102,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/json/pom.xml b/modules/json/pom.xml
index c6f96e1..b04ea48 100644
--- a/modules/json/pom.xml
+++ b/modules/json/pom.xml
@@ -79,7 +79,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/kernel/pom.xml b/modules/kernel/pom.xml
index d98d527..b987c0a 100644
--- a/modules/kernel/pom.xml
+++ b/modules/kernel/pom.xml
@@ -138,7 +138,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java b/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
index cb0585a..794acdc 100644
--- a/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
+++ b/modules/kernel/src/org/apache/axis2/description/java2wsdl/DefaultSchemaGenerator.java
@@ -443,7 +443,7 @@
                 if (AxisFault.class.getName().equals(extype.getName())) {
                     continue;
                 }
-                String partQname = jMethod.getName() + getSimpleClassName(extype);
+                String partQname = this.service.getName() + getSimpleClassName(extype);
                 methodSchemaType = createSchemaTypeForFault(partQname);
                 QName elementName =
                         new QName(this.schemaTargetNameSpace, partQname, this.schema_namespace_prefix);
@@ -473,7 +473,7 @@
                     continue;
                 }
                 AxisMessage faultMessage = new AxisMessage();
-                faultMessage.setName(jMethod.getName() + getSimpleClassName(extype));
+                faultMessage.setName(this.service.getName() + getSimpleClassName(extype));
                 faultMessage.setElementQName(typeTable.getQNamefortheType(partQname));
                 axisOperation.setFaultMessages(faultMessage);
             }
diff --git a/modules/metadata/pom.xml b/modules/metadata/pom.xml
index 98d6128..3d0cf7a 100755
--- a/modules/metadata/pom.xml
+++ b/modules/metadata/pom.xml
@@ -145,7 +145,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java b/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java
index 314e39b..a7d7ae9 100644
--- a/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java
+++ b/modules/metadata/src/org/apache/axis2/jaxws/description/builder/MDQConstants.java
@@ -96,5 +96,6 @@
     public static final String USE_LEGACY_WEB_METHOD_RULES = "jaxws.runtime.legacyWebMethod";
     public static final String USE_MANIFEST_LEGACY_WEB_METHOD_RULES = "LegacyWebMethod";
     public static final String SUN_WEB_METHOD_BEHAVIOR_CHANGE_VERSION = "2.1.6";
+    public static final String USE_POST_WEB_METHOD_RULES = "jaxws.runtime.usePostWebMethodRules";
 
 }
diff --git a/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java b/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
index 0da7b81..97eee56 100644
--- a/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
+++ b/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
@@ -21,10 +21,8 @@
 package org.apache.axis2.jaxws.description.impl;
 
 import java.io.IOException;
-import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import java.security.PrivilegedAction;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
@@ -800,21 +798,7 @@
         }
         return string.toString();
     }
-    /**
-     * Get an annotation.  This is wrappered to avoid a Java2Security violation.
-     * @param cls Class that contains annotation 
-     * @param annotation Class of requrested Annotation
-     * @return annotation or null
-     */
-    private static Annotation getAnnotation(final Class cls, final Class annotation) {
-        return (Annotation) AccessController.doPrivileged(new PrivilegedAction() {
-            public Object run() {
-                return cls.getAnnotation(annotation);
-            }
-        });
-    }
-    
-    
+      
     /*
      * This method returns a method retriever that properly implements the specified behavior, 
      * which is determined by a user-defined system property
@@ -823,29 +807,39 @@
 
         MethodRetriever methodRetriever = null;
         //default behavior
-        boolean newSunBehavior = true;
-        //Lets make sure the default behavior is supported by packaged JDK.
-        //this check verifies JAX-WS2.2 tooling is supported.
-        newSunBehavior = isNewSunBehaviorSupported();
+        boolean newSunBehavior = false;
         
-        //The system property always overrides the manifest
-        //property. So, if both are set than the manifest property will be ignored
-        
-        String legacyWebmethod = readLegacyWebMethodFlag();
-        if (WSToolingUtils.hasValue(legacyWebmethod) && legacyWebmethod.equalsIgnoreCase("true")) {
-            if (log.isDebugEnabled()){
-                log.debug("EndpointInterfaceDescriptionImpl: System or Manifest property USE_LEGACY_WEB_METHOD_RULES set to true" );
+        String legacyWebmethod = null;
+        String postWebMethodRules = readUsePostWebMethodRulesFlag();
+        if (WSToolingUtils.hasValue(postWebMethodRules) && postWebMethodRules.equalsIgnoreCase("true")) {
+            if (log.isDebugEnabled()) {
+                log.debug("EndpointInterfaceDescriptionImpl: System property " + MDQConstants.USE_POST_WEB_METHOD_RULES + "  set to true, all other configurations are ignored");
             }
-            //LegacyWebmethod property set to true, use old JAX-WS tooling behavior.  
-            newSunBehavior = false;
-        }else {
-            //If LegacyWebmehtod was not set check for sun property.
-            String newSunRulesFlag = getNewSunRulesFlag();
-            if (WSToolingUtils.hasValue(newSunRulesFlag) && newSunRulesFlag.equalsIgnoreCase("true")) {
-                if (log.isDebugEnabled()){
-                    log.debug("EndpointInterfaceDescriptionImpl: System property USE_LEGACY_WEB_METHOD_RULES_SUN set to true" );
+            newSunBehavior = true;
+        } else {
+            //Lets make sure the default behavior is supported by packaged JDK.
+            //this check verifies JAX-WS2.2 tooling is supported.
+            newSunBehavior = isNewSunBehaviorSupported();
+
+            //The system property always overrides the manifest
+            //property. So, if both are set than the manifest property will be ignored
+
+            legacyWebmethod = readLegacyWebMethodFlag();
+            if (WSToolingUtils.hasValue(legacyWebmethod) && legacyWebmethod.equalsIgnoreCase("true")) {
+                if (log.isDebugEnabled()) {
+                    log.debug("EndpointInterfaceDescriptionImpl: System or Manifest property " + MDQConstants.USE_LEGACY_WEB_METHOD_RULES + " set to true");
                 }
-                newSunBehavior = false;;
+                //LegacyWebmethod property set to true, use old JAX-WS tooling behavior.  
+                newSunBehavior = false;
+            } else {
+                //If LegacyWebmehtod was not set check for sun property.
+                String newSunRulesFlag = getNewSunRulesFlag();
+                if (WSToolingUtils.hasValue(newSunRulesFlag) && newSunRulesFlag.equalsIgnoreCase("true")) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("EndpointInterfaceDescriptionImpl: System property " + MDQConstants.USE_LEGACY_WEB_METHOD_RULES_SUN + " set to true");
+                    }
+                    newSunBehavior = false;
+                }
             }
         }
         //Now based on the outcome of LegacyWebmethod and sun property check, retrieve methods to expose.
@@ -871,68 +865,15 @@
      * @param propertyToSet
      * @return
      */
-    private boolean isNewSunBehavior(String propertyToSet) {
-
-        if (log.isDebugEnabled()) {
-            log.debug("isNewSunBehavior: Validating that JDK version can be used with property: " +propertyToSet);
-
-        }
-        
-        boolean versionValid = false;
-
-        try {
-            
-            String wsGenVersion = WSToolingUtils.getWsGenVersion();
-            
-            versionValid = WSToolingUtils.isValidVersion(wsGenVersion);
-            
-            if (log.isDebugEnabled()) {
-                log.debug("isNewSunBehavior: versionValid is: " +versionValid);
-            }
-            
-            if (!versionValid) {
-
-                if (log.isWarnEnabled()) {
-                    log.warn("You are attempting set a property: "
-                        + propertyToSet
-                        + " This property is not supported with this version of the JDK");
-                }
-            }
-
-            // We don't want to affect existing systems, if anything goes
-            // wrong just display
-            // a warning and default to old behavior
-        } catch (ClassNotFoundException e) {
-            if (log.isWarnEnabled()) {
-                log.warn(" Unable to determine WsGen version being used");
-            }
-        } catch (IOException ioex) {
-            if (log.isWarnEnabled()) {
-                log.warn(" Unable to determine WsGen version being used");
-            }
-        }
-        
-        return versionValid;
-    }
-    /**
-     * The user has indicated that they want to use the new Sun behavior (regardless) of which flag 
-     * they were using.
-     * This method determines whether we have the proper JDK version for using the new SUN behavior for
-     * retrieving methods. We determine this by checking the version of WsGen.
-     * @param propertyToSet
-     * @return
-     */
     private boolean isNewSunBehaviorSupported() {
 
         if (log.isDebugEnabled()) {
             log.debug("isNewSunBehavior: Validating that JDK version can be used");
-
         }
         
         boolean versionValid = false;
 
-        try {
-            
+        try {            
             String wsGenVersion = WSToolingUtils.getWsGenVersion();
             
             versionValid = WSToolingUtils.isValidVersion(wsGenVersion);
@@ -942,7 +883,6 @@
             }
             
             if (!versionValid) {
-
                 if (log.isDebugEnabled()) {
                     log.debug("New Sun tooling behavior is not supported with this version of the JDK");
                 }
@@ -963,19 +903,11 @@
         
         return versionValid;
     }
+    
     private String readLegacyWebMethodFlag () {
-        
-       String legacyWebmethod= null;
-            
+        String legacyWebmethod = null;
         try {
-            legacyWebmethod = (String) AccessController.doPrivileged(
-                new PrivilegedExceptionAction() {
-                    public Object run() {
-                        //System property takes precedence over manifest property.
-                        //So first lets check for system property.
-                        return (System.getProperty(MDQConstants.USE_LEGACY_WEB_METHOD_RULES));
-                    }
-                });
+            legacyWebmethod = getSystemProperty(MDQConstants.USE_LEGACY_WEB_METHOD_RULES);
         } catch (PrivilegedActionException e) {
             // Swallow and continue
             if (log.isWarnEnabled()) {
@@ -1018,16 +950,9 @@
     }
     
     private static String getNewSunRulesFlag () {
-        
         String newSunRulesFlag = null;
-            
         try {
-            newSunRulesFlag = (String) AccessController.doPrivileged(
-                new PrivilegedExceptionAction() {
-                    public Object run() {
-                        return (System.getProperty(MDQConstants.USE_LEGACY_WEB_METHOD_RULES_SUN));
-                    }
-                });
+            newSunRulesFlag = getSystemProperty(MDQConstants.USE_LEGACY_WEB_METHOD_RULES_SUN);
         } catch (PrivilegedActionException e) {
             // Swallow and continue
             if (log.isWarnEnabled()) {
@@ -1047,5 +972,33 @@
         return newSunRulesFlag;
     }
     
+    private String readUsePostWebMethodRulesFlag() {
+        String usePostMethodRules = null;
+        try {
+            usePostMethodRules = getSystemProperty(MDQConstants.USE_POST_WEB_METHOD_RULES);
+        } catch (PrivilegedActionException e) {
+            // Swallow and continue
+            if (log.isWarnEnabled()) {
+                log.debug("Exception getting USE_POST_WEB_METHOD_RULES system property: " + e.getException());
+            }
+        }
+        if (WSToolingUtils.hasValue(usePostMethodRules)) {
+            if (log.isDebugEnabled()) {
+                log.debug("EndpointInterfaceDescriptionImpl: system property '" + MDQConstants.USE_POST_WEB_METHOD_RULES + "' is set with " + usePostMethodRules);                
+            }
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug("EndpointInterfaceDescriptionImpl: system property '" + MDQConstants.USE_POST_WEB_METHOD_RULES + "' is not set");
+            }
+        }
+        return usePostMethodRules;
+    }
 
+    private static String getSystemProperty(final String propertyName) throws PrivilegedActionException {
+        return AccessController.doPrivileged(new PrivilegedExceptionAction<String>() {
+            public String run() {
+                return System.getProperty(propertyName);
+            }
+        });
+    }
 }
diff --git a/modules/mex/pom.xml b/modules/mex/pom.xml
index f0908dc..a281ef3 100644
--- a/modules/mex/pom.xml
+++ b/modules/mex/pom.xml
@@ -80,7 +80,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/mtompolicy-mar/pom.xml b/modules/mtompolicy-mar/pom.xml
index eef3e86..b906101 100644
--- a/modules/mtompolicy-mar/pom.xml
+++ b/modules/mtompolicy-mar/pom.xml
@@ -78,7 +78,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/mtompolicy/pom.xml b/modules/mtompolicy/pom.xml
index 03eba37..a4d270f 100644
--- a/modules/mtompolicy/pom.xml
+++ b/modules/mtompolicy/pom.xml
@@ -72,7 +72,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/osgi/pom.xml b/modules/osgi/pom.xml
index 91db930..2d3f2f6 100644
--- a/modules/osgi/pom.xml
+++ b/modules/osgi/pom.xml
@@ -56,7 +56,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
@@ -68,11 +68,11 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-Version>1.0.0.${pom.version}</Bundle-Version>
-                        <Bundle-Name>${pom.artifactId}</Bundle-Name>
+                        <Bundle-Version>1.0.0.${project.version}</Bundle-Version>
+                        <Bundle-Name>${project.artifactId}</Bundle-Name>
                         <Bundle-Vendor>Apache Axis2, 2008</Bundle-Vendor>
-                        <Bundle-Description>${pom.description}</Bundle-Description>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Description>${project.description}</Bundle-Description>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                         <Export-Package>
                             !org.apache.axis2.osgi.internal,
                             org.apache.axis2.osgi.*; version=1.0.0,
diff --git a/modules/parent/pom.xml b/modules/parent/pom.xml
index c739450..f20412a 100644
--- a/modules/parent/pom.xml
+++ b/modules/parent/pom.xml
@@ -66,7 +66,7 @@
         <url>http://issues.apache.org/jira/browse/AXIS2</url>
     </issueManagement>
     <properties>
-        <neethi.version>2.0.4</neethi.version>
+        <neethi.version>2.0.5</neethi.version>
         <woden.version>1.0M9</woden.version>
         <axiom.version>1.2.11</axiom.version>
         <xmlschema.version>1.4.7</xmlschema.version>
@@ -232,6 +232,12 @@
             <organization>Brazil Outsource</organization>
         </developer>
         <developer>
+            <name>Senaka Fernando</name>
+            <id>senaka</id>
+            <email>senaka AT wso2.com</email>
+            <organization>WSO2</organization>
+        </developer>
+        <developer>
             <name>Steve Loughran</name>
             <id>stevel</id>
             <email>stevel AT apache.org</email>
@@ -942,14 +948,6 @@
         <developerConnection>scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.6.0/modules/parent</developerConnection>
         <url>http://svn.apache.org/viewvc/axis/axis2/java/core/tags/v1.6.0/modules/parent</url>
     </scm>
-    <distributionManagement>
-        <snapshotRepository>
-            <id>apache.snapshots.https</id>
-            <name>${distMgmtSnapshotsName}</name>
-            <url>${distMgmtSnapshotsUrl}</url>
-            <uniqueVersion>false</uniqueVersion>
-        </snapshotRepository>
-    </distributionManagement>
     <build>
         <pluginManagement>
             <plugins>
@@ -963,6 +961,14 @@
                          the runOnlyAtExecutionRoot parameter which is not supported in earlier
                          versions. -->
                     <version>2.2-beta-5</version>
+                    <configuration>
+                        <!-- Workaround for MASSEMBLY-422 / MASSEMBLY-449 -->
+                        <archiverConfig>
+                            <fileMode>420</fileMode> <!-- 420(dec) = 644(oct) -->
+                            <directoryMode>493</directoryMode> <!-- 493(dec) = 755(oct) -->
+                            <defaultDirectoryMode>493</defaultDirectoryMode>
+                        </archiverConfig>
+                    </configuration>
                 </plugin>
                 <plugin>
                     <artifactId>maven-clean-plugin</artifactId>
diff --git a/modules/ping/pom.xml b/modules/ping/pom.xml
index 3b4a0ce..93a546b 100644
--- a/modules/ping/pom.xml
+++ b/modules/ping/pom.xml
@@ -80,7 +80,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/rmi/pom.xml b/modules/rmi/pom.xml
index 7983a72..ebe7f6c 100644
--- a/modules/rmi/pom.xml
+++ b/modules/rmi/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.axis2</groupId>
         <artifactId>axis2-parent</artifactId>
-        <version>1.6.0</version>
+        <version>1.6.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/modules/saaj/pom.xml b/modules/saaj/pom.xml
index ecb472a..5f1d8a8 100644
--- a/modules/saaj/pom.xml
+++ b/modules/saaj/pom.xml
@@ -127,7 +127,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java b/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
index 71f4e78..065b980 100644
--- a/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
+++ b/modules/saaj/src/org/apache/axis2/saaj/SOAPElementImpl.java
@@ -933,9 +933,8 @@
             childEle.addAttribute(name, node.getValue());
         }
 
-        NodeList children = child.getChildNodes();        
-        for (int i = 0; i < children.getLength(); i++) {
-            Node node = children.item(i);
+        Node node;
+        while ((node = child.getFirstChild()) != null) {
             childEle.appendChild(node);
         }
     }
diff --git a/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java b/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java
index 75009ef..d954095 100644
--- a/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java
+++ b/modules/saaj/test/org/apache/axis2/saaj/AttachmentTest.java
@@ -228,24 +228,20 @@
 
     @Validated @Test
     public void testGetContent() throws Exception {
-        try {
-            MessageFactory factory = MessageFactory.newInstance();
-            SOAPMessage msg = factory.createMessage();
-            AttachmentPart ap = msg.createAttachmentPart();
-            Image image = ImageIO.read(TestUtils.getTestFileURL("attach.gif"));
-            ap = msg.createAttachmentPart(image, "image/gif");
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage msg = factory.createMessage();
+        AttachmentPart ap = msg.createAttachmentPart();
+        Image image = ImageIO.read(TestUtils.getTestFileURL("attach.gif"));
+        ap = msg.createAttachmentPart(image, "image/gif");
 
-            //Getting Content should return an Image object
-            Object o = ap.getContent();
-            if (o != null) {
-                if (o instanceof Image) {
-                    //Image object was returned (ok)
-                } else {
-                    fail("Unexpected object was returned");
-                }
+        //Getting Content should return an Image object
+        Object o = ap.getContent();
+        if (o != null) {
+            if (o instanceof Image) {
+                //Image object was returned (ok)
+            } else {
+                fail("Unexpected object was returned");
             }
-        } catch (Exception e) {
-            fail("Exception: " + e);
         }
     }
 
@@ -269,39 +265,35 @@
     }
 
     @Validated @Test
-    public void testSetBase64Content() {
-        try {
-            MessageFactory factory = MessageFactory.newInstance();
-            SOAPMessage msg = factory.createMessage();
-            AttachmentPart ap = msg.createAttachmentPart();
+    public void testSetBase64Content() throws Exception {
+        MessageFactory factory = MessageFactory.newInstance();
+        SOAPMessage msg = factory.createMessage();
+        AttachmentPart ap = msg.createAttachmentPart();
 
-            String urlString = "http://ws.apache.org/images/project-logo.jpg";
-            if (isNetworkedResourceAvailable(urlString)) {
-                URL url = new URL(urlString);
-                DataHandler dh = new DataHandler(url);
-                //Create InputStream from DataHandler's InputStream
-                InputStream is = dh.getInputStream();
+        String urlString = "http://ws.apache.org/images/project-logo.jpg";
+        if (isNetworkedResourceAvailable(urlString)) {
+            URL url = new URL(urlString);
+            DataHandler dh = new DataHandler(url);
+            //Create InputStream from DataHandler's InputStream
+            InputStream is = dh.getInputStream();
 
-                byte buf[] = IOUtils.getStreamAsByteArray(is);
-                //Setting Content via InputStream for image/jpeg mime type
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
-                Base64.encode(buf, 0, buf.length, bos);
-                buf = bos.toByteArray();
-                InputStream stream = new ByteArrayInputStream(buf);
-                ap.setBase64Content(stream, "image/jpeg");
+            byte buf[] = IOUtils.getStreamAsByteArray(is);
+            //Setting Content via InputStream for image/jpeg mime type
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            Base64.encode(buf, 0, buf.length, bos);
+            buf = bos.toByteArray();
+            InputStream stream = new ByteArrayInputStream(buf);
+            ap.setBase64Content(stream, "image/jpeg");
 
-                //Getting Content.. should return InputStream object
-                InputStream r = ap.getBase64Content();
-                if (r != null) {
-                    if (r instanceof InputStream) {
-                        //InputStream object was returned (ok)
-                    } else {
-                        fail("Unexpected object was returned");
-                    }
+            //Getting Content.. should return InputStream object
+            InputStream r = ap.getBase64Content();
+            if (r != null) {
+                if (r instanceof InputStream) {
+                    //InputStream object was returned (ok)
+                } else {
+                    fail("Unexpected object was returned");
                 }
             }
-        } catch (Exception e) {
-            fail("Exception: " + e);
         }
     }
 
diff --git a/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java b/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
index 63d98a6..f97a6f2 100644
--- a/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
+++ b/modules/saaj/test/org/apache/axis2/saaj/SOAPHeaderTest.java
@@ -423,4 +423,22 @@
         assertEquals("DEF", text.getData());
         assertFalse(iter.hasNext());   
     }
+    
+    @Validated @Test
+    public void testAXIS2_5006() throws Exception {
+        MessageFactory fact = MessageFactory.newInstance();
+        SOAPMessage message = fact.createMessage();
+        SOAPHeader header = message.getSOAPHeader();
+        
+        Document doc = message.getSOAPPart();
+        Element orgElement = doc.createElementNS("urn:ns", "ns:test");
+        orgElement.appendChild(doc.createElementNS(null, "child1"));
+        orgElement.appendChild(doc.createElementNS(null, "child2"));
+        orgElement.appendChild(doc.createElementNS(null, "child3"));
+        header.appendChild(orgElement);
+        
+        SOAPElement element = (SOAPElement)header.getChildElements().next();
+        assertTrue(element instanceof SOAPHeaderElement);
+        assertEquals(3, element.getChildNodes().getLength());
+    }
 }
\ No newline at end of file
diff --git a/modules/samples/book/pom.xml b/modules/samples/book/pom.xml
index 3caac1f..078a758 100644
--- a/modules/samples/book/pom.xml
+++ b/modules/samples/book/pom.xml
@@ -37,27 +37,27 @@
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-kernel</artifactId>
-            <version>1.6.0</version>
+            <version>1.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-codegen</artifactId>
-            <version>1.6.0</version>
+            <version>1.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-adb</artifactId>
-            <version>1.6.0</version>
+            <version>1.6.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-api</artifactId>
-            <version>1.2.11</version>
+            <version>1.2.12-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-impl</artifactId>
-            <version>1.2.11</version>
+            <version>1.2.12-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.schema</groupId>
@@ -112,12 +112,12 @@
 		<dependency>
 			<groupId>org.apache.axis2</groupId>
 			<artifactId>axis2-transport-http</artifactId>
-			<version>1.6.0</version>
+			<version>1.6.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.axis2</groupId>
 			<artifactId>axis2-transport-local</artifactId>
-			<version>1.6.0</version>
+			<version>1.6.0-SNAPSHOT</version>
 		</dependency>
 
        </dependencies>
diff --git a/modules/samples/databinding/README.txt b/modules/samples/databinding/README.txt
index 9f77317..520cf71 100644
--- a/modules/samples/databinding/README.txt
+++ b/modules/samples/databinding/README.txt
@@ -13,12 +13,12 @@
 ==============
  * Install Apache Ant 1.6.2 or later.
  * Please create a directory named lib under the directory that contains this file.
- * Download latest stax-utils jar from
-   https://stax-utils.dev.java.net/servlets/ProjectDocumentList?folderID=1106 and drop that into the
-   new lib directory.
- * Download version 1.0.4 of Castor jar from http://dist.codehaus.org/castor/1.0.4/castor-1.0.4.jar and drop that into the new
-   lib directory.(The latest releases of castor are available at http://www.castor.org/download.html, but this example may not run 	
-   with versions later than 1.0.4)
+ * Download the following libraries and drop them into the new lib directory:
+   * Latest stax-utils jar from https://stax-utils.dev.java.net/servlets/ProjectDocumentList?folderID=1106
+   * Version 1.0.4 of Castor jar from http://dist.codehaus.org/castor/1.0.4/castor-1.0.4.jar.
+     (The latest releases of castor are available at http://www.castor.org/download.html, but this example may not run 	
+     with versions later than 1.0.4)
+   * A recent Xerces version from http://xerces.apache.org/.
 
 You can achieve all three of the above steps by running "ant download.jars", but it will take some 
 time to download those two jars, using ant.
diff --git a/modules/samples/databinding/build.xml b/modules/samples/databinding/build.xml
index 9f1ec6e..3920acf 100644
--- a/modules/samples/databinding/build.xml
+++ b/modules/samples/databinding/build.xml
@@ -182,6 +182,8 @@
              dest="lib/stax-utils-20060915.jar" verbose="true"/>
         <get src="http://dist.codehaus.org/castor/1.0.4/castor-1.0.4.jar" dest="lib/castor-1.0.4.jar"
              verbose="true"/>
+        <get src="http://repo2.maven.org/maven2/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"
+             dest="lib/xercesImpl-2.9.1.jar" verbose="true"/>
     </target>
 
     <target name="clean">
diff --git a/modules/samples/faulthandling/client/src/example/BankClient.java b/modules/samples/faulthandling/client/src/example/BankClient.java
index 4fd6166..a760331 100644
--- a/modules/samples/faulthandling/client/src/example/BankClient.java
+++ b/modules/samples/faulthandling/client/src/example/BankClient.java
@@ -51,10 +51,10 @@
             final WithdrawResponse withdrawResponse = bankService.withdraw(withdrawRequest);
             System.out.println("Balance = " + withdrawResponse.getBalance());
             
-        } catch (AccountNotExistFaultMessage e) {
+        } catch (AccountNotExistException e) {
             final AccountNotExistFault fault = e.getFaultMessage();
             System.out.println("Account#" + fault.getAccount() + " does not exist");
-        } catch (InsufficientFundFaultMessage e) {
+        } catch (InsufficientFundException e) {
             final InsufficientFundFault fault = e.getFaultMessage();
             System.out.println("Account#" + fault.getAccount() + " has balance of " + fault.getBalance() + ". It cannot support withdrawal of " + fault.getRequestedFund());
         } catch (RemoteException e) {
diff --git a/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java b/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java
index 5e15a42..468f473 100644
--- a/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java
+++ b/modules/samples/faulthandling/service/src/example/BankServiceSkeleton.java
@@ -35,12 +35,12 @@
 
          */
         public  example.WithdrawResponse withdraw(example.Withdraw param0)
-           throws InsufficientFundFaultMessage,AccountNotExistFaultMessage{
+           throws InsufficientFundException,AccountNotExistException{
                 final String account = param0.getAccount();
         if (account.equals("13")) {
             final AccountNotExistFault fault = new AccountNotExistFault();
             fault.setAccount(account);
-            AccountNotExistFaultMessage messageException = new AccountNotExistFaultMessage("Account does not exist!");
+            AccountNotExistException messageException = new AccountNotExistException("Account does not exist!");
             messageException.setFaultMessage(fault);
             throw messageException;
         }
@@ -51,7 +51,7 @@
             fault.setAccount(account);
             fault.setBalance(1000);
             fault.setRequestedFund(amount);
-            InsufficientFundFaultMessage messageException = new InsufficientFundFaultMessage("Insufficient funds");
+            InsufficientFundException messageException = new InsufficientFundException("Insufficient funds");
             messageException.setFaultMessage(fault);
             throw messageException;
         }
diff --git a/modules/samples/java_first_jaxws/pom.xml b/modules/samples/java_first_jaxws/pom.xml
index 9349fcd..b49a836 100644
--- a/modules/samples/java_first_jaxws/pom.xml
+++ b/modules/samples/java_first_jaxws/pom.xml
@@ -17,14 +17,12 @@
   ~ under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.axis2.examples</groupId>
     <artifactId>java_first_jaxws</artifactId>
     <name>JAXWS - Starting from Java Example</name>
-    <version>1.1</version>
+    <version>1.6.0</version>
     <packaging>war</packaging>
     <inceptionYear>2004</inceptionYear>
 
@@ -56,93 +54,6 @@
             <version>1.6.0</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-api</artifactId>
-            <version>1.2.11</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-impl</artifactId>
-            <version>1.2.11</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.schema</groupId>
-            <artifactId>XmlSchema</artifactId>
-            <version>1.4.7</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.neethi</groupId>
-            <artifactId>neethi</artifactId>
-            <version>2.0.4</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-            <version>1.1.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-httpclient</groupId>
-            <artifactId>commons-httpclient</artifactId>
-            <version>3.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.3</version>
-        </dependency>
-        <dependency>
-            <groupId>woodstox</groupId>
-            <artifactId>wstx</artifactId>
-            <version>asl-3.2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>stax</groupId>
-            <artifactId>stax-api</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>wsdl4j</groupId>
-            <artifactId>wsdl4j</artifactId>
-            <version>1.6.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-javamail_1.4_spec</artifactId>
-            <version>1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-activation_1.1_spec</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-              <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-impl</artifactId>
-            <version>2.1.6</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jsr173</artifactId>
-                    <groupId>javax.xml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-xjc</artifactId>
-            <version>2.1.6</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.1</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jsr173</artifactId>
-                    <groupId>javax.xml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
             <groupId>com.sun.xml.ws</groupId>
             <artifactId>jaxws-rt</artifactId>
             <version>2.1.3</version>
@@ -181,28 +92,13 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>com.sun.xml.ws</groupId>
-            <artifactId>jaxws-tools</artifactId>
-            <version>2.1.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.sun.xml.ws</groupId>
-                    <artifactId>jaxws-rt</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.xml.bind</groupId>
-                    <artifactId>jaxb-xjc</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
     </dependencies>
 
     <build>
         <plugins>
             <plugin>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <inherited>true</inherited>
+                <version>2.3.2</version>
                 <configuration>
                     <compilerVersion>1.5</compilerVersion>
                     <source>1.5</source>
@@ -212,6 +108,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
                 <configuration>
                     <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
                 </configuration>
@@ -220,6 +117,7 @@
                 <!-- Also build the JAR during the package phase. The JAR is required
                      when deploying on axis2server. -->
                 <artifactId>maven-jar-plugin</artifactId>
+                <version>2.3.1</version>
                 <executions>
                     <execution>
                         <goals>
@@ -258,32 +156,14 @@
             </testResource>
         </testResources>
     </build>
-
-    <!--  needed for XmlSchema -->
     <repositories>
         <repository>
-            <id>ibiblio</id>
-            <name>ibiblio maven repository</name>
-            <url>http://ibiblio.org/maven/</url>
-            <layout>legacy</layout>
-        </repository>
-        <repository>
-            <id>apache</id>
-            <name>Apache maven repository</name>
-            <url>http://www.apache.org/dist/java-repository/</url>
-            <layout>legacy</layout>
-        </repository>
-        <repository>
-            <id>java.net</id>
-            <url>http://download.java.net/maven/2/</url>
-            <layout>default</layout>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
             <releases>
-                <enabled>true</enabled>
+                <enabled>false</enabled>
             </releases>
         </repository>
     </repositories>
-
 </project>
diff --git a/modules/samples/java_first_jaxws/src/webapp/WEB-INF/axis2.xml b/modules/samples/java_first_jaxws/src/webapp/WEB-INF/axis2.xml
index 90a5475..b2f915c 100644
--- a/modules/samples/java_first_jaxws/src/webapp/WEB-INF/axis2.xml
+++ b/modules/samples/java_first_jaxws/src/webapp/WEB-INF/axis2.xml
@@ -168,31 +168,7 @@
     <!-- Transport Ins -->
     <!-- ================================================= -->
     <transportReceiver name="http"
-                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
-        <parameter name="port">8080</parameter>
-        <!-- Here is the complete list of supported parameters (see example settings further below):
-            port: the port to listen on (default 6060)
-            hostname:  if non-null, url prefix used in reply-to endpoint references                                 (default null)
-            originServer:  value of http Server header in outgoing messages                                         (default "Simple-Server/1.1")
-            requestTimeout:  value in millis of time that requests can wait for data                                (default 20000)
-            requestTcpNoDelay:  true to maximize performance and minimize latency                                   (default true)
-                                false to minimize bandwidth consumption by combining segments
-            requestCoreThreadPoolSize:  number of threads available for request processing (unless queue fills up)  (default 25)
-            requestMaxThreadPoolSize:  number of threads available for request processing if queue fills up         (default 150)
-                                       note that default queue never fills up:  see HttpFactory
-            threadKeepAliveTime:  time to keep threads in excess of core size alive while inactive                  (default 180)
-                                  note that no such threads can exist with default unbounded request queue
-            threadKeepAliveTimeUnit:  TimeUnit of value in threadKeepAliveTime (default SECONDS)                    (default SECONDS)
-        -->
-        <!-- <parameter name="hostname">http://www.myApp.com/ws</parameter> -->
-        <!-- <parameter name="originServer">My-Server/1.1</parameter>           -->
-        <!-- <parameter name="requestTimeout">10000</parameter>                   -->
-        <!-- <parameter name="requestTcpNoDelay">false</parameter>                   -->
-        <!-- <parameter name="requestCoreThreadPoolSize">50</parameter>                      -->
-        <!-- <parameter name="requestMaxThreadPoolSize">100</parameter>                     -->
-        <!-- <parameter name="threadKeepAliveTime">240000</parameter>                  -->
-        <!-- <parameter name="threadKeepAliveTimeUnit">MILLISECONDS</parameter>            -->
-    </transportReceiver>
+                       class="org.apache.axis2.transport.http.AxisServletListener"/>
 
     <!--Uncomment if you want to have TCP transport support-->
     <!--transportReceiver name="tcp"
diff --git a/modules/samples/jaxws-addressbook/README.txt b/modules/samples/jaxws-addressbook/README.txt
index af7774a..65bb5d9 100644
--- a/modules/samples/jaxws-addressbook/README.txt
+++ b/modules/samples/jaxws-addressbook/README.txt
@@ -28,9 +28,9 @@
 This will do the following:
 - Generate the JAXB artifacts (in target/schema)
 - Compile the service implementation classes (in target/classes), including the JAXB artifacts, 
-  and create a JAR containing those classes (target/jaxws-addressbook-1.6.0.jar)
+  and create a JAR containing those classes (target/jaxws-addressbook-SNAPSHOT.jar)
 - Compile the Dispatch client classes (in target/classes) and create a JAR containing those classes
-  (target/jaxws-addressbook-1.6.0-Client.jar).
+  (target/jaxws-addressbook-SNAPSHOT-Client.jar).  
 
 
 Step 1: Generate JAXB artifacts from simple schema
@@ -84,8 +84,8 @@
 ===============================================================================================
 (a) Setup your environment to run the sample.  You will need two windows, one for the server
 and one for the client.  Each needs the following environment variables set:
-- Axis2 binary distribution.  For example: AXIS2_HOME=C:\temp\Axis2\axis2-1.6.0
-- Java5 JDK.  For example: JAVA_HOME=c:\java\java6
+- Axis2 binary distribution.  For example: AXIS2_HOME=C:\temp\Axis2\axis2-SNAPSHOT
+- Java5 JDK.  For example: JAVA_HOME=c:\java\java5 
 
 (b) Copy the service implementation JAR file from the sample target directory to the appropriate 
 Axis2 repository directory, %AXIS2_HOME%\repository\servicejars.  Note that JAR files in this 
@@ -95,14 +95,14 @@
 If the repository directory does not exist, create it first, then copy the service 
 implementation JAR:
 	mkdir %AXIS2_HOME%\repository\servicejars
-	copy target\jaxws-addressbook-1.6.0.jar %AXIS2_HOME%\repository\servicejars
+	copy target\jaxws-addressbook-SNAPSHOT.jar %AXIS2_HOME%\repository\servicejars
 
 (c) Start the axis2 server.  This will deploy the JAX-WS service implementation.
 	cd %AXIS2_HOME%
 	bin\axis2server.bat
 
 You should see a message such as:
-[INFO] Deploying artifact : jaxws-addressbook-1.6.0.jar
+[INFO] Deploying artifact : jaxws-addressbook-SNAPSHOT.jar
 [INFO] Deploying JAXWS annotated class org.apache.axis2.jaxws.addressbook.AddressBookImpl as a service - AddressBookImplService.AddressBookImplPort
 
 (d) From another window with the environment setup, in the jaxws-addressbook samples directory run 
diff --git a/modules/samples/jaxws-addressbook/pom.xml b/modules/samples/jaxws-addressbook/pom.xml
index ad8efd1..24877fc 100644
--- a/modules/samples/jaxws-addressbook/pom.xml
+++ b/modules/samples/jaxws-addressbook/pom.xml
@@ -1,161 +1,145 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements. See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership. The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License. You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied. See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.axis2.samples</groupId>
-    <artifactId>jaxws-addressbook</artifactId>
-    <packaging>jar</packaging>
-    <version>1.6.0</version>
-    <name>JAXWS Addressbook Service</name>
-    <build>
-        <sourceDirectory>src</sourceDirectory>
-        <resources>
-          <resource>
-            <directory>resources</directory>
-          </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate-client-jar</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                        <configuration>
-                            <classifier>client</classifier>
-                            <excludes>
-                                <exclude>org/apache/axis2/jaxws/addressbook/AddressBookImpl.class</exclude>
-                            </excludes>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>gen-sources</id>
-                        <phase>generate-sources</phase>
-                        <configuration>
-                            <tasks>
-                                <property name="schema.output.base.dir" value="target/schema"/>
-                                <property name="schema.generated.src.dir" value="${schema.output.base.dir}/src"/>
-                                <property name="schema.generated.classes.dir"
-                                          value="${schema.output.base.dir}/classes"/>
-                                <!-- make the dirs -->
-                                <mkdir dir="${schema.output.base.dir}"/>
-                                <mkdir dir="${schema.generated.src.dir}"/>
-                                <mkdir dir="${schema.generated.classes.dir}"/>
-                                <!-- Run JAXB schema compiler with designated schemas -->
-                                <echo>Generating java from echo.xsd</echo>
-                                <java classname="com.sun.tools.xjc.Driver" fork="true">
-                                    <classpath refid="maven.runtime.classpath"/>
-                                    <classpath location="${compiled.classes.dir}"/>
-                                    <arg line="-d ${schema.generated.src.dir} src/AddressBookEntry.xsd"/>
-                                </java>
-                            </tasks>
-                        </configuration>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>add-sources</id>
-                        <phase>process-resources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>${basedir}/target/schema/src</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <dependencies>
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.1</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jsr173</artifactId>
-                    <groupId>javax.xml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-jaxws</artifactId>
-            <version>1.6.0</version>
-        </dependency>
-    </dependencies>
-    <repositories>
-        <repository>
-            <id>apache-m2</id>
-            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-        </repository>
-        <repository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
-        </repository>
-        <repository>
-            <id>maven2</id>
-            <url>http://repo1.maven.org/maven2/</url>
-        </repository>
-    </repositories>
-    <pluginRepositories>
-        <pluginRepository>
-            <id>apache-m2</id>
-            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-        </pluginRepository>
-        <pluginRepository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
-        </pluginRepository>
-        <pluginRepository>
-            <id>maven2</id>
-            <url>http://repo1.maven.org/maven2/</url>
-        </pluginRepository>
-    </pluginRepositories>
-</project>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.axis2.samples</groupId>
+    <artifactId>jaxws-addressbook</artifactId>
+    <packaging>jar</packaging>
+    <version>1.6.0</version>
+    <name>JAXWS Addressbook Service</name>
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <resources>
+          <resource>
+            <directory>resources</directory>
+          </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.3.1</version>
+                <executions>
+                    <execution>
+                        <id>generate-client-jar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                        <configuration>
+                            <classifier>client</classifier>
+                            <excludes>
+                                <exclude>org/apache/axis2/jaxws/addressbook/AddressBookImpl.class</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>gen-sources</id>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="schema.output.base.dir" value="target/schema" />
+                                <property name="schema.generated.src.dir" value="${schema.output.base.dir}/src" />
+                                <property name="schema.generated.classes.dir" value="${schema.output.base.dir}/classes" />
+                                <!-- make the dirs -->
+                                <mkdir dir="${schema.output.base.dir}" />
+                                <mkdir dir="${schema.generated.src.dir}" />
+                                <mkdir dir="${schema.generated.classes.dir}" />
+                                <!-- Run JAXB schema compiler with designated schemas -->
+                                <echo>Generating java from echo.xsd</echo>
+                                <java classname="com.sun.tools.xjc.Driver" fork="true">
+                                    <classpath refid="maven.runtime.classpath" />
+                                    <classpath location="${compiled.classes.dir}" />
+                                    <arg line="-d ${schema.generated.src.dir} src/AddressBookEntry.xsd" />
+                                </java>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.5</version>
+                <executions>
+                    <execution>
+                        <id>add-sources</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${basedir}/target/schema/src</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.1</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsr173</artifactId>
+                    <groupId>javax.xml</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-jaxws</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+    </dependencies>
+    <repositories>
+        <repository>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+</project>
diff --git a/modules/samples/jaxws-calculator/README.txt b/modules/samples/jaxws-calculator/README.txt
index 289fd1b..dd0477a 100644
--- a/modules/samples/jaxws-calculator/README.txt
+++ b/modules/samples/jaxws-calculator/README.txt
@@ -30,7 +30,7 @@
 
 1. Set up a CLASSPATH with the following 
 - all the jars in <AXIS2_HOME/lib>
-- the jaxws-calculator-1.6.0-client.jar under the target directory
+- the jaxws-calculator-SNAPSHOT-client.jar under the target directory
 - addressing mar in <AXIS2_HOME/repository/modules>
 
 2. Run the client using say "java -classpath %CLASSPATH% org.apache.axis2.jaxws.calculator.client.AddSEIClient 3 33"
diff --git a/modules/samples/jaxws-calculator/pom.xml b/modules/samples/jaxws-calculator/pom.xml
index 9769273..24c7562 100644
--- a/modules/samples/jaxws-calculator/pom.xml
+++ b/modules/samples/jaxws-calculator/pom.xml
@@ -17,8 +17,7 @@
   ~ under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.axis2.samples</groupId>
     <artifactId>jaxws-calculator</artifactId>
@@ -36,6 +35,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
+                <version>2.3.1</version>
                 <executions>
                     <execution>
                         <phase>package</phase>
@@ -54,6 +54,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
                 <configuration>
                     <source>1.5</source>
                     <target>1.5</target>
@@ -81,30 +82,12 @@
     </dependencies>
     <repositories>
         <repository>
-            <id>apache-m2</id>
-            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-        </repository>
-        <repository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
-        </repository>
-        <repository>
-            <id>maven2</id>
-            <url>http://repo1.maven.org/maven2/</url>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
         </repository>
     </repositories>
-    <pluginRepositories>
-        <pluginRepository>
-            <id>apache-m2</id>
-            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-        </pluginRepository>
-        <pluginRepository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
-        </pluginRepository>
-        <pluginRepository>
-            <id>maven2</id>
-            <url>http://repo1.maven.org/maven2/</url>
-        </pluginRepository>
-    </pluginRepositories>
 </project>
diff --git a/modules/samples/jaxws-interop/pom.xml b/modules/samples/jaxws-interop/pom.xml
index 84c4a87..d440ec5 100644
--- a/modules/samples/jaxws-interop/pom.xml
+++ b/modules/samples/jaxws-interop/pom.xml
@@ -1,92 +1,74 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements. See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership. The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License. You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied. See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.axis2.samples</groupId>
-    <artifactId>jaxws-interop</artifactId>
-    <packaging>jar</packaging>
-    <version>1.6.0</version>
-    <name>JAXWS Interop Sample</name>
-    <build>
-        <sourceDirectory>src</sourceDirectory>
-        <resources>
-          <resource>
-            <directory>resources</directory>
-          </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <dependencies>
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.1</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jsr173</artifactId>
-                    <groupId>javax.xml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-jaxws</artifactId>
-            <version>1.6.0</version>
-        </dependency>
-    </dependencies>
-    <repositories>
-        <repository>
-            <id>apache-m2</id>
-            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-        </repository>
-        <repository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
-        </repository>
-        <repository>
-            <id>maven2</id>
-            <url>http://repo1.maven.org/maven2/</url>
-        </repository>
-    </repositories>
-    <pluginRepositories>
-        <pluginRepository>
-            <id>apache-m2</id>
-            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
-        </pluginRepository>
-        <pluginRepository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
-        </pluginRepository>
-        <pluginRepository>
-            <id>maven2</id>
-            <url>http://repo1.maven.org/maven2/</url>
-        </pluginRepository>
-    </pluginRepositories>
-</project>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.axis2.samples</groupId>
+    <artifactId>jaxws-interop</artifactId>
+    <packaging>jar</packaging>
+    <version>1.6.0</version>
+    <name>JAXWS Interop Sample</name>
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <resources>
+          <resource>
+            <directory>resources</directory>
+          </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.1</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsr173</artifactId>
+                    <groupId>javax.xml</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-jaxws</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+    </dependencies>
+    <repositories>
+        <repository>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+</project>
diff --git a/modules/samples/jaxws-samples/pom.xml b/modules/samples/jaxws-samples/pom.xml
index e715673..6195e9d 100644
--- a/modules/samples/jaxws-samples/pom.xml
+++ b/modules/samples/jaxws-samples/pom.xml
@@ -1,287 +1,182 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements. See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership. The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License. You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied. See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.axis2.examples</groupId>
-    <artifactId>jaxws-samples</artifactId>
-    <name>JAXWS Samples - Echo, Ping, MTOM</name>
-    <version>1.4</version>
-
-    <dependencies>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.3</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-kernel</artifactId>
-            <version>1.6.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-jaxws</artifactId>
-            <version>1.6.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-codegen</artifactId>
-            <version>1.6.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-adb</artifactId>
-            <version>1.6.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>addressing</artifactId>
-            <version>1.6.0</version>
-            <type>mar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-api</artifactId>
-            <version>1.2.11</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-impl</artifactId>
-            <version>1.2.11</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.schema</groupId>
-            <artifactId>XmlSchema</artifactId>
-            <version>1.4.7</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.neethi</groupId>
-            <artifactId>neethi</artifactId>
-            <version>2.0.4</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-            <version>1.1.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-httpclient</groupId>
-            <artifactId>commons-httpclient</artifactId>
-            <version>3.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.3</version>
-        </dependency>
-        <dependency>
-            <groupId>woodstox</groupId>
-            <artifactId>wstx</artifactId>
-            <version>asl-3.2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>stax</groupId>
-            <artifactId>stax-api</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>wsdl4j</groupId>
-            <artifactId>wsdl4j</artifactId>
-            <version>1.6.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-javamail_1.4_spec</artifactId>
-            <version>1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-activation_1.1_spec</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-impl</artifactId>
-            <version>2.1.6</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jsr173</artifactId>
-                    <groupId>javax.xml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-xjc</artifactId>
-            <version>2.1.6</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.1</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jsr173</artifactId>
-                    <groupId>javax.xml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.ws</groupId>
-            <artifactId>jaxws-rt</artifactId>
-            <version>2.1.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.xml.ws</groupId>
-                    <artifactId>jaxws-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.xml.bind</groupId>
-                    <artifactId>jaxb-impl</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.xml.messaging.saaj</groupId>
-                    <artifactId>saaj-impl</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.xml.stream.buffer</groupId>
-                    <artifactId>streambuffer</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.xml.stream</groupId>
-                    <artifactId>sjsxp</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.jvnet.staxex</groupId>
-                    <artifactId>stax-ex</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.org.apache.xml.internal</groupId>
-                    <artifactId>resolver</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.jvnet</groupId>
-                    <artifactId>mimepull</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.ws</groupId>
-            <artifactId>jaxws-tools</artifactId>
-            <version>2.1.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.sun.xml.ws</groupId>
-                    <artifactId>jaxws-rt</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.xml.bind</groupId>
-                    <artifactId>jaxb-xjc</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <inherited>true</inherited>
-                <configuration>
-                    <compilerVersion>1.5</compilerVersion>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-war-plugin</artifactId>
-                <configuration>
-                    <warName>jaxws-samples</warName>
-                    <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
-                    <archive>
-                        <addMavenDescriptor>false</addMavenDescriptor>
-                    </archive>
-                    <webResources>
-                        <resource>
-                            <!-- Designed to work under the axis2 bin dist directory structure, edit if needed -->
-                            <directory>${basedir}/../../repository/modules/</directory>
-                            <targetPath>WEB-INF/lib</targetPath>
-                            <includes>
-                                <include>addressing*.mar</include>
-                            </includes>
-                        </resource>
-                    </webResources>
-                </configuration>
-            </plugin>
-        </plugins>
-        <sourceDirectory>src/main</sourceDirectory>
-        <testSourceDirectory>src/test</testSourceDirectory>
-        <resources>
-            <resource>
-                <directory>src/main</directory>
-                <includes>
-                    <include>**/*.xml</include>
-                </includes>
-            </resource>
-        </resources>
-        <testResources>
-            <testResource>
-                <directory>src/test</directory>
-                <includes>
-                    <include>**/*.xml</include>
-                    <include>**/*.properties</include>
-                    <include>**/*.wsdl</include>
-                </includes>
-            </testResource>
-        </testResources>
-    </build>
-
-    <!--  needed for XmlSchema -->
-    <repositories>
-        <repository>
-            <id>ibiblio</id>
-            <name>ibiblio maven repository</name>
-            <url>http://ibiblio.org/maven/</url>
-            <layout>legacy</layout>
-        </repository>
-        <repository>
-            <id>apache</id>
-            <name>Apache maven repository</name>
-            <url>http://www.apache.org/dist/java-repository/</url>
-            <layout>legacy</layout>
-        </repository>
-        <repository>
-            <id>java.net</id>
-            <url>http://download.java.net/maven/2/</url>
-            <layout>default</layout>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-        </repository>
-    </repositories>
-
-</project>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.axis2.examples</groupId>
+    <artifactId>jaxws-samples</artifactId>
+    <name>JAXWS Samples - Echo, Ping, MTOM</name>
+    <version>1.6.0</version>
+    <packaging>war</packaging>
+    <dependencies>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.3</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-jaxws</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-codegen</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>addressing</artifactId>
+            <version>1.6.0</version>
+            <type>mar</type>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.xml.ws</groupId>
+            <artifactId>jaxws-rt</artifactId>
+            <version>2.1.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml.ws</groupId>
+                    <artifactId>jaxws-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.xml.bind</groupId>
+                    <artifactId>jaxb-impl</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.xml.messaging.saaj</groupId>
+                    <artifactId>saaj-impl</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.xml.stream.buffer</groupId>
+                    <artifactId>streambuffer</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.xml.stream</groupId>
+                    <artifactId>sjsxp</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jvnet.staxex</groupId>
+                    <artifactId>stax-ex</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.org.apache.xml.internal</groupId>
+                    <artifactId>resolver</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jvnet</groupId>
+                    <artifactId>mimepull</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <compilerVersion>1.5</compilerVersion>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.2</version>
+                <executions>
+                    <execution>
+                        <id>copy-modules</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/modules</outputDirectory>
+                            <includeTypes>mar</includeTypes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                    <warName>jaxws-samples</warName>
+                    <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
+                    <archive>
+                        <addMavenDescriptor>false</addMavenDescriptor>
+                    </archive>
+                    <webResources>
+                        <resource>
+                            <directory>${project.build.directory}/modules/</directory>
+                            <targetPath>WEB-INF/lib</targetPath>
+                            <includes>
+                                <include>addressing*.mar</include>
+                            </includes>
+                        </resource>
+                    </webResources>
+                </configuration>
+            </plugin>
+        </plugins>
+        <sourceDirectory>src/main</sourceDirectory>
+        <testSourceDirectory>src/test</testSourceDirectory>
+        <resources>
+            <resource>
+                <directory>src/main</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                    <include>**/*.properties</include>
+                    <include>**/*.wsdl</include>
+                </includes>
+            </testResource>
+        </testResources>
+    </build>
+    <repositories>
+        <repository>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+</project>
diff --git a/modules/samples/jaxws-version/pom.xml b/modules/samples/jaxws-version/pom.xml
index c103de9..f001622 100644
--- a/modules/samples/jaxws-version/pom.xml
+++ b/modules/samples/jaxws-version/pom.xml
@@ -1,56 +1,62 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements. See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership. The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License. You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied. See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.axis2</groupId>
-        <artifactId>axis2-parent</artifactId>
-        <version>1.6.0</version>
-        <relativePath>../../parent/pom.xml</relativePath>
-    </parent>
-    <artifactId>version</artifactId>
-    <name>Apache Axis2 - JAXWS Version Service</name>
-    <build>
-        <sourceDirectory>src</sourceDirectory>
-        <resources>
-          <resource>
-            <directory>resources</directory>
-          </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-kernel</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-</project>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>   
+    <groupId>org.apache.axis2.examples</groupId>      
+    <artifactId>jaxws-version</artifactId>
+    <version>1.6.0</version>
+    <packaging>jar</packaging>
+    <name>Apache Axis2 -JAXWS Version Service</name>
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <resources>
+          <resource>
+            <directory>resources</directory>
+          </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    <repositories>
+        <repository>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshot Repository</name>
+            <url>http://repository.apache.org/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+</project>
diff --git a/modules/samples/mtom/build.xml b/modules/samples/mtom/build.xml
index 31f835d..d52eae0 100755
--- a/modules/samples/mtom/build.xml
+++ b/modules/samples/mtom/build.xml
@@ -20,7 +20,7 @@
 <project name="mtom" basedir="." default="generate.service">
 
 	<property environment="env" />
-	<property name="build.dir" value="build" />
+	<property name="build.dir" value="${basedir}/build" />
 	<property name="client.dir" value="${build.dir}/client" />
 	<property name="service.dir" value="${build.dir}/service" />
 	<property name="client.classes.dir" value="${client.dir}/classes" />
@@ -38,7 +38,7 @@
 	<!-- Create Service -->
 	<target name="generate.service">
 
-		<java classname="org.apache.axis2.wsdl.WSDL2Java">
+		<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
 			<arg value="-uri" />
 			<arg value="${basedir}/resources/MTOMSample.wsdl" />
 			<arg value="-ss" />
@@ -71,7 +71,7 @@
 
 	<!-- Generate Client -->
 	<target name="generate.client">
-		<java classname="org.apache.axis2.wsdl.WSDL2Java">
+		<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
 			<arg value="-uri" />
 			<arg value="resources/MTOMSample.wsdl" />
 			<arg value="-p" />
@@ -86,7 +86,7 @@
 
 		<mkdir dir="${client.classes.dir}" />
 		<!-- Compile client -->
-		<javac srcdir="${client.dir}/src" destdir="${client.classes.dir}">
+		<javac srcdir="${client.dir}/src" destdir="${client.classes.dir}" fork="true">
 			<classpath refid="class.path" />
 		</javac>
     </target>	
diff --git a/modules/samples/quickstart/build.xml b/modules/samples/quickstart/build.xml
index ec75ea3..1dd4209 100644
--- a/modules/samples/quickstart/build.xml
+++ b/modules/samples/quickstart/build.xml
@@ -68,6 +68,10 @@
         <jar destfile="${build.dir}/StockQuoteService.aar">
             <fileset excludes="**/Test.class" dir="${build.dir}/classes"/>
         </jar>
+        <copy file="${build.dir}/StockQuoteService.aar"
+              toDir="${basedir}/../../repository/services"
+              overwrite="yes">  
+        </copy> 
     </target>
 
     <target name="clean">
diff --git a/modules/samples/quickstartaxiom/build.xml b/modules/samples/quickstartaxiom/build.xml
index e196b19..d59df6d 100644
--- a/modules/samples/quickstartaxiom/build.xml
+++ b/modules/samples/quickstartaxiom/build.xml
@@ -60,6 +60,10 @@
         <jar destfile="${build.dir}/StockQuoteService.aar">
             <fileset excludes="**/Test.class" dir="${build.dir}/classes"/>
         </jar>
+        <copy file="${build.dir}/StockQuoteService.aar"
+              toDir="${basedir}/../../repository/services"
+              overwrite="yes">  
+        </copy> 
     </target>
 
     <target name="run.client" depends="compile">
diff --git a/modules/samples/version/pom.xml b/modules/samples/version/pom.xml
index b2baf7b..b095634 100644
--- a/modules/samples/version/pom.xml
+++ b/modules/samples/version/pom.xml
@@ -45,7 +45,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/scripting/pom.xml b/modules/scripting/pom.xml
index 0874174..159e5b6 100644
--- a/modules/scripting/pom.xml
+++ b/modules/scripting/pom.xml
@@ -92,7 +92,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/soapmonitor/module/pom.xml b/modules/soapmonitor/module/pom.xml
index 838a01c..dcfe9c3 100644
--- a/modules/soapmonitor/module/pom.xml
+++ b/modules/soapmonitor/module/pom.xml
@@ -59,7 +59,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/soapmonitor/servlet/pom.xml b/modules/soapmonitor/servlet/pom.xml
index d67347c..bb943d1 100644
--- a/modules/soapmonitor/servlet/pom.xml
+++ b/modules/soapmonitor/servlet/pom.xml
@@ -57,7 +57,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/spring/pom.xml b/modules/spring/pom.xml
index 39bf151..b8625a3 100644
--- a/modules/spring/pom.xml
+++ b/modules/spring/pom.xml
@@ -70,7 +70,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-ant-plugin/pom.xml b/modules/tool/axis2-ant-plugin/pom.xml
index 1eca2ec..68293fb 100644
--- a/modules/tool/axis2-ant-plugin/pom.xml
+++ b/modules/tool/axis2-ant-plugin/pom.xml
@@ -107,7 +107,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-eclipse-codegen-plugin/pom.xml b/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
index 58ceb25..b2fcdd4 100644
--- a/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
+++ b/modules/tool/axis2-eclipse-codegen-plugin/pom.xml
@@ -121,7 +121,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-eclipse-service-plugin/pom.xml b/modules/tool/axis2-eclipse-service-plugin/pom.xml
index 926a43b..8a2a60f 100644
--- a/modules/tool/axis2-eclipse-service-plugin/pom.xml
+++ b/modules/tool/axis2-eclipse-service-plugin/pom.xml
@@ -98,7 +98,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-idea-plugin/pom.xml b/modules/tool/axis2-idea-plugin/pom.xml
index 4a2e2ef..de33755 100644
--- a/modules/tool/axis2-idea-plugin/pom.xml
+++ b/modules/tool/axis2-idea-plugin/pom.xml
@@ -147,7 +147,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml b/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
index d590de8..f6a1454 100644
--- a/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
+++ b/modules/tool/axis2-java2wsdl-maven-plugin/pom.xml
@@ -51,7 +51,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml b/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml
index 582b54e..a6e5a05 100644
--- a/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml
+++ b/modules/tool/axis2-java2wsdl-maven-plugin/src/test/test1/pom.xml
@@ -23,14 +23,14 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.axis2</groupId>
     <artifactId>axis2-wsdl2code-maven-plugin-test1</artifactId>
-    <version>1.6.0</version>
+    <version>1.6.0-SNAPSHOT</version>
     <name>Test 1 of the axis2-wsdl2code-maven-plugin</name>
     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.axis2</groupId>
                 <artifactId>axis2-java2wsdl-maven-plugin</artifactId>
-                <version>1.6.0</version>
+                <version>1.6.0-SNAPSHOT</version>
                 <configuration>
                     <className>org.apache.axis2.maven2.java2wsdl.test.Adder</className>
                 </configuration>
diff --git a/modules/tool/axis2-repo-maven-plugin/pom.xml b/modules/tool/axis2-repo-maven-plugin/pom.xml
index 9a097b0..0d7e79c 100644
--- a/modules/tool/axis2-repo-maven-plugin/pom.xml
+++ b/modules/tool/axis2-repo-maven-plugin/pom.xml
@@ -62,7 +62,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml b/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
index 2848edb..2d13345 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/pom.xml
@@ -100,7 +100,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml b/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml
index 3da20b3..13324b7 100644
--- a/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml
+++ b/modules/tool/axis2-wsdl2code-maven-plugin/src/test/test1/pom.xml
@@ -23,14 +23,14 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.axis2.maven2</groupId>
     <artifactId>axis2-wsdl2code-maven-plugin-test1</artifactId>
-    <version>1.6.0</version>
+    <version>1.6.0-SNAPSHOT</version>
     <name>Test 1 of the axis2-wsdl2code-maven-plugin</name>
     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.axis2</groupId>
                 <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
-                <version>1.6.0</version>
+                <version>1.6.0-SNAPSHOT</version>
                 <configuration>
                     <generateServerSide>true</generateServerSide>
                     <generateServerSideInterface>true</generateServerSideInterface>
diff --git a/modules/transport/http/pom.xml b/modules/transport/http/pom.xml
index 3c46715..97ca4fc 100644
--- a/modules/transport/http/pom.xml
+++ b/modules/transport/http/pom.xml
@@ -61,10 +61,10 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-Name>${pom.artifactId}</Bundle-Name>
+                        <Bundle-Name>${project.artifactId}</Bundle-Name>
                         <Bundle-Vendor>Apache Software Foundation</Bundle-Vendor>
-                        <Bundle-Description>${pom.description}</Bundle-Description>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Description>${project.description}</Bundle-Description>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                         <Export-Package>
                             org.apache.axis2.transport.http.*;-split-package:=merge-last,
                         </Export-Package>
diff --git a/modules/transport/local/pom.xml b/modules/transport/local/pom.xml
index 1620e0e..5c4942c 100644
--- a/modules/transport/local/pom.xml
+++ b/modules/transport/local/pom.xml
@@ -61,10 +61,10 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-Name>${pom.artifactId}</Bundle-Name>
+                        <Bundle-Name>${project.artifactId}</Bundle-Name>
                         <Bundle-Vendor>Apache Software Foundation</Bundle-Vendor>
-                        <Bundle-Description>${pom.description}</Bundle-Description>
-                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Description>${project.description}</Bundle-Description>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                         <Export-Package>
                             org.apache.axis2.transport.local.*;-split-package:=merge-last,
                         </Export-Package>
diff --git a/modules/xmlbeans/pom.xml b/modules/xmlbeans/pom.xml
index ace02d1..6385103 100644
--- a/modules/xmlbeans/pom.xml
+++ b/modules/xmlbeans/pom.xml
@@ -84,7 +84,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/pom.xml b/pom.xml
index f760682..ab5e03a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,12 @@
             <id>everything</id>
             <modules>
                 <module>modules/distribution</module>
+                <module>modules/samples/java_first_jaxws</module>
+                <module>modules/samples/jaxws-addressbook</module>
+                <module>modules/samples/jaxws-calculator</module>
+                <module>modules/samples/jaxws-interop</module>
+                <module>modules/samples/jaxws-samples</module>
+                <module>modules/samples/jaxws-version</module>
             </modules>
         </profile>
         <profile>
@@ -488,6 +494,12 @@
             <email>ruwan AT apache.org</email>
             <url>http://www.linkedin.com/in/ruwanlinton</url>
         </developer>
+        <developer>
+            <name>Sagara Gunathunga</name>
+            <id>sagara</id>
+            <email>sagara AT apache.org</email>
+            <organization>WSO2</organization>
+        </developer>
     </developers>
     <contributors>
         <contributor>
@@ -539,14 +551,6 @@
         <developerConnection>scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.6.0</developerConnection>
         <url>http://svn.apache.org/viewvc/axis/axis2/java/core/tags/v1.6.0</url>
     </scm>
-    <distributionManagement>
-        <snapshotRepository>
-            <id>apache.snapshots.https</id>
-            <name>${distMgmtSnapshotsName}</name>
-            <url>${distMgmtSnapshotsUrl}</url>
-            <uniqueVersion>false</uniqueVersion>
-        </snapshotRepository>
-    </distributionManagement>
     <properties>
         <!-- This variable is used in some Xdocs and is substituted using Velocity. Note that
              we can't use the project.version variable directly because of the dot. See
@@ -613,7 +617,7 @@
                         </goals>
                         <configuration>
                             <resourceBundles>
-                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
+                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${project.version}</resourceBundle>
                             </resourceBundles>
                         </configuration>
                     </execution>
diff --git a/release-notes.html b/release-notes.html
index 1a9b195..6330025 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -20,16 +20,20 @@
 <html>
 <head>
   <meta http-equiv="content-type" content="">
-  <title>Welcome to Apache Axis2 version @axisVersion@</title>
+  <title>Welcome to Apache Axis2 version 1.6.0</title>
 </head>
 
 <body lang="en">
-<h1>Welcome to Apache Axis2 version @axisVersion@</h1>
+<h1>Welcome to Apache Axis2 version 1.6.0</h1>
 
-<h3>@TODAY@</h3>
+<h3>May 17, 2011</h3>
 
 <pre>Just over one and half years since the 1.5 release, we are very proud to
-announce the release of Apache Axis2 version @axisVersion@.
+announce the release of Apache Axis2 version 1.6.0.
+
+More than fifty issues were fixed for 1.6.0 release. Refer to the following filter
+<a href="http://bit.ly/issues-fixed-for-1_6">Issues fixed for the 1.6.0 release</a>
+to find all the issues fixed for the 1.6.0 release
 
 Downloads are available at:
     http://ws.apache.org/axis2/download.cgi
@@ -45,7 +49,7 @@
 WS-Eventing (Apache Savan) will be available soon after the Apache Axis2
 @axisVersion@ release. Please see these projects' own sites for further information.
 
-Known Issues and Limitations in @axisVersion@ Release:
+Known Issues and Limitations in 1.6.0 Release:
 - Please see JIRA
 
 We are striving for a simple and happy first time user experience as well as a
@@ -85,7 +89,7 @@
    - Message Transmission Optimization Mechanism (MTOM)
    - XML Optimized Packaging (XOP)
    - SOAP with Attachments
-   - WSDL 1.1, including both SOAP and HTTP bindings
+   - WSDL 1.1, including both SOAP and HTTP bindings , WSDL 2.0
    - WS-Addressing submission and 1.0
    - WS-Policy
    - SAAJ 1.1
@@ -95,12 +99,16 @@
    - SMTP
    - JMS
    - TCP
+   - udp
+   - xmpp
+
+For more details refer <a href= "http://ws.apache.org/commons/transport/"> Axis2 Transports</a> project. 
 
 Supported Data Bindings
    - Axis Data Binding (ADB)
    - XMLBeans
    - JibX
-   - JaxBRI (Experimental)
+   - JAXB
 
 Tools
    - WSDL2Java: Generate Java stubs and skeletons from a WSDL document.
@@ -110,9 +118,6 @@
    - Maven2 Plugins
    - Web application for administering Apache Axis2
    
-Bugs marked as Resolved/Fixed for 1.6 Release:
-
     </pre>
- <p>Follow the filter <a href="http://bit.ly/issues-fixed-for-1_6">Issues fixed for the 1.6 release</a> </p>
-</body>
+ </body>
 </html>
diff --git a/src/site/xdoc/docs/soapmonitor-module.xml.vm b/src/site/xdoc/docs/soapmonitor-module.xml.vm
index 9a3a008..1323422 100644
--- a/src/site/xdoc/docs/soapmonitor-module.xml.vm
+++ b/src/site/xdoc/docs/soapmonitor-module.xml.vm
@@ -135,9 +135,9 @@
 
 <p>Finally, the applet classes must be placed into the Web application so that
 they can be loaded by the Web browser. You can get the compiled applet
-classes from the WEB-INF/lib/soapmonitor-servlet-${axis2_version}.jar which is inside
+classes from the WEB-INF/lib/axis2-soapmonitor-servlet-${axis2_version}.jar which is inside
 the extracted axis2.war. To extract the content of the file, simply
-execute the command, <code>jar -xf soapmonitor-servlet-${axis2_version}.jar</code>.
+execute the command, <code>jar -xf axis2-soapmonitor-servlet-${axis2_version}.jar</code>.
 The applet code is in the org.apache.axis2.soapmonitor.applet package and therefore 
 the 'org' directory created by the unpacking of JAR file should be placed
 in &lt;CATALINA_HOME&gt;/webapps/axis2/.</p>
diff --git a/src/site/xdoc/download.xml b/src/site/xdoc/download.xml
index 833c6a2..7a7918b 100644
--- a/src/site/xdoc/download.xml
+++ b/src/site/xdoc/download.xml
@@ -77,7 +77,7 @@
                     </tr>
                     <tr>
                         <td><a name="1_6_0"/><strong>1.6.0</strong></td>
-                        <td>19 - Feb - 2011</td>
+                        <td>17 - May - 2011</td>
                         <td>1.6.0 Release (Mirrored)</td>
                         <td>
                             Binary Distribution
@@ -130,48 +130,48 @@
                     <tr>
                         <td><a name="1_5_3"/><strong>1.5.3</strong></td>
                         <td>12 - Nov - 2010</td>
-                        <td>1.5.3 Release (Mirrored)</td>
+                        <td>1.5.3 Release (Archived)</td>
                         <td>
                             Binary Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.3/axis2-1.5.3-bin.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-bin.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-bin.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-bin.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-bin.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-bin.zip.asc">PGP</a>
                             <br/>
                             Source Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.3/axis2-1.5.3-src.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-src.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-src.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-src.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-src.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-src.zip.asc">PGP</a>
                             <br/>
                             WAR Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.3/axis2-1.5.3-war.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-war.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-war.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-war.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-war.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-war.zip.asc">PGP</a>
                             <br/>
                             Documents Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.3/axis2-1.5.3-docs.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-docs.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-docs.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-docs.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-docs.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.3/axis2-1.5.3-docs.zip.asc">PGP</a>
                         </td>
                     </tr>
                     <tr>
                         <td><a name="1_5_2"/><strong>1.5.2</strong></td>
                         <td>06 - Sep - 2010</td>
-                        <td>1.5.2 Release (Mirrored)</td>
+                        <td>1.5.2 Release (Archived)</td>
                         <td>
                             Binary Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.2/axis2-1.5.2-bin.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-bin.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-bin.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-bin.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-bin.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-bin.zip.asc">PGP</a>
                             <br/>
                             Source Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.2/axis2-1.5.2-src.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-src.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-src.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-src.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-src.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-src.zip.asc">PGP</a>
                             <br/>
                             WAR Distribution
-                            <a href="[preferred]/axis/axis2/java/core/1.5.2/axis2-1.5.2-war.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-war.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-war.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-war.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-war.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/axis/axis2/java/core/1.5.2/axis2-1.5.2-war.zip.asc">PGP</a>
                             <br/>
                             (The Documents Distribution is not available for this release)
                         </td>
@@ -179,79 +179,79 @@
                     <tr>
                         <td><a name="1_5_1"/><strong>1.5.1</strong></td>
                         <td>23 - Oct - 2009</td>
-                        <td>1.5.1 Release (Mirrored)</td>
+                        <td>1.5.1 Release (Archived)</td>
                         <td>
                             Binary Distribution
-                            <a href="[preferred]/ws/axis2/1_5_1/axis2-1.5.1-bin.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-bin.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-bin.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-bin.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-bin.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-bin.zip.asc">PGP</a>
                             <br/>
                             Source Distribution
-                            <a href="[preferred]/ws/axis2/1_5_1/axis2-1.5.1-src.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-src.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-src.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-src.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-src.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-src.zip.asc">PGP</a>
                             <br/>
                             WAR Distribution
-                            <a href="[preferred]/ws/axis2/1_5_1/axis2-1.5.1-war.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-war.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-war.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-war.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-war.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-war.zip.asc">PGP</a>
                             <br/>
                             Documents Distribution
-                            <a href="[preferred]/ws/axis2/1_5_1/axis2-1.5.1-docs.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-docs.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-docs.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-docs.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-docs.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5_1/axis2-1.5.1-docs.zip.asc">PGP</a>
                         </td>
                     </tr>
                     <tr>
                         <td><a name="1_5"/><strong>1.5</strong></td>
                         <td>09 - Jun - 2009</td>
-                        <td>1.5 Release (Mirrored)</td>
+                        <td>1.5 Release (Archived)</td>
                         <td>
                             Binary Distribution
-                            <a href="[preferred]/ws/axis2/1_5/axis2-1.5-bin.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-bin.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-bin.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-bin.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-bin.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-bin.zip.asc">PGP</a>
                             <br/>
                             Source Distribution
-                            <a href="[preferred]/ws/axis2/1_5/axis2-1.5-src.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-src.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-src.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-src.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-src.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-src.zip.asc">PGP</a>
                             <br/>
                             WAR Distribution
-                            <a href="[preferred]/ws/axis2/1_5/axis2-1.5-war.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-war.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-war.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-war.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-war.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-war.zip.asc">PGP</a>
                             <br/>
                             Documents Distribution
-                            <a href="[preferred]/ws/axis2/1_5/axis2-1.5-docs.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-docs.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_5/axis2-1.5-docs.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-docs.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-docs.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_5/axis2-1.5-docs.zip.asc">PGP</a>
                         </td>
                     </tr>
                     <tr>
                         <td><a name="1_4_1"/><strong>1.4.1</strong></td>
                         <td>24 - Aug - 2008</td>
-                        <td>1.4.1 Release (Mirrored)</td>
+                        <td>1.4.1 Release (Archived)</td>
                         <td>
                             Binary Distribution
-                            <a href="[preferred]/ws/axis2/1_4_1/axis2-1.4.1-bin.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-bin.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-bin.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-bin.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-bin.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-bin.zip.asc">PGP</a>
                             <br/>
                             Source Distribution
-                            <a href="[preferred]/ws/axis2/1_4_1/axis2-1.4.1-src.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-src.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-src.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-src.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-src.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-src.zip.asc">PGP</a>
                             <br/>
                             WAR Distribution
-                            <a href="[preferred]/ws/axis2/1_4_1/axis2-1.4.1-war.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-war.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-war.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-war.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-war.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-war.zip.asc">PGP</a>
                             <br/>
                             Documents Distribution
-                            <a href="[preferred]/ws/axis2/1_4_1/axis2-1.4.1-docs.zip">zip</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-docs.zip.md5">MD5</a> |
-                            <a href="http://www.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-docs.zip.asc">PGP</a>
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-docs.zip">zip</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-docs.zip.md5">MD5</a> |
+                            <a href="http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-docs.zip.asc">PGP</a>
                         </td>
                     </tr>
                     <tr>
@@ -561,7 +561,7 @@
             "http://www.apache.org/dev/release-signing#openpgp">OpenPGP</a>
             compatible signature from the main Apache site. These can be
             downloaded by following the links above. This <a href=
-            "http://www.apache.org/dist/ws/axis2/KEYS">KEYS</a> file contains
+            "http://www.apache.org/dist/axis/axis2/java/core/KEYS">KEYS</a> file contains
             the public keys that can be used for verifying signatures. It is
             recommended that (when possible)a <a href=
             "http://www.apache.org/dev/release-signing#web-of-trust">Web of
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index eab24ff..59ecf21 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -35,9 +35,9 @@
 "http://axis.apache.org/axis2/c/"><strong>Apache Axis2/C</strong></a>
 Web site for Axis2/C implementation information.</p>
 <p>Apache Axis2, Axis2, Apache, the Apache feather logo, and the Apache Axis2 project logo are trademarks of The Apache Software Foundation.</p>
-<h3>February 19, 2011 - Apache Axis2/Java Version 1.6 Released!</h3>
-<p>1.6 is a major release of axis2 with many fixes and improvements to the core and all it's modules</p>
-<p>Refer to the following filter <a href="http://bit.ly/issues-fixed-for-1_6">Issues fixed for the 1.6 release</a> to find all the issues fixed for the 1.6 release</p>
+<h3>May 17, 2011 - Apache Axis2/Java Version 1.6.0 Released!</h3>
+<p>1.6.0 is a major release of axis2 with many fixes and improvements to the core and all it's modules</p>
+<p>Refer to the following filter <a href="http://bit.ly/issues-fixed-for-1_6">Issues fixed for the 1.6.0 release</a> to find all the issues fixed for the 1.6.0 release</p>
 <h3>December 19, 2010 - Apache Axis2/Java Version 1.5.4 Released!</h3>
 <p>1.5.4 is a maintenance release that contains fixes for the following issues:</p>
 <ul>
diff --git a/src/site/xdoc/siteHowTo.xml b/src/site/xdoc/siteHowTo.xml
index a77f9b9..e414d0e 100644
--- a/src/site/xdoc/siteHowTo.xml
+++ b/src/site/xdoc/siteHowTo.xml
@@ -43,8 +43,8 @@
 "https://svn.apache.org/repos/asf/axis/axis2/java/core/trunk">commiter
 check out.</a></p>
 <h2>Building the Site</h2>
-<p>cd to modules/documentation and type <i>mvn install</i> The built
-site will be available under target/site.</p>
+<p>During maven releases site should have been generated on target/site directory and no special action required. Further <a href="release-process.html">release process guide </a> describes necessary steps to update Axis2 site with your new modifications.</p>
+<p>In case if you want to generate site only you could run <i>mvn site</i> on root project of your local copy.</p>
 <h2>FAQ</h2>
 <ol>
 <li>How can I update a document in the site ?<br />
diff --git a/src/site/xdoc/tools/eclipse/plugin-installation.xml b/src/site/xdoc/tools/eclipse/plugin-installation.xml
index d4ed537..bde82d1 100644
--- a/src/site/xdoc/tools/eclipse/plugin-installation.xml
+++ b/src/site/xdoc/tools/eclipse/plugin-installation.xml
@@ -31,6 +31,9 @@
                 (<a href="servicearchiver-plugin.html">Service Archive Generator</a> and
                 <a href="wsdl2java-plugin.html">Code Generator Wizard</a>).
                 The two plugins should work on Eclipse version 3.1 and upwards, and require at least Java 1.5.
+                The plugins have dependencies on bundles that are installed by default in the Eclipse IDE for Java EE Developers
+                edition, but not in the Eclipse IDE for Java Developers edition. It is therefore recommended
+                to use the EE edition.
                 The installation procedure is the same for both plugins, but depends on the Eclipse
                 version being used. To determine which procedure to use, check if there is a
                 <tt>dropins</tt> folder in the Eclipse installation directory. This folder is used
