[jboss-svn-commits] JBL Code SVN: r25452 - in labs/jbosstm/enterprise/tags: EAP_4_2_7 and 41 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 26 21:40:28 EST 2009


Author: irooskov at redhat.com
Date: 2009-02-26 21:40:26 -0500 (Thu, 26 Feb 2009)
New Revision: 25452

Added:
   labs/jbosstm/enterprise/tags/EAP_4_2_7/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Feedback.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/JBoss_Transactions_Administrators_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Chapter.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Feedback.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Preface.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/images/icon.svg
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Feedback.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/JBoss_Transactions_Administrators_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Feedback.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/JBoss_Transactions_Administrators_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Feedback.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/JBoss_Transactions_Administrators_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Chapter.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Feedback.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/JBoss_Transactions_Administrators_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Preface.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Feedback.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/JBoss_Transactions_Administrators_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Feedback.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/JBoss_Transactions_Administrators_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_A.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_B.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_02.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_03.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_04.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_05.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_06.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_07.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/JBoss_TS_Programmers_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_A.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_B.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_02.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_03.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_04.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_05.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_06.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Details_Panel.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/File_Menu.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Help_Menu.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Independent_Top-Level.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Invoke_Operation_Parameters.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/JMX_Attributes_Operations.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/JMX_Browser.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Menu.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Multiple_Object.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Object_Store.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Object_Store_Split.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Performance_Menu.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Performance_Window.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Persistent_Object_Lifecycle.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Series_Colour.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Series_Menu.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Single_Object.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/TXCore_class_hierarchy.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Window_Menu.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_A.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_B.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_02.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_03.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_04.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_05.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_06.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_07.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/JBoss_TS_Programmers_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_A.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_B.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_02.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_03.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_04.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_05.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_06.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_07.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/JBoss_TS_Programmers_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_A.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_B.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_02.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_03.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_04.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_05.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_06.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_07.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/JBoss_TS_Programmers_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_A.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_B.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_02.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_03.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_04.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_05.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_06.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/JBoss_Transactions_Programmers_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_A.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_B.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_02.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_03.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_04.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_05.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_06.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_07.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/JBoss_TS_Programmers_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_A.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_B.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_02.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_03.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_04.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_05.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_06.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_07.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/JBoss_TS_Programmers_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Preface.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Application_Process.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Crash_Recovery_Architecture.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/ExpiryScanner.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/ObjectStore.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/POA.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/RecoverCoordinator_Object.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recover_Manager_Flow.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recovery.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/RecoveryCoordinator.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recovery_Manager.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Resource-initiated_Recovery.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Transaction_Process.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Transactions_Failure_Recovery_Guide.po
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/JBoss_Transactions_Failure_Recovery_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Preface.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Preface.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/Win_Services.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/icon.svg
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Installing_ArjunaCore.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/JBoss_Transactions_Installation_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Preface.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Preface.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/images/icon.svg
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Administration_of_ArjunaTA.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/JBoss_Transactions_JTA_Administration_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Preface.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Examples.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Preface.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/An_Introduction_to_the_JTA.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Configuring_JBossJTA.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Examples.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/JBoss_Transactions_JTA_Programmers_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/JDBC_and_Transactions.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Preface.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/The_Resource_Manager.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transaction_Recovery.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transactions.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Using_JBossJTA_in_Application_Servers.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/Makefile
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.ent
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/AT_Model.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Back-End_Integration.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_Protocol.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_State_Transitions.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Flow.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Handlers.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Transaction_Control.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Transactional_Service_and_Participant.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Architecture.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Infrastructure.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Coordination_Foundations.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Transaction_Global_View.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Web_Services.png
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Author_Group.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Book_Info.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Getting_Started.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Introduction.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Participants.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Preface.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Revision_History.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Stand-alone_Coordinator.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/The_XTS_API.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactional_Web_Services.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactions_Overview.pot
   labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.pot
Log:
adding 4.2.7 branch for next release


Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,15 @@
+#Makefile for JBoss_Transactions_Administrators_Guide
+
+XML_LANG	= en-US
+
+BRAND	= JBoss
+
+
+#OTHER_LANGS	= de-DE es-ES fr-FR ja-JP pt-BR zh-CN 
+
+CHUNK_FIRST = 0
+CHUNK_SECTION_DEPTH = 1
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,29 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "FF0000 Headgear Documentation Group"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,40 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions API 4.2.3 Administration Guide"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,932 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid ""
+"Object store management is critically important to the transaction service."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid ""
+"If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr ""
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "VIS_JBoss_Transactions_Administrators_Guide   only from package methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid ""
+"FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Feedback.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Feedback.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,34 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr ""
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/JBoss_Transactions_Administrators_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,123 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/de-DE/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language de-DE translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_Transactions_Administrators_Guide 4.3\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-05 22:49+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="JBoss_Transactions_Administrators_Guide-Product_Name_and_Version">
+<title>JBoss Transactions Administrators Guide CP07</title>
+	
+	<!--<para>JBTA-AG-12/10/07</para>-->
+	
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>1</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.2</productnumber>
+	<abstract><para>This book is the JBoss Enterprise Application Platform edition of the JBoss Transactions Administrators Guide</para>
+	</abstract>
+	<corpauthor><inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/redhat-logo.svg" />
+			</imageobject>
+		</inlinemediaobject>
+	</corpauthor><copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<!--xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /-->
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Chapter.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Chapter.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Chapter.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,299 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+	
+<chapter><title>Introduction</title>
+	<para>Apart from ensuring that the run-time system is executing normally, there is little continuous administration needed for the JBoss Transactions software. There are a few points however, that should be made:</para>
+	<para><orderedlist>
+		<listitem>
+			<para>The present implementation of the JBoss TA system provides no security or protection for data. The objects stored in the JBoss Transactions object store are (typically) owned by the user who ran the application that created them. The Object Store and Object Manager facilities make no attempt to enforce even the limited form of protection that Unix/Windows provides. There is no checking of user or group IDs on access to objects for either reading or writing.</para>
+		</listitem>
+		<listitem>
+			<para>Persistent objects created in the Object Store never go away unless the StateManager.destroy method is invoked on the object or some application program explicitly deletes them. This means that the Object Store gradually accumulates garbage (especially during application development and testing phases). At present we have no automated garbage collection facility. Further, we have not addressed the problem of dangling references. That is, a persistent object, A, may have stored a Uid for another persistent object, B, in its passive representation on disk. There is nothing to prevent an application from deleting B even though A still contains a reference to it. When A is next activated and attempts to access B, a run-time error will occur.</para>
+		</listitem>
+		<listitem>
+			<para>There is presently no support for version control of objects or database reconfiguration in the event of class structure changes. This is a complex research area that we have not addressed. At present, if you change the definition of a class of persistent objects, you are entirely responsible for ensuring that existing instances of the object in the Object Store are converted to the new representation. The JBoss Transactions software can neither detect nor correct references to old object state by new operation versions or vice versa.</para>
+		</listitem>
+		<listitem>
+			<para>Object store management is critically important to the transaction service.</para>
+		</listitem>
+	</orderedlist></para>
+
+
+<section><title>ObjectStore management</title>
+	<para>Within the transaction service installation, the object store is updated regularly whenever transactions are created, or when Transactional Objects for Java is used. In a failure free environment, the only object states which should reside within the object store are those representing objects created with the Transactional Objects for Java API. However, if failures occur, transaction logs may remain in the object store until crash recovery facilities have resolved the transactions they represent. As such it is very important that the contents of the object store are not deleted without due care and attention, as this will make it impossible to resolve in doubt transactions. In addition, if multiple users share the same object store it is important that they realise this and do not simply delete the contents of the object store assuming it is an exclusive resource.</para>
+</section>
+
+<section><title>JBoss Transactions runtime information</title>
+	<para>Each module that comprises JBoss Transactions possesses a class called Info. These classes all provide a single toString method that returns an XML document representing the configuration information for that module. So, for example:</para>
+	
+	<programlisting>&lt;module-info name="arjuna"&gt;
+	&lt;source-identifier&gt;unknown&lt;/source-identifier&gt;
+	&lt;build-information&gt;
+	   Arjuna Technologies [mlittle] (Windows 2000 5.0)
+	&lt;/build-information&gt;
+	&lt;version&gt;unknown&lt;/version&gt;
+	&lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;
+	&lt;notes&gt;&lt;/notes&gt;
+	&lt;configuration&gt;
+		&lt;properties-file dir="null"&gt;arjuna.properties&lt;/properties-file&gt;
+		&lt;object-store-root&gt;null&lt;/object-store-root&gt;
+	&lt;/configuration&gt;
+&lt;/module-info&gt;</programlisting>
+</section>
+
+<section><title>Failure recovery administration</title>
+	<para>The failure recovery subsystem of JBoss Transactions will ensure that results of a transaction are applied consistently to all resources affected by the transaction, even if any of the application processes or the machine hosting them crash or lose network connectivity. In the case of machine (system) crash or network failure, the recovery will not take place until the system or network are restored, but the original application does not need to be restarted – recovery responsibility is delegated to the Recovery Manager process (see below). Recovery after failure requires that information about the transaction and the resources involved survives the failure and is accessible afterward: this information is held in the ActionStore, which is part of the ObjectStore.</para>
+	<para><orderedlist>
+		<listitem>
+			<para>If the ObjectStore is destroyed or modified, recovery may not be possible.</para>
+		</listitem>
+	</orderedlist></para>
+	<para>Until the recovery procedures are complete, resources affected by a transaction that was in progress at the time of the failure may be inaccessible. For database resources, this may be reported as tables or rows held by “in-doubt transactions”. For TransactionalObjects for Java resources, an attempt to activate the Transactional Object (as when trying to get a lock) will fail.</para>
+	
+	<section><title>The Recovery Manager</title>
+		<para>The failure recovery subsystem of JBoss Transactions requires that the stand-alone Recovery Manager process be running for each ObjectStore (typically one for each node on the network that is running JBoss Transactions applications). The RecoveryManager file is located in the arjunacore jar file within the package <classname>com.arjuna.ats.arjuna.recovery.RecoveryManager</classname>. To start the Recovery Manager issue the following command:</para>
+		<para><command>java com.arjuna.ats.arjuna.recovery.RecoveryManager</command></para>
+		<para>If the <literal>-test</literal> flag is used with the Recovery Manager then it will display a “Ready” message when initialised, i.e.,</para>
+		<para><command>java com.arjuna.ats.arjuna.recovery.RecoveryManager -test</command></para>
+	</section>
+	
+	<section><title>Configuring the Recovery Manager</title>
+		<para>The RecoveryManager reads the properties defined in the <filename>arjuna.properties</filename> file and then also reads the property file <filename>RecoveryManager.properties</filename>, from the same directory as it found the arjuna properties file. An entry for a property in the RecoveryManager properties file will override an entry for the same property in the main TransactionService properties file. Most of the entries are specific to the Recovery Manager.</para>
+		<para>A default version of <filename>RecoveryManager.properties</filename> is supplied with the distribution – this can be used without modification, except possibly the debug tracing fields (see below, Output). The rest of this section discusses the issues relevant in setting the properties to other values (in the order of their appearance in the default version of the file)</para>
+
+		<section><title>Output</title>
+		<para>
+			It is likely that installations will want to have some form of output from the RecoveryManager, to provide a record of what recovery activity has taken place. RecoveryManager uses the logging tracing mechanism provided by the Arjuna Common Logging Framework (CLF), which provides a high level interface that hides differences that exist between existing logging APIs such Jakarta log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache Commons Logging framework and configuration is assumed to occur through that framework.
+		</para>
+		<para>
+			With the CLF applications make logging calls on logger objects. Loggers may use logging Levels to decide if they are interested in a particular log message. Each log message has an associated log Level, that gives the importance and urgency of a log message. The set of possible Log Levels are DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL.
+		</para>
+		<para>
+			The CLF provides an extension to filter logging messages according to finer granularity an application may define. That is, when a log message is provided to the logger with the DEBUG level, additional conditions can be specified to determine if the log message is enabled or not.
+		</para>
+		<para>
+			<orderedlist>
+			<listitem>
+				<para>These conditions are applied if and only the DEBUG level is enabled and the log request performed by the application specifies debugging granularity. </para>
+			</listitem>
+		</orderedlist>
+	</para>
+		<para>When enabled, Debugging is filtered conditionally on three variables: </para>
+		<para><orderedlist>
+			<listitem>
+				<para>Debugging level: this is where the log request with the DEBUG Level is generated from, e.g., constructors or basic methods. </para>
+			</listitem>
+			<listitem>
+				<para>Visibility level: the visibility of the constructor, method, etc. that generates the debugging. </para>
+			</listitem>
+			<listitem>
+				<para>Facility code: for instance the package or sub-module within which debugging is generated, e.g., the object store. </para>
+			</listitem>
+		</orderedlist></para>
+		<para>According to these variables the CLF defines three interfaces. A particular product may implement its own classes according to its own finer granularity. JBoss Transactions uses the default Debugging level and the default Visibility level provided by CLF, but it defines its own Facility Code. JBoss Transactions uses the default level assigned to its logger objects (DEBUG). However, it uses the finer debugging features to disable or enable debug messages. Finer debugging values used by the JBoss Transactions are defined below:</para>
+		<para>Debugging level – JBoss Transactions uses the default values defined in the class <classname>com.arjuna.common.util.logging.DebugLevel</classname></para>
+		<para><orderedlist>
+			<listitem>
+				<para>NO_DEBUGGING:  No diagnostics. A logger object assigned with this values discard all debug requests </para>
+			</listitem>
+			<listitem>
+				<para>FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value allows all debug requests if the facility code and the visibility level match those allowed by the logger.</para>
+			</listitem>
+		</orderedlist></para>
+		<para>Additional Debugging Values are: </para>
+		<para><orderedlist>
+			<listitem>
+				<para>CONSTRUCTORS: Diagnostics from constructors. </para>
+			</listitem>
+			<listitem>
+				<para>DESTRUCTORS:  Diagnostics from finalizers. </para>
+			</listitem>
+			<listitem>
+				<para>CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers. </para>
+			</listitem>
+			<listitem>
+				<para>FUNCTIONS:  Diagnostics from functions. </para>
+			</listitem>
+			<listitem>
+				<para>OPERATORS:  Diagnostics from operators, such as equals. </para>
+			</listitem>
+			<listitem>
+				<para>FUNCS_AND_OPS: Diagnostics from functions and operations. </para>
+			</listitem>
+			<listitem>
+				<para>ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations. </para>
+			</listitem>
+			<listitem>
+				<para>TRIVIAL_FUNCS:  Diagnostics from trivial functions. </para>
+			</listitem>
+			<listitem>
+				<para>TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators. </para>
+			</listitem>
+			<listitem>
+				<para>ALL_TRIVIAL:  Diagnostics from all trivial operations. </para>
+			</listitem>
+		</orderedlist></para>
+		<para>Visibility level – JBoss Transactions uses the default values defined in the class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname></para>
+		<para><orderedlist>
+			<listitem>
+				<para>VIS_NONE:  No Diagnostic </para>
+			</listitem>
+			<listitem>
+				<para>VIS_PRIVATE :  only from private methods. </para>
+			</listitem>
+			<listitem>
+				<para>VIS_PROTECTED  only from protected methods. </para>
+			</listitem>
+			<listitem>
+				<para>VIS_PUBLIC   only from public methods. </para>
+			</listitem>
+			<listitem>
+				<para>VIS_PACKAGE   only from package methods. </para>
+			</listitem>
+			<listitem>
+				<para>VIS_ALL:  Full Diagnostic </para>
+			</listitem>
+		</orderedlist></para>
+		<para>Facility Code – JBoss Transactions uses the following values defined in the class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname></para>
+		<para><orderedlist>
+			<listitem>
+				<para>FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_ABSTRACT_REC = 0x00000008 (abstract records).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_OBJECT_STORE = 0x00000010 (object store implementations).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_STATE_MAN = 0x00000020 (state management and StateManager).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_SHMEM = 0x00000040 (shared memory implementation classes).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_GENERAL = 0x00000080 (general classes).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and classes).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_THREADING = 0x00002000 (threading classes).</para>
+			</listitem>
+			<listitem>
+				<para>AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support).</para>
+			</listitem>
+			<listitem>
+				<para>FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager).</para>
+			</listitem>
+		</orderedlist></para>
+		<para>To ensure appropriate output, it is necessary to set some of the finer debug properties explicitly in the <filename>CommonLogging.xml</filename> file, to enable logging messages issued by the JBoss Transactions module.</para>
+		<para>Messages describing the start and the periodical behavior made by the RecoveryManager are output using the INFO level. If other debug tracing is wanted, the finer debugging level should be set appropriately. For instance, the following configuration, in the CommonLogging.xml, enables all debug messages related to the Crash Recovery protocol and issued by the JBoss Transactions module. </para>
+		
+		<programlisting>&lt;!-- Common logging related properties. --&gt;
+&lt;property
+  name="com.arjuna.common.util.logging.DebugLevel"
+  value="0x00000000"/&gt;
+&lt;propertyname="com.arjuna.common.util.logging.FacilityLevel"
+  value="0xffffffff"/&gt;
+&lt;propertyname="com.arjuna.common.util.logging.VisibilityLevel"
+  value="0xffffffff"/&gt;</programlisting>
+		<para><orderedlist>
+			<listitem>
+				<para>Two logger objects are provided, one manages I18N messages and a second does not.</para>
+			</listitem>
+		</orderedlist></para>
+		<para>Setting the normal recovery messages to the INFO level allows the RecoveryManager producing a moderate level of reporting. If nothing is going on, it just reports the entry into each module for each periodic pass. To disable INFO messages produced by the Recovery Manager, the logging level could be set to the higher level: ERROR. Setting the level to ERROR means that the RecoveryManager will only produce error, warning or fatal messages.</para>
+	</section>
+</section>
+	
+	<section><title>Periodic Recovery</title>
+		<para>The RecoveryManager scans the ObjectStore and other locations of information, looking for transactions and resources that require, or may require recovery. The scans and recovery processing are performed by recovery modules, (instances of classes that implement the com.arjuna.ats.arjuna.recovery.RecoveryModule interface), each with responsibility for a particular category of transaction or resource. The set of recovery modules used are dynamically loaded, using properties found in the RecoveryManager property file.</para>
+		<para>The interface has two methods: <literal>periodicWorkFirstPass</literal> and <literal>periodicWorkSecondPass</literal>. At an interval (defined by property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</classname>), the RecoveryManager will call the first pass method on each property, then wait for a brief period (defined by property <classname>com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the second pass of each module. Typically, in the first pass, the module scans (e.g. the relevant part of the ObjectStore) to find transactions or resources that are in-doubt (i.e. are part way through the commitment process). On the second pass, if any of the same items are still in-doubt, it is possible the original application process has crashed and the item is a candidate for recovery. </para>
+		<para>An attempt, by the RecoveryManager, to recover a transaction that is still progressing in the original process(es) is likely to break the consistency. Accordingly, the recovery modules use a mechanism (implemented in the <classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</classname> package) to check to see if the original process is still alive, and if the transaction is still in progress. The RecoveryManager only proceeds with recovery if the original process has gone, or, if still alive, the transaction is completed. (If a server process or machine crashes, but the transaction-initiating process survives, the transaction will complete, usually generating a warning. Recovery of such a transaction is the RecoveryManager’s responsibility).</para>
+		<para>It is clearly important to set the interval periods appropriately. The total iteration time will be the sum of the <literal>periodicRecoveryPeriod</literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it takes to scan the stores and to attempt recovery of any in-doubt transactions found, for all the recovery modules. The recovery attempt time may include connection timeouts while trying to communicate with processes or machines that have crashed or are inaccessible (which is why there are mechanisms in the recovery system to avoid trying to recover the same transaction for ever). The total iteration time will affect how long a resource will remain inaccessible after a failure – <literal>periodicRecoveryPeriod</literal> should be set accordingly (default is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be comparatively short (default is 10 seconds) – its purpose is mainly to reduce the number of transactions that are candidat!
 es for recovery and which thus require a “call to the original process to see if they are still in progress</para>
+		<para><orderedlist>
+			<listitem>
+				<para>In previous versions of JBoss Transactions there was no contact mechanism, and the backoff period had to be long enough to avoid catching transactions in flight at all. From 3.0, there is no such risk.</para>
+			</listitem>
+		</orderedlist></para>
+		<para>Two recovery modules (implementations of the <classname>com.arjuna.ats.arjuna.recovery.RecoveryModule</classname> interface) are supplied with JBoss Transactions, supporting various aspects of transaction recovery including JDBC recovery. It is possible for advanced users to create their own recovery modules and register them with the Recovery Manager. The recovery modules are registered with the RecoveryManager using properties that begin with “<classname>com.arjuna.ats.arjuna.recovery.RecoveryExtension</classname>”. These will be invoked on each pass of the periodic recovery in the sort-order of the property names – it is thus possible to predict the ordering (but note that a failure in an application process might occur while a periodic recovery pass is in progress). The default Recovery Extension settings are:</para>
+		
+		<programlisting>com.arjuna.ats.arjuna.recovery.recoveryExtension1 = 
+  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule
+
+com.arjuna.ats.arjuna.recovery.recoveryExtension2 = 
+  com.arjuna.ats.txoj.recovery.TORecoveryModule</programlisting>
+	</section>
+	
+	<section><title>Expired entry removal</title>
+		<para>The operation of the recovery subsystem will cause some entries to be made in the ObjectStore that will not be removed in normal progress. The RecoveryManager has a facility for scanning for these and removing items that are very old. Scans and removals are performed by implementations of the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> interface. Implementations of this interface are loaded by giving the class name as the value of a property whose name begins with <classname>com.arjuna.ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the <command>scan()</command> method on each loaded Expiry Scanner implementation at an interval determined by the property <classname>com.arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is given in hours – default is 12. An <classname>expiryScanInterval</classname> value of zero will suppress any expiry scanning. If the value as supplied is positive, the first scan!
  is performed when RecoveryManager starts; if the value is negative, the first scan is delayed until after the first interval (using the absolute value)</para>
+		<para>The kinds of item that are scanned for expiry are:</para>
+		<para>TransactionStatusManager items : one of these is created by every application process that uses JBoss Transactions – they contain the information that allows the RecoveryManager to determine if the process that initiated the transaction is still alive, and what the transaction status is. The expiry time for these is set by the property <classname>com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours – default is 12, zero means never expire). The expiry time should be greater than the lifetime of any single JBoss Transactions-using process.</para>
+		<para>The Expiry Scanner properties for these are:</para>
+		
+		<programlisting>com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =
+  com.arjuna.ats.internal.ts.arjuna.recovery.ExpiredTransactionStatusManagerScanner</programlisting></section>
+</section>
+
+<section><title>Errors and Exceptions</title>
+	<para>In this section we shall cover the types of errors and exceptions which may be thrown or reported during a transactional application and give probable indications of their causes.</para>
+	<para><orderedlist>
+		<listitem>
+			<para>NO_MEMORY: the application has run out of memory (thrown an <classname>OutOfMemoryError</classname>) and JBoss Transactions has attempted to do some cleanup (by running the garbage collector) before re-throwing the exception. This is probably a transient problem and retrying the invocation should succeed.</para>
+		</listitem>
+		<listitem>
+			<para>com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which means that the transaction system must shut down. Prior to this error being thrown the transaction service will have ensured that all running transactions have rolled back. If caught, the application should tidy up and exit. If further work is attempted, application consistency may be violated.</para>
+		</listitem>
+		<listitem>
+			<para>com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to use the transaction service in a manner inconsistent with the current licence. The transaction service will not allow further forward progress for existing or new transactions.</para>
+		</listitem>
+		<listitem>
+			<para>com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while the transaction service attempted to use the object store. Further forward progress is not possible.</para>
+		</listitem>
+		<listitem>
+			<para>Object store warnings about access problems on states may occur during the normal execution of crash recovery. This is the result of multiple concurrent attempts to perform recovery on the same transaction. It can be safely ignored. </para>
+		</listitem>
+	</orderedlist></para>
+</section>
+
+<section><title>Selecting the JTA implementation</title>
+	<para>Two variants of the JTA implementation are now provided and accessible through the same interface. These are:</para>
+	<para><orderedlist>
+		<listitem>
+			<para>A purely local JTA, which only allows non-distributed JTA transactions to be executed. This is the only version available with the JBoss Transactions product.</para>
+		</listitem>
+		<listitem>
+			<para>A remote, CORBA-based JTA, which allows distributed JTA transactions to be executed. This version is only available with the ArjunaJTS product and requires a supported CORBA ORB.</para>
+		</listitem>
+	
+		<listitem>
+			<para>both of these implementations are fully compatible with the transactional JDBC driver provided with JBoss Transactions.</para>
+		</listitem>
+	</orderedlist></para>
+	<para>In order to select the local JTA implementation it is necessary to perform the following steps:</para>
+	<para><orderedlist>
+		<listitem>
+			<para>make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</literal> is set to <literal>com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple</literal>.</para>
+		</listitem>
+		<listitem>
+			<para>make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</literal> is set to <literal>com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</literal>.</para>
+		</listitem>
+	
+		<listitem>
+			<para>these settings are the default values for the properties and do not need to be specified if the local implementation is required.</para>
+		</listitem>
+	</orderedlist>
+</para>
+</section>
+</chapter>
+
+	
+	
+
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Feedback.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Feedback.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Feedback.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+
+<section id="Feedback">
+	<title>Feedback</title>
+	<para>
+			If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <ulink url="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</ulink> against the Product: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</emphasis>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</section>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "JBoss_Enterprise_Application_Platform">
+<!ENTITY BOOKID "JBoss_Transactions_Administrators_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Chapter.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Preface.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,48 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="JBoss_Transactions_Administrators_Guide-Preface">
+	<title>Preface</title>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
+		<xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+			<xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+		</xi:fallback>
+	</xi:include>
+		
+	<section><title>What This Guide Contains</title>
+		<para>The Administration Guide contains information on how to administer JBoss Transactions API 4.2.3.</para>
+	</section>
+	<section><title>Audience</title>
+		<para>This guide is most relevant to engineers who are responsible for administration of JBoss Transactions API 4.2.3 installations.</para>
+	</section>
+	
+	<section><title>Prerequisites</title>
+		<para>In order to administer JBoss Transactions it is first necessary to understand that it relies on ArjunaCore for a lot of the transaction functionality. As such, it is important to read the ArjunaCore Administration Guide before attempting to administer JBoss Transactions.</para>
+	</section>
+	
+	<section><title>Organization</title>
+		<para>This guide contains the following chapters:</para>
+		<para><orderedlist>
+			<listitem>
+				<para>Chapter 1, Administration of JBoss Transactions: describes how to administer JBoss Transactions, mainly by selecting the variant of JTA implementation: pure local or remote (allowing distributed transactions).</para>
+			</listitem>
+		</orderedlist></para>
+	</section>
+	
+	<section><title>Additional Documentation</title>
+		<para>In addition to this guide, the following guides are available in the JBoss Transactions API 4.2.3 documentation set:</para>
+		<para><orderedlist>
+			<listitem>
+				<para>JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking information about JBoss Transactions API 4.2.3.</para>
+			</listitem>
+			<listitem>
+				<para>JBoss Transactions API 4.2.3 Installation Guide: This guide provides instructions for installing JBoss Transactions API 4.2.3.</para>
+			</listitem>
+			<listitem>
+				<para>JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for writing applications. </para>
+			</listitem>
+		</orderedlist></para>
+	</section>
+</preface>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/en-US/images/icon.svg	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,29 @@
+# translation of Appendix.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-19 00:13+0000\n"
+"PO-Revision-Date: 2008-06-19 10:16+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr "Historial de revisiones"
+
+#. Tag: para
+#: Appendix.xml:10
+#, no-c-format
+msgid "<para>TBD</para>"
+msgstr "<para>TBD</para>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,35 @@
+# translation of Author_Group.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 13:32+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "FF0000 Headgear Documentation Group"
+msgstr "Grupo de documentación Headgear FF0000 "
+
+#. Tag: author
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+msgstr ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,45 @@
+# translation of Book_Info.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 13:37+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions API 4.2.3 Administration Guide"
+msgstr "Manual de administración de JBoss Transactions API 4.2.3 "
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss Enterprise Application Platform"
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr ""
+"Este libro es la edición de JBoss Enterprise Application Platform del manual de administración de JBoss "
+"Transactions "
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1280 @@
+# translation of Chapter.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-19 00:13+0000\n"
+"PO-Revision-Date: 2008-06-20 11:40+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr ""
+"Aparte de asegurarse de que el sistema en tiempo de ejecución se encuentra "
+"ejecutando normalmente, se necesita muy poca administración continua para el "
+"software de JBoss Transactions. Sin embargo hay unos pocos puntos a notar:"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr ""
+"La implementación presente del sistema de JBoss TA no proporciona seguridad "
+"o protección para datos. Los objetos almacenados en el almacenamiento de "
+"objetos de JBoss Transactions son (usualmente) de propiedad del usuario que "
+"ejecutó la aplicación que los creó. El almacenamiento de objetos y el "
+"administrador de objetos no intentan reforzar ni siquiera la forma limitada "
+"de protección que Unix/Windows proporcionan. No hay verificación de IDs de "
+"usuarios o grupos al acceder los objetos ya esa para leer o escribir."
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr ""
+"Los objetos persistentes creados en el almacenamiento de objetos nunca "
+"desaparecen a menos de que el método StateManager.destroy sea invocado en el "
+"objeto o que alguna aplicación los borre de manera explícita. Esto significa "
+"que el almacenamiento de objetos gradualmente acumula basura (especialmente "
+"durante el desarrollo de la aplicación y las fases de prueba). Hasta el "
+"momento no contamos con una característica de recolección de basura de "
+"manera automatizada. Además no hemos resuelto el problema de referencias "
+"colgantes. Es decir, un objeto persistente, A, puede haber almacenado un Uid "
+"para otro objeto persistente, B, en su representación pasiva en el disco. No "
+"hay nada que evite que una aplicación borre a B aunque A todavía contenga la "
+"referencia a este. Cuando A sea activado e intente acceder a B, tendrá lugar "
+"un error en tiempo de ejecución. "
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr ""
+"Hasta el momento no hay soporte para el control de versión de objetos ni la "
+"reconfiguración de bases de datos en el evento de que la estructura de la "
+"clase cambie. Esta es un área de investigación bastante compleja que aún no "
+"hemos abordado. Actualmente si cambia la definición de una clase de objetos "
+"persistentes, es completamente responsable de asegurarse de que las "
+"instancias existentes del objeto en el almacenamiento de objetos sean "
+"convertidas a la nueva representación. El software de JBoss Transactions no "
+"puede detectar ni corregir referencias en estados de objetos viejos por "
+"medio de nuevas versiones de operaciones o viceversa."
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid "Object store management is critically important to the transaction service."
+msgstr ""
+"La administración de almacenamiento de objetos es críticamente importante "
+"para el servicio de transacciones. "
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr "Administración de ObjectStore"
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+"Dentro de la instalación del servicio de transacciones, el almacenamiento de "
+"objetos se actualiza regularmente cuando las transacciones se crean o cuando "
+"se utilizan objetos transaccionales para Java. En un entorno libre de "
+"fallas, los únicos estados de objetos que deben residir dentro del "
+"almacenamiento de objetos son los que representan los objetos creados con "
+"los objetos transaccionales para Java API. Sin embargo, si tienen lugar "
+"fallas, los registros de las transacciones pueden permanecer en el "
+"almacenamiento de objetos hasta que las utilidades de recuperación de fallos "
+"hayan resuelto las transacciones que estos representan. Por lo tanto es muy "
+"importante que el contenido del almacenamiento de objetos no se borre sin la "
+"debida atención ya que esto hará imposible el resolver transacciones en "
+"duda. Además si múltiples usuarios comparten el mismo almacenamiento de "
+"objetos es importante que esten concientes de esto y que no simplemente "
+"borren el contenido del almacenamiento de objetos asumiendo que es un "
+"recurso exclusivo. "
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr "Información en tiempo de ejecución de JBoss Transactions"
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr ""
+"Cada módulo que comprende JBoss Transactions posee una clase llamada Info. "
+"Todas estas clases proporcionan un sólo método toString que retorna un "
+"documento XML representando la información de la configuración para ese "
+"módulo. Por ejemplo:"
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr "Administración de recuperación de fallas"
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr ""
+"El subsistema de recuperación de fallas de JBoss Transactions se asegurará "
+"de que los resultados de una transacción se apliquen consistentemente a todos "
+"los recursos afectados por la transacción, incluso si cualquiera de los "
+"procesos de la aplicación o la máquina anfitriona se cuelga o si pierde "
+"conectividad con la red. En el caso en que una máquina (sistema) se cuelgue o "
+"que la red falle, la recuperación no tendrá lugar hasta que el sistema o la "
+"red se reestablezcan, pero la aplicación original no necesita ser reiniciada "
+"- la responsabilidad de la recuperación se delega al proceso administrador "
+"de recuperación (vea a continuación). La recuperación después de una falla "
+"requiere que la información sobre la transacción y los recursos involucrados "
+"sobreviva el fallo y sea accesible después: esta información se encuentra en "
+"el ActionStore, el cual es parte del ObjectStore."
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid "If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr ""
+"Si el ObjectStore se destruye o se modifica, es posible que no se pueda "
+"recuperar."
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr ""
+"Hasta que los procedimientos de recuperación esten completos, puede que los "
+"recursos afectados por una transacción que se encontraba en progreso cuando "
+"la falla ocurrió sean inaccesibles. Para los recursos de bases de datos, "
+"esto se puede reportar como tablas o filas que se encuentran en "
+"“transacciones dudosas”. Para TransactionalObjects para recursos Java, el "
+"intentar activar el objeto transaccional (como cuando trata de obtener un "
+"bloqueo) fallará. "
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr "El administrador de recuperación "
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+"El subsistema de recuperación de fallas de JBoss Transactions requiere que "
+"el proceso autónomo del administrador de recuperación esté ejecutando para "
+"cada ObjectStore (usualmente uno para cada nodo en la red en que se "
+"encuentra ejecutando aplicaciones de JBoss Transactions). El archivo del "
+"RecoveryManager se encuentra en el archivo jar arjunacore dentro del paquete "
+"<classname>com.arjuna.ats.arjuna.recovery.RecoveryManager</classname>. Para "
+"iniciar el administrador de recuperación emita el siguiente comando: "
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr ""
+"Si la etiqueta <literal>-test</literal> se utiliza con el administrador de "
+"recuperación entonces aparecerá un mensaje que dice “Ready” por ejemplo "
+"cuando se inicializa."
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr "Configuración del administrador de recuperación"
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+"El RecoveryManager lee las propiedades definidas en el archivo "
+"<filename>arjuna.properties</filename> y luego también lee el archivo de "
+"propiedades <filename>RecoveryManager.properties</filename>, desde el mismo "
+"directorio desde donde encontró el archivo de propiedades arjuna. Una "
+"entrada para una propiedad en el archivo de propiedades RecoveryManager "
+"sobreescribirá una entrada para la misma propiedad en el archivo de "
+"propiedades principal TransactionService. La mayoría de las entradas son "
+"especificas para el administrador de recuperación. "
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr ""
+"Junto con la distribución se proporciona una versión predeterminada de "
+"<filename>RecoveryManager.properties</filename> - esto se puede utilizar sin "
+"modificaciones, a excepción posiblemente de los campos de rastreo de "
+"depuración (vea a continuación, salida). El resto de esta sección discute "
+"los puntos relevantes al configurar las propiedades a otros valores (en "
+"orden de aparición en la versión predeterminada del archivo). "
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr "Salida"
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+"Es posible que las instalaciones querrán tener alguna forma de salida del "
+"RecoveryManager, para proporcionar un registro de la actividad de "
+"recuperación que ha tenido lugar. El RecoveryManager utiliza el mecanismo de "
+"rastreo de registros que el Arjuna Common Logging Framework (CLF) "
+"proporciona, el cual brinda una interfaz de alto nivel que esconde las "
+"diferencias que existen entre las APIs de registro ya presentes tal como "
+"Jakarta log4j o JDK 1.4 logging API. CLF indirecta todos los registros a "
+"través de Apache Commons Logging framework y se asume que la configuración "
+"ocurre por medio de ese marco de trabajo. "
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr ""
+"Con el CLF, las aplicaciones realizan llamadas de registro en objetos de "
+"registro. Los registros pueden utilizar niveles de registro para decidir si "
+"están interesados en un mensaje de registro en particular. Cada mensaje de "
+"registro tiene un nivel de registro asociado, esto proporciona la "
+"importancia y la urgencia de un mensaje de registro. El grupo de niveles de "
+"registro posibles son DEBUG, INFO, WARN, ERROR y FATAL. Los niveles "
+"definidos se ordenan de acuerdo con sus valores enteros así: DEBUG &lt; INFO "
+"&lt; WARN &lt; ERROR &lt; FATAL."
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr ""
+"El CFL proporciona una extensión para filtrar mensajes de registro de "
+"acuerdo con las especificaciones detalladas que una aplicación puede "
+"definir. Es decir, cuando se le pasa un mensaje de registro al registro con "
+"un nivel DEBUG, se pueden establecer condiciones adicionales para determinar "
+"si el mensaje de registro está activado o no. "
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr ""
+"Estas condiciones se aplican sólamente si el nivel DEBUG está activado y la "
+"petición de registro realizada por la aplicación especifica granuralidad de "
+"depuración. "
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr ""
+"Cuando está activado, la depuración se filtra condicionalmente de acuerdo "
+"con tres variables:"
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr ""
+"Nivel de depuración: este es desde donde se genera la petición de registro "
+"del nivel DEBUG, por ejemplo, métodos básicos o constructores. "
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr ""
+"Nivel de visibilidad: la visiblidad del constructor, método, etc que genera "
+"la depuración. "
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr ""
+"Código de utilidad: por ejemplo, el paquete o sub-módulo dentro del cual se "
+"genera la depuración, por ejemplo, el almacenamiento de objetos. "
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr ""
+"De acuerdo con estas variables el CLF define tres interfaces. Un producto en "
+"particular puede implementar sus propias clases de acuerdo con su propio "
+"nivel de detalle. JBoss Transactions utiliza el nivel predeterminado "
+"Debugging y el nivel predeterminado Visibility que CLF proporciona, pero "
+"define su propio Facility Code. JBoss Transactions usa el nivel "
+"predeterminado asignado a sus objetos de registro (DEBUG). Sin embargo, "
+"utiliza las características de depuración más detalladas para desactivar o "
+"activar los mensajes de depuración. Los valores de depuración más detallados "
+"que JBoss Transactions utiliza están definidos a continuación: "
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr ""
+"Nivel de depuración – JBoss Transactions utiliza los valores predeterminados "
+"definidos en la clase <classname>com.arjuna.common.util.logging.DebugLevel</"
+"classname>"
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr ""
+"NO_DEBUGGING:  No hay diagnóstico. Un objeto de registro asignado con este valor "
+"descarta todas las peticiones de depuración. "
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr ""
+"FULL_DEBUGGING: Diagnóstico completo. Un objeto de registro con este valor "
+"permite todas las peticiones de depuración si el facility code y el nivel de "
+"visibilidad coinciden con aquellos permitidos por el registro."
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr "Los valores de depuración adicionales son: "
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr "CONSTRUCTORS: Diagnóstico de los constructores."
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr "DESTRUCTORS:  Diagnóstico de los finalizadores."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr "CONSTRUCT_AND_DESTRUCT: Diagnóstico de los constructores y los finalizadores."
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr "FUNCTIONS:  Diagnóstico desde las funciones."
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr "OPERATORS:  Diagnóstico desde los operadores como por ejemplo iguales."
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr "FUNCS_AND_OPS: Diagnóstico desde las funciones y operaciones."
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr "ALL_NON_TRIVIAL: Diagnóstico desde todas las operaciones no triviales."
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr "TRIVIAL_FUNCS:  Diagnóstico desde las funciones triviales."
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr "TRIVIAL_OPERATORS: Diagnóstico desde operaciones triviales y operadores."
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr "ALL_TRIVIAL:  Diagnóstico desde todas las operaciones triviales."
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+"Nivel de visibilidad – JBoss Transactions utiliza los valores "
+"predeterminados definidos en la clase <classname>com.arjuna.common.util."
+"logging.VisibilityLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr "VIS_NONE:  No hay diagnóstico"
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr "VIS_PRIVATE :  Sólo desde métodos privados."
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr "VIS_PROTECTED  Sólo desde métodos protegidos."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr "VIS_PUBLIC   Sólo desde métodos públicos."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "VIS_PACKAGE   only from package methods."
+msgstr "VIS_PACKAGE   Sólo desde métodos de paquetes"
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr "VIS_ALL:  Diagnóstico completo"
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+"Facility Code – JBoss Transactions utiliza los siguientes valores definidos "
+"en la clase <classname>com.arjuna.common.util.logging.VisibilityLevel</"
+"classname>"
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr "FAC_ATOMIC_ACTION = 0x0000001 (módulo central de acción atómica)."
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr "FAC_BUFFER_MAN = 0x00000004 (clases (buffer) de administración de estado)."
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr "FAC_ABSTRACT_REC = 0x00000008 (registros abstractos)."
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr ""
+"FAC_OBJECT_STORE = 0x00000010 (implementaciones de almacenamiento de "
+"objetos)."
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr "FAC_STATE_MAN = 0x00000020 (administración de estado y StateManager)."
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr "FAC_SHMEM = 0x00000040 (clases de implementación de memoria compartida)."
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr "FAC_GENERAL = 0x00000080 (clases generales)."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr ""
+"FAC_CRASH_RECOVERY = 0x00000800 (rastro detallado del módulo de recuperación "
+"de fallos y clases)."
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr "FAC_THREADING = 0x00002000 (hilos de clases)."
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr "AC_JDBC = 0x00008000 (soporte JDBC 1.0 y 2.0)."
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid "FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr ""
+"FAC_RECOVERY_NORMAL = 0x00040000 (salida normal para el administrador de "
+"recuperación de fallas)."
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr ""
+"Para asegurar una salida apropiada, es necesario establecer algunas de las "
+"propiedades de depuración más detalladas de manera explícita en el archivo "
+"<filename>CommonLogging.xml</filename>, para habilitar los mensajes de "
+"registro que el módulo JBoss Transactions emite."
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr ""
+"Los mensajes que describen el inicio y el comportamiento periódico que el "
+"RecoveryManager realiza son la salida utilizando el nivel INFO. Si quiere "
+"otro rastreo de depuración, el nivel de depuración detallado se debe "
+"configurar apropiadamente. Por ejemplo, la siguiente configuración en el "
+"CommonLogging.xml, activa todos los mensajes de depuración relacionados con "
+"el protocolo Crash Recovery y emitido por el módulo JBoss Transactions. "
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr ""
+"Se proporcionan dos objetos de registro, uno administra los mensajes de I18N "
+"y el otro no. "
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr ""
+"El configurar los mensajes de recuperación normal al nivel INFO le permite "
+"al RecoveryManager producir un nivel moderado de reporte. Si no sucede nada, "
+"simplemente reporta la entrada en cada módulo para cada pase periódico. Para "
+"desactivar los mensajes INFO que el administrador de recuperación produce, "
+"el nivel de registro se puede configurar al nivel más alto: ERROR. El "
+"establecer el nivel a ERROR significa que el RecoveryManager sólo producirá "
+"mensajes de error, de advertencia o de error fatal. "
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr "Recuperación periódica"
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+"El RecoveryManager escanea el ObjectStore y otros lugares de información, "
+"buscando transacciones y recursos que requieren o que pueden llegar a "
+"requerir recuperación. El procesamiento de recuperación y de escaneo es "
+"realizado por los módulos de recuperación (instancias de clases que "
+"implementan la interfaz com.arjuna.ats.arjuna.recovery.RecoveryModule), cada "
+"una con responsabilidad de una categoría en particular de transacción o "
+"recurso. El grupo de módulos de recuperación utilizados se cargan "
+"dinámicamente utilizando las propiedades encontradas en el archivo de "
+"propiedades del RecoveryManager."
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+"La interfaz tiene dos métodos: <literal>periodicWorkFirstPass</literal> y "
+"<literal>periodicWorkSecondPass</literal>. En un intervalo (definido por la "
+"propiedad <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), el RecoveryManager llamará el primer método pass en cada "
+"propiedad y luego espera durante un breve periodo (definido por la propidad "
+"<classname>com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>) "
+"y luego llama al segundo método pass de cada módulo. Usualmente en el primer método pass, "
+"el módulo escanea (por ejemplo, la parte relevante del ObjectStore) para "
+"encontrar transacciones o recursos que son dudosos (por ejemplo, se "
+"encuentran en cierta parte del proceso de guardado). En el segundo método pass, si "
+"cualquiera de los mismos objetos están en duda, es posible que el proceso de "
+"aplicación original se haya caído y que el objeto sea un candidato para "
+"recuperación."
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+"Un intento del RecoveryManager de recuperar una transacción que aún está en curso en el proceso original con mucha probabilidad romperá la "
+"consistencia. Así mismo, los módulos de recuperación utilizan un mecanismo "
+"(implementado en el paquete <classname>com.arjuna.ats.arjuna.recovery."
+"TransactionStatusManager</classname>) para chequear si el proceso original "
+"todavía está vivo y si la transacciín aún se encuentra en progreso. El "
+"RecoveryManager sólo procede con la recuperación si el proceso original se "
+"ha ido o si aún está vivo entonces la transacción se completa, (si el "
+"proceso de un servidor o si una máquina se cuelga, pero el proceso de inicio "
+"de la transacción sobrevive, la transacción se completará, usualmente "
+"generando una advertencia. La recuperación de tal transacción es la "
+"responsabilidad del RecoveryManager)."
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+"Es claramente muy importante el establecer los periodos de los intervalos "
+"apropiadamente. El tiempo de iteración total será la suma del "
+"<literal>periodicRecoveryPeriod</literal>, <literal>recoveryBackoffPeriod</"
+"literal> y la cantidad de tiempo que toma el escanear los almacenamientos y "
+"el tratar de recuperar cualquier transacción dudosa que se encuentre para "
+"todos los módulos de recuperación. El tiempo de intento de recuperación "
+"puede incluir la expiración de la conexión mientras que el tratar de "
+"comunicarse con procesos o máquinas que se han colgado o que son "
+"inaccesibles (razón por la cual hay mecanismos en el sistema de "
+"recuperación para evitar el tratar de recuperar la misma transacción "
+"indefinidamente). El tiempo de iteración total afectará el tiempo que un "
+"recurso permanecerá inaccesible después de una falla – "
+"<literal>periodicRecoveryPeriod</literal> se debe establecer de acuerdo con "
+"esto (por defecto es 120 segundos). El <literal>recoveryBackoffPeriod</"
+"literal> puede ser comparativamente corto (por defecto es 10 segundos) – su "
+"propósito principal es reducir el número de transacciones que son candidatas "
+"para la recuperación y que por lo tanto requieren una “llamada al proceso "
+"original para ver si aún se encuentran en progreso. "
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr ""
+"En versiones anteriores de JBoss Transactions no había un mecanismo de "
+"contacto y el periodo de espera tenía que ser lo suficientemente largo para "
+"evitar las transacciones en vuelo. Desde 3.0 no hay tal riesgo. "
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+"Dos módulos de recuperación (implementaciones de la interfaz <classname>com."
+"arjuna.ats.arjuna.recovery.RecoveryModule</classname>) vienen junto con "
+"JBoss Transactions, soportando varios aspectos de la recuperación de "
+"transacciones incluyendo la recuperación JDBC. Para usuarios avanzados es "
+"posible crear sus propios módulos de recuperación y registralos con el "
+"Recovery Manager. Los módulos de recuperación están registrados con el "
+"RecoveryManager utilizando propiedades que empiezan por “<classname>com."
+"arjuna.ats.arjuna.recovery.RecoveryExtension</classname>”. Estos se "
+"invocarán en cada pase de la recuperación periódica en el orden corto de los "
+"nombres de propiedades – por lo tanto es posible predecir el orden (pero "
+"note que una falla en un proceso de la aplicación puede ocurrir mientras "
+"tiene lugar un pase de recuperación periódica). La configuración "
+"predeterminada de Recovery Extension es:"
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr "Eliminación de entradas vencidas"
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+"La operación del subsistema de recuperación hará que se realicen algunas "
+"entradas en el ObjectStore que no se eliminarán en el progreso normal. El "
+"RecoveryManager tiene una utilidad para escanear estos y para eliminar "
+"objetos que son muy viejos. Los escaneos y las eliminaciones se realizan "
+"por medio de implementaciones de la interfaz <classname>com.arjuna.ats.arjuna."
+"recovery.ExpiryScanner</classname>. Las implementaciones de esta interfaz se "
+"cargan dando el nombre de la clase como el valor de una propiedad cuyo "
+"nombre empieza por <classname>com.arjuna.ats.arjuna.recovery.expiryScanner</"
+"classname>. El RecoveryManager llama al método <command>scan()</command> en "
+"cada implementación Expiry Scanner cargada en un intervalo determinado por "
+"la propiedad <classname>com.arjuna.ats.arjuna.recovery.expiryScanInterval</"
+"classname>. Este valor se da en horas – por defecto es 12. Un valor "
+"<classname>expiryScanInterval</classname> de cero suprime cualquier escaneo "
+"de vencimiento. Si el valor tal como se proporciona es positivo entonces el "
+"primer escaneo se realiza cuando inicia el RecoveryManager, si el valor es "
+"negativo entonces el primer escaneo se retrasa hasta después del primer "
+"intervalo (utilizando el valor absoluto)."
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr "Las clases de objetos que se escanean por vencimiento son:"
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+"TransactionStatusManager items :se crea uno de estos por cada proceso de "
+"aplicación que utilice JBoss Transactions – estos contienen la información "
+"que le permite al RecoveryManager determinar si el proceso que inició la "
+"transacción todavía esta vivo y también determina el estatus de la "
+"transacción. El tiempo de vencimiento para estos está establecido por la "
+"propiedad <classname>com.arjuna.ats.arjuna.recovery."
+"transactionStatusManagerExpiryTime</classname> (en horas – por defecto es "
+"12, cero significa que nunca expira). El tiempo de vencimiento debe ser "
+"mayor que el tiempo de vida de cualquier proceso que esté utilizando JBoss "
+"Transactions."
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr "Las propiedades del Expiry Scanner para estos son: "
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr "Errores y excepciones"
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr ""
+"En esta sección vamos a cubrir los tipos de errores y excepciones que se "
+"pueden presentar o reportar durante una aplicación transaccional y daremos "
+"indicaciones probables de sus causas."
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr ""
+"NO_MEMORY: la aplication no tiene más memoria (presenta un "
+"<classname>OutOfMemoryError</classname>) y JBoss Transactions ha intentado "
+"realizar alguna limpieza (ejecutando el colector de basura) antes de volver "
+"a presentar la excepción. Probablemente este es un problema transitorio y "
+"con volver a intentar la invocación debe ser suficiente."
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: ha occurrido un error lo cual "
+"significa que el sistema de transacciones se debe apagar. Antes de que este "
+"error se presente el servicio de transacciones se asegurará de que todas las "
+"transacciones ejecutándose se hayan deshecho. Si lo alcanza, la aplicación "
+"debe poner todo en orden y termina. Si se intenta hacer más cosas entonces "
+"la consistencia de la aplicación se puede llegar a violar."
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: se ha intentado utilizar el "
+"servicio de transacciones de una manera inconsistente con la licencia "
+"actual. El servicio de transacciones no permitirá progresar más alla para "
+"transacciones existentes o nuevas. "
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: un error ocurrió mientras "
+"el servicio de transacciones intentaba utilizar el almacenamiento de "
+"objectos. No es posible avanzar más allá."
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr ""
+"Las advertencias del almacenamiento de objetos sobre problemas de acceso en "
+"estados pueden ocurrir durante la ejecución normal de recuperación de un "
+"sistema que se ha colgado. Este es el resultado de múltiples intentos "
+"simultáneos para realizar la recuperación en la misma transacción. Se puede "
+"ignorar de manera segura."
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr "Selección de la implementación JTA"
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr ""
+"Ahora se proporcionan dos variantes de la implementación JTA y son "
+"accesibles a través de la misma interfaz. Estas son:"
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr ""
+"Una JTA meramente local, la cual sólo permite que se ejecuten transacciones "
+"JTA no distribuidas. Esta es la única versión disponible con el producto "
+"JBoss Transactions. "
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr ""
+"Una JTA remota basada en CORBA, la cual permite la ejecución de "
+"transacciones JTA distribuidas. Esta versión sólo está disponible con el "
+"producto ArjunaJTS y requiere un CORBA ORB soportado."
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr ""
+"Ambas implementaciones son completamente compatibles con el controlador JDBC "
+"transaccional que JBoss Transactions proporciona."
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr ""
+"Con el fin de seleccionar la implementación JTA local es necesario realizar "
+"los siguientes pasos: "
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+"Asegúrese de que la propiedad <literal>com.arjuna.ats.jta."
+"jtaTMImplementation</literal> se configura como <literal>com.arjuna.ats."
+"internal.jta.transaction.arjunacore.TransactionManagerImple</literal>."
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+"Asegúrese de que la propiedad <literal>com.arjuna.ats.jta."
+"jtaUTImplementation</literal> se configura como <literal>com.arjuna.ats."
+"internal.jta.transaction.arjunacore.UserTransactionImple</literal>."
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr ""
+"Esta configuración son los valores predeterminados para las propiedades y no "
+"es necesario especificarlos si se requiere la implementación local. "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Feedback.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Feedback.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,40 @@
+# translation of Feedback.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 13:42+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "Comentarios"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""
+"Si encuentra algún error de ortografía en este manual o si se le ocurre una manera de mejorar este manual ¡nos encantaría escuchar sus ideas! Llene un reporte en <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> con referencia al Producto: JBoss Enterprise Application Platform, Versión: "
+"<replaceable>&lt;version&gt;</replaceable>, Componente: <emphasis>Doc</"
+"emphasis>. Si tiene alguna sugerencia para mejorar la documentación trate de ser lo más especifico posible. Si encuentra un error, incluya el número de la sección y algo del contexto para que lo podamos identificar fácilmente. "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/JBoss_Transactions_Administrators_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,133 @@
+# translation of Preface.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-20 11:30+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr "Prefacio"
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr "Contenido de este manual "
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr ""
+"El manual de administración contiene información sobre cómo administrar JBoss "
+"Transactions API 4.2.3."
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr "Audiencia"
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr "Este manual es relevante para aquellos ingenieros responsables de la administración de la instalación de JBoss Transactions API 4.2.3. "
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr "Prerequisitos"
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr "Con el fin de administrar JBoss Transactions primero es necesario comprender que este depende de ArjunaCore para muchas de las funcionalidades relacionadas con las transacciones. Por lo tanto es importante leer el manual de administración de ArjunaCore antes de intentar el administrar JBoss Transactions."
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr "Organización"
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr "Este manual contiene los siguientes capítulos: "
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr ""
+"Capítulo 1, Administración de JBoss Transactions: describe cómo administrar "
+"JBoss Transactions, principalmente seleccionando la variante de la implementación JTA: "
+"puramente local o remota (permitiendo transacciones distribuidas)."
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr "Documentación adicional"
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr ""
+"Además de este manual, los siguientes manuales se encuentran disponibles en el grupo de documentación de JBoss "
+"Transactions API 4.2.3: "
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr "Notas de lanzamiento de JBoss Transactions API 4.2.3: Proporciona información de última hora con relación a JBoss Transactions API 4.2.3."
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr "Manual de instalación de JBoss Transactions API 4.2.3: Este manual proporciona instrucciones para instalar JBoss Transactions API 4.2.3."
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr "Manual del programador de JBoss Transactions API 4.2.3: Proporciona información para escribir aplicaciones."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/es-ES/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,23 @@
+# translation of Revision_History.po to
+# Language es-ES translations for JBoss_Transactions_Administrators_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Revision_History\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 13:43+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr "<firstname></firstname> <surname></surname> <email></email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Appendix.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-30 12:45+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr "Historique de révision"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,36 @@
+# translation of Author_Group.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-30 12:47+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "FF0000 Headgear Documentation Group"
+msgstr "Groupe de documentation FF0000 Headgear"
+
+#. Tag: author
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+msgstr ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,44 @@
+# translation of Book_Info.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-30 12:53+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions API 4.2.3 Administration Guide"
+msgstr "Guide d'administration de transactions JBoss API 4.2.3"
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss Enterprise Application Platform"
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr "Cet ouvrage est l'édition de JBoss Enterprise Application Platform du Guide des administrateurs de transactions JBoss"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,994 @@
+# translation of Chapter.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-07-08 09:38+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr ""
+"A part veiller à ce que le système soit exécuté normalement, on n'a pas besoin d'une administration continue pour le logiciel JBoss Transactions. "
+"On doit, cependant, noter les points suivants:"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr "L'implémentation actuelle du système JBoss TA n'offre aucune protection des données et pas de sécurité. Les objets stockées dans la base de données d'objets JBoss Transactions, sont (typiquement) la propriété de l'utilisateur qui a exécuté l'application qui les a créés. Les installations Object Manager et Object Store ne tentent pas d'appliquer la protection, même si limitée, offerte par Unix/Windows. Il n'y a pas de vérification des ID du groupe ou des utilisateurs au sujet de l'accès aux objets, que ce soit pour lecture ou pour écriture."
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr "Les objets persistants créés dans la base de données Objet Store demeurent à cet endroit à moins que la méthode de destruction du StateManager soit invoquée sur l'objet ou bien que quelque programme d'application ne les efface explicitement. Cela signifie que l'Object Store accumule des informations superflues (issues principalement des phases de test ou de développement d'applications). A présent, nous ne possédons pas d'installation pour la récupération de ces informations superflues. De plus, nous n'avons pas résolu le problème des références ambigues. C'est à dire qu'un objet persistant, A, pourrait avoir hébergé un Uid pour un autre objet persistant, B, sous une forme de représentation passive sur un disque. Rien ne peut empêcher une application d'effacer B, même si A contient toujours une référence qui s'y rapporte. Quand A est activé par la suite, et tente d'accéder à B, une erreur d'exécution surgit."
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr "Il n'existe actuellement pas de prise en charge pour le contrôle de version d'objets ou de la reconfiguration des bases de données dans le cas de changements de structure de classe. Il s'agit d'un domaine de recherche complexe que nous n'avons pas encore traité. A présent, si vous changez la définition d'une classe d'objets persistants, vous serez complètement responsable de veiller à ce que les instances existantes des objets de l'Object Store soient convertis à la nouvelle représentation. Le logiciel des transactions JBoss ne peut ni détecter, ni corriger les références vers des anciens états d'objet par des nouvelles versions d'opérations et vice versa."
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid "Object store management is critically important to the transaction service."
+msgstr "La gestion des bases de données Object Store est d'une importance critique pour le service de transaction."
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr "Gestion d'ObjectStore"
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr "Dans l'installation du service de transactions, la base de données objet est mise à jour régulièrement au fur et à mesure des transactions, ou quand des objets transactionnels pour Java sont utilisés. Dans un environnement qui ne connaît pas de mises en échec, les seuls états d'objet qui doivent résider dans la base de donnée-objets, sont ceux qui représentent des objets créés dans Objets Transactionnels pour Java API. Cependant, en cas d'échecs, les journaux des transactions doivent demeurer dans la mémoire objet jusqu'à ce que les moyens de recouvrement en cas de crash résolvent les transactions qu'ils représentent. Ainsi, il est très important que les contenus des bases de données-objet ne soient pas supprimées facilement, car il serait impossible de résoudre les opérations précaires. De plus, si plusieurs utilisateurs partagent la même base de donnée-objet, il faut qu'ils le réalisent et qu'ils n'effacent pas les contenus Objet Store,!
  assumant qu'il s'agisse d'une ressource exclusive."
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr "Information sur le temps d'exécution JBoss Transactions"
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr "Chaque module compris dans JBoss Transactions comporte une classe intitulée Info. Ces classes procurent toutes une méthode simple toString qui retourne un document XML, représentant les informations de configuration pour ce module. Donc, par exemple:"
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr "Administration du recouvrement en cas d'échec"
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr "Le sous-système de recouvrement des transactions JBoss assurera que les résultats d'une transaction soient appliqués uniformément à toutes les ressources affectées par cette transaction, même si aucun des processus d'application ou la machine hôte ne se plantent ou perdent la connexion réseau. Dans un cas de plantage de machine (système) ou d'échec de réseau, le recouvrement n'aura pas lieu si le système ou le réseau ne sont pas restaurés, mais l'application d'origine n'a pas besoin d'être relancée - la responsabilité du recouvrement est déléguée au Gestionnaire de recouvrement (voir ci-dessous). Le recouvrement suite à un échec, repose sur le fait que l'information, à propos de la transaction et les ressources qui y sont attachées, survive l'échec et soit accessible par la suite: cette information est contenue dans ActionStore, qui fait partie d'ObjectStore."
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid "If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr "Si l'ObjectStore est détruit ou modifié, les chances de recouvrement sont compromises."
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr "Jusqu'à ce que les procédures de recouvrement soient terminées, les ressources affectées par la transaction en progrès au moment de la mise en échec, peuvent être inaccessibles. Pour les ressources de banques de données, cela peut être rapporté sous forme de tables ou de rangées contenues par \"in-doubt transactions\" (transactions précaires). Pour les TransactionalObjects des ressources Java, toute tentative d'activer l'Objet Transactionnel (tout comme toute tentative d'obtenir un verrou) échouera."
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr "Le gestionnaire de recouvrement"
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+"Le sous-système de recouvrement, en cas d'échec des transactions JBoss, repose sur le fait que le processus du gestionnaire de recouvrement autonome doit être en cours d'exécution pour chaque ObjectStore (normalement un processus par noeud de réseau exécutant des applications JBoss Transactions). Le fichier du gestionnaire de recouvrement (RecoveryManager) est localisé dans le fichier jar arjunacore situé dans le paquetage <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. Pour démarrer le gestionnaire de recouvrement, actionner la commande suivante:"
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr "Si la balise <literal>-test</literal> est utilisée en même temps que le gestionnaire de recouvrement, on verra apparaître un message \"Ready\" (prêt) au moment du démarrage, par ex., "
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr "Configurer le gestionnaire de recouvrement"
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+"Le gestionnaire de recouvrement lit les propriétés définies dans le fichier <filename>arjuna."
+"properties</filename> et lit également le fichier de propriété <filename>RecoveryManager.properties</filename>, à partir du même répertoire que celui où il a trouvé dans le fichier des propriétés arjuna. Une saisie de propriété dans le fichier de propriétés du gestionnaire de recouvrement remplacera toute saisie pour cette même propriété dans le fichier de base de propriétés de TransactionService. La plupart des saisies sont spécifiques au gestionnaire de recouvrement."
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr "Une version par défaut de <filename>RecoveryManager.properties</filename> est disponible dans la distribution - qui peut être utilisée sans modifications, excepté peut-être les champs de suivi de débogage (voir ci-dessous, Sortie). Le reste de cette section traite des problèmes de configuration des propriétés à des valeurs différentes (en ordre d'apparence dans la version par défaut du fichier)."
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr "Sortie"
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr "Il est possible que les installations s'attendent à obtenir une certaine forme de sortie du gestionnaire de gestion, en vue de proposer une trace d'enregistrement du genre d'activité de recouvrement qui a eu lieu. Le gestionnaire de recouvrement utilise le mécanisme de traçage de journalisation CLF (Arjuna Common Logging Framework) qui procure un haut niveau d'interface cachant les différences qui existent entre les systèmes de journalisation API comme Jakarta log4j ou JDK 1.4. CLF dirige tout enregistrement par l'infrastructure Apache Commons Logging et la configuration est sensée avoir lieu à travers cette infrastructure."
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr "Pour les applications CLF, effectuez les appels de journalisation sur les objets d'enregistrement chronologique. Les objets d'enregistrement peuvent opérer à différents niveaux et décider s'ils sont intéressés par tel ou tel message. Chaque message de journalisation est associé à un certain niveau de journalisation, qui exprime l'importance et l'urgence d'un message de journalisation. Les configurations possibles sont DEBUG, INFO, WARN, ERROR et FATAL. Des niveaux bien définis sont ordonnés en fonction de leurs valeurs entières relatives comme suit: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL."
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr "Le CLF offre une extension pour filtrer les messages de journalisation suivant une granularité plus fine que celle qu'une application puisse définir. Ainsi, lorsqu'un message log est présenté par l'enregistreur chronologique au niveau DEBUG, on peut ajouter des conditions supplémentaires pour déterminer si le message de journalisation est activé ou non."
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr "Ces conditions s'appliquent si et seulement si le niveau DEBUG est activé et si la demande de journalisation de l'application précise la granularité de débogage."
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr "Une fois activée, la fonction de débogage est filtrée conditionnellement sur trois variables:"
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr "Niveau de débogage: c'est quand la demande de journalisation associée à un niveau de débogage est générée par ex. de méthodes de base ou constructeurs."
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr "Niveau de visibilité: la visibilité du constructeur, de la méthode, etc. qui génèrent le débogage."
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr "Facility code: par exemple, le paquetage ou le sous-module dans lequel le débogage est généré, par ex., la base de donnée objet."
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr "D'après toutes ces variables, le CLF définit trois interfaces. Un produit particulier peut implémenter ses propres classes suivant sa granularité plus fine. JBoss Transactions utilise le niveau de débogage par défaut et le niveau de visibilité par défaut offert par CLF, mais détermine son propre code de fonction. JBoss Transactions utilise le niveau par défaut assigné à ses objets d'enregistreurs chronologiques (DEBUG). Cependant, il utilise des fonctionalités de débogage plus raffinées pour activer ou désactiver les messages de débogage. Des valeurs de débogage plus raffinées, utilisées par les transactions JBoss, sont définies ci-dessous:"
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr "Niveau de débogage - JBoss Transactions utilise les valeurs par défaut déterminées dans la classe <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr "NO_DEBUGGING:  No diagnostics. Un objet de journalisation assigné à cette valeur, ignore toutes les demandes de débogage."
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr "FULL_DEBUGGING: Full diagnostics. Un objet de journalisation assigné à cette valeur autorise toutes les demandes de débogage si le 'facility code' et le niveau de visibilité correspondent à ceux qui sont autorisés par l'enregistreur chronologique."
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr "Les valeurs de débogage supplémentaires sont:"
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr "CONSTRUCTORS: Diagnostiques de la part des constructeurs."
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr "DESTRUCTORS:  Diagnostiques au niveau des finalizers."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr "CONSTRUCT_AND_DESTRUCT: Diagnostiques de la part des constructeurs et des finalizers."
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr "FUNCTIONS: Diagnostiques par les fonctions."
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr "OPERATORS:  Diagnostiques par les opérateurs, comme les equals."
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr "FUNCS_AND_OPS: Diagnostiques par les fonctions et les opérations."
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr "ALL_NON_TRIVIAL: Diagnostiques par les opérations non-triviales."
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr "TRIVIAL_FUNCS:  Diagnostiques par les fonctions triviales."
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr "TRIVIAL_OPERATORS: Diagnostiques par les opérations triviales, et les opérateurs."
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr "ALL_TRIVIAL:  Diagnostiques par les opérations triviales."
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr "Niveau de visibilité– JBoss Transactions utilise les valeurs par défaut définies dans la classe <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr "VIS_NONE:  Pas de diagnostique"
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr "VIS_PRIVATE :  seulement par méthodes privées."
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr "VIS_PROTECTED  seulement par méthodes protégées."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr "VIS_PUBLIC   seulement par méthodes publiques."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "VIS_JBoss_Transactions_Administrators_Guide   only from package methods."
+msgstr "VIS_JBoss_Transactions_Administrators_Guide   seulement par méthodes de paquetage."
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr "VIS_ALL:  Diagnostique complet"
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr "Facility Code – JBoss Transactions utilise les valeurs suivantes définies dans la classe <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr "FAC_ATOMIC_ACTION = 0x0000001 (module de base d'action atomique)."
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr "FAC_BUFFER_MAN = 0x00000004 (classes de gestion des états (tampons))."
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr "FAC_ABSTRACT_REC = 0x00000008 (enregistrements des abstracts)."
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr "FAC_OBJECT_STORE = 0x00000010 (implementations de bases de données-objet)."
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr "FAC_STATE_MAN = 0x00000020 (gestion des états et StateManager)."
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr "FAC_SHMEM = 0x00000040 (classes d'implémentation de la mémoire partagée)."
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr "FAC_GENERAL = 0x00000080 (classes générales)."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr "FAC_CRASH_RECOVERY = 0x00000800 (trace détaillée du module de recouvrement en cas de plantage et des classes)."
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr "FAC_THREADING = 0x00002000 (classes de threading)."
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr "AC_JDBC = 0x00008000 (prise en charge JDBC 1.0 et 2.0)."
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid "FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr "FAC_RECOVERY_NORMAL = 0x00040000 (sortie normale pour gestionnaire de recouvrement en cas de plantage)."
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr "Pour garantir les sorties qui conviennent, il faut configurer certaines propriétés de débogage plus raffinées, particulièrement dans le fichier <filename>CommonLogging.xml</filename>, pour activer les messages de journalisation émis par le module de JBoss Transactions."
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr "Les messages qui décrivent le démarrage et le comportement périodique du RecoveryManager (gestionnaire de recouvrement) sont des sorties au niveau INFO. Si on souhaite d'autre traçage de débogage, le niveau de débogage le plus raffiné devra être déterminé en fonction. Par exemple, la configuration suivante,dans CommonLogging.xml, active tous les messages de débogage liés au protocole de recouvrement en cas de plantage et issus par le module JBoss Transactions."
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr "Deux objets de journalisation sont fournis, un objet gère les messages l18N et le second ne les gère pas."
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr "Configurer les messages de recouvrement normaux au niveau INFO permet au RecoveryManager de produire un niveau modéré de rapport de journalisation. Si il ne se passe rien, il devra rapporter chaque saisie dans chaque module pour chaque tentative périodique. Pour désactiver les messages INFO produits par le Gestionnaire de recouvrement, le niveau de journalisation pourrait être configuré au plus haut niveau: ERREUR. Configurer le niveau à ERREUR implique que le RecoveryManager ne produira que des messages d'erreur, des messages d'avertissement ou d'erreurs fatales."
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr "Recouvrement périodique"
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+"Le gestionnaire de recouvrement balaye les ObjectStores et autres locations d'information, dans la recherche de ressources et de transactions qui requièrent ou pourraient requérir un recouvrement. Le processus de balayage et de recouvrement sont opérés par les modules de recouvrement, (instances de classes qui implémentent l'interface com.arjuna.ats."
+"arjuna.recovery.RecoveryModule), comportant chacun une responsabilité pour une catégorie particulière de transaction ou de ressource. L'ensemble des modules de recouvrement est chargé dynamiquement, en utilisant des propriétés que l'on peut trouver dans le fichier de propriétés du RecoveryManager."
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+"L'interface a deux méthodes: <literal>periodicWorkFirstPass</literal> et "
+"<literal>periodicWorkSecondPass</literal>. A un certain interval (défini par la propriété <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), le RecoveryManager fera appel à la première méthode FirstPass sur chaque propriété, attendra un petit moment (défini par la propriété <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), puis fera appel la seconde méthode SecondPass pour chaque module. Normalement, avec la première méthode, FirstPass, le module balaye ( par ex. une partie pertinente de l'ObjectStore) pour trouver des transactions ou des ressources douteuses (par ex. à mi-chemin vers le processus de validation). Avec la seconde, SecondPass, si les doutes subsistent, il est possible que le processus d'application de départ soit planté et que cet élément soit candidat au recouvrement."
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+"Une tentative du RecoveryManager de recouvrement de transaction en cours de dans le(s) processus d'origine, est susceptible d'endommager la cohérence. Par conséquent, les modules de recouvrement utilisent un mécanisme (implémenté dans le paquetage <classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname>) pour vérifier sur le processus d'origine est toujours actif, et si la transaction progresse toujours. Le RecoveryManager ne continue le processus de recouvrement que si le processus d'origine est terminé, ou, s'il est toujours actif, il patientera que la transaction soit terminée. (Si une processus de serveur ou une machine échouent, mais que le processus d'initiation de la transaction subsiste, la transaction s'achèvera, en générant normalement un avertissement. Le recouvrement d'un telle transaction est du ressort du RecoveryManager)."
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+"Il est très important de configurer les intervals périodiques correctement. Le temps d'itération total correspondra à la somme des <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> et à la durée qu'il faut pour balayer les zônes de stockage et tenter le recouvrement de toutes transactions précaires, pour tous les modules de recouvrement. Le temps de tentative de recouvrement peut inclure les délais de connexion au moment des tentatives de communication avec les processus ou des machines qui sont plantées ou qui sont inaccessibles (ce qui explique pourquoi il existe des mécanismes dans le système de recouvrement pour éviter d'essayer de recouvrir la même transaction indéfiniement). Le temps d'itération total va affecter la durée pendant laquelle une ressource pourra demeurer accessible suite à un échec - <literal>periodicRecoveryPeriod</literal> devra être configuré en fonction ( la valeur par défaut est de 120 secondes). Le <literal>recoveryBackoffPeriod</literal> peut, comparativement, être court ( la valeur par défaut est de 10 secondes) - son but est surtout de réduire le nomb!
 re de transactions candidates au recouvrement et qui donc requièrent un appel au processus d'origine pour vérifier si elles sont toujours en cours."
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr "Dans les versions précédentes de JBoss Transactions, il n'y avait pas de mécanisme de contact, et la période de backoff devait être assez longue pour éviter d'intercepter des transactions en cours. A partir de la version 3.0, ce risque a disparu."
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+"On fournit deux modules de recouvrement ( les implémentations d'interfaces <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname>) avec JBoss Transactions, prenant en charge plusieurs aspects de recouvrement de transactions, y compris le recouvrement JDBC. Il est possible pour les utilisateurs avancés de créer leurs propres modules de recouvrement et de les enregistrer dans le RecoveryManager. Les modules de recouvrement sont enregistrés dans le RecoveryManager en utilisant les propriétés qui commencent par “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. Elles seront invoquées à chaque "
+"Pass du recouvrement périodique en suivant l'ordre des noms de propriété - il sera donc possible de prédire l'ordonnancement ( mais noter que l'échec d'un processus d'application peut avoir lieu pendant qu'une Pass de recouvrement périodique est en cours). Les paramètres d'extension de recouvrement par défaut sont les suivants:"
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr "Suppression des saisies obsolètes"
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+"L'opération de recouvrement du sous-système entraînera la saisie de certaines informations dans l'ObjectStore qui ne seront pas normalement supprimées. Le RecoveryManager contient une fonction de balayage de ces informations et pour supprimer celles qui sont trop anciennes. Les opérations de balayage et de suppression sont conduites par les implémentations de l'interface <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname>. Les implémentations de cette interface sont chargées en donnant un nom de classe à la valeur de la propriété dont le nom commence par <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. Le RecoveryManager appelle la méthode <command>scan()</command> pour chaque implémentation Expiry Scanner (balayage expiré) chargée, dans un intervalle déterminé par la propriété <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. Cette valeur est donnée en heures - la valeur par défaut est 12. Une valeur de zéro pour <classname>expiryScanInterval</classname> supprimera tout Expiry Scanning (balayage expiré). Si la valeur fournie est positive, le premier balayage aura lieu au démarrage du RecoveryManager, si la valeur est négative, le premier balayage sera retardé jusqu'à l'apparition du premier intervalle (en utilisant la valeur absolue)."
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr "Sortes d'éléments balayés pour expiration:"
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+"TransactionStatusManager items : l'un d'entre eux est créée par le processus d'application qui utilise JBoss Transactions - ils contiennent l'information qui autorise le RecoveryManager de déterminer si le processus qui initie la transaction est toujours actif, et quel est le statut de transaction. Leur temps d'expiration est déterminé par la propriété <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (en heures - la valeur par défaut est 12, zéro signifiant n\"expire jamais). Le temps d'expiration ne devrait jamais être plus élevé que la durée de vie d'un seul processus utilisant-JBoss Transactions."
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr "Leurs propriétés Expiry Scanner sont:"
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr "Erreurs et exceptions"
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr "Dans cette section, nous devrons couvrir les types d'erreur et les exceptions qui pourraient être envoyées ou reportées pendant une application transactionelle ou bien tenter de donner des indications sur leurs causes."
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr "NO_MEMORY: l'application est à cours de mémoire (<classname>OutOfMemoryError</classname>) et JBoss Transactions a tenté de faire le nettoyage (en exécutant le nettoyeur) avant de renvoyer l'exception. C'est probablement un problème transitoire et retenter l'invocation devrait fonctionner."
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr "com.arjuna.ats.arjuna.exceptions.FatalError: apparition d'une erreur qui entraîne la fermeture du système de transactions. Avant l'apparition de cette erreur, le service de transaction devra s'assurer que toutes les transactions en cours sont redressées. Si l'application est coincée, elle doit mettre de l'ordre et sortir. Si on tente de continuer les opérations, on peut endommager la cohérence de l'application."
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr "com.arjuna.ats.arjuna.exceptions.LicenceError: tentative d'utiliser le service de transaction d'une manière non cohérente par rapport à la licence en cours. Le service de transaction ne permettra pas davantage de progrès pour les nouvelles ou pour les transactions existantes."
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr "com.arjuna.ats.arjuna.exceptions.ObjectStoreError: erreur au moment où le service transaction a tenté d'utiliser la base de données objet. Impossible de progresser davantage."
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr "Des avertissements de bases de données objet à propos de problèmes d'accès aux états, peuvent survenir au cours d'une exécution normale de recouvrement de plantage. Ceci est le résultat de multiples tentatives concurrentes de tenter un recouvrement sur la même transaction. On peut ignorer ces avertissements."
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr "Sélectionner l'implémentation JTA"
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr "Deux variantes de l'implémentation JTA sont maintenant proposées et accessibles à travers la même interface. Elles sont les suivantes:"
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr "Un JTA purement local, qui permet aux transactions JTA non distribuées d'être exécutées. C'est la seule version disponible avec le produit JBoss Transactions."
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr "Un JTA distant basé-CORBA, qui permet d'exécuter les transactions JTA distribuées. Cette version est seulement disponible avec le produit ArjunaJTS et requiert un CORBA ORB supporté."
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr "ces deux implémentations sont totalement compatibles avec le pilote transactionnel JDBC qui est fourni avec JBoss Transactions."
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr "En vue de sélectionner une implémentation JTA locale, il est nécessaire de procéder aux étapes suivantes:"
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+"veillez à ce que la propriété <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> soit configurée ainsi <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+"Veillez à ce que la propriété <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> soit configurée ainsi <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr "ces paramètres sont les valeurs par défaut des propriétés et ne pourront pas être spécifiées si l'implémentation locale est requise."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Feedback.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Feedback.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,38 @@
+# translation of Feedback.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-30 12:58+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "Commentaires"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr "Si vous décelez une erreur dans ce guide, ou si vous avez des suggestions pour améliorer ce manuel, faites-nous en part! Vous pouvez soumettre un rapport dans <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> dans la section Produit: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Composant: <emphasis>Doc</emphasis>. Si vous avez une suggestion pour améliorer la documentation, essayez d'être aussi précis que possible. Si vous avez décelé une erreur, n'oubliez pas de préciser le numéro de la section et de transcrire un extrait de texte avoisinant, de façon à ce que nous puissions la retrouver facilement."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/JBoss_Transactions_Administrators_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,127 @@
+# translation of Preface.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-07-07 10:52+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr "Préface"
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr "Contenu de ce guide"
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr "Le guide d'administration contient des informations sur la façon d'administrer les transactions JBoss API 4.2.3."
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr "Audience"
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr "Ce guide est surtout utile aux ingénieurs responsables de l'administration des installations JBoss Transactions API 4.2.3."
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr "Prérequis"
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr "Pour pouvoir administrer les transactions JBoss, il faut tout d'abord comprendre qu'il dépend de ArjunaCore pour de nombreuses fonctionnalités de transactions. Il est donc important de lire le guide d'administration ArjunaCore avant de tenter d'administrer les transactions JBoss."
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr "Organisation"
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr "Ce guide comprend les chapitres suivants:"
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr "Chapter 1, Administration des transactions JBoss: décrit comment administrer les transactions JBoss, principalement en sélectionnant une variante de l'implémentation JTA purement locale ou distante (permettant les transactions distribuées)."
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr "Documentation supplémentaire"
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr "En plus de ce guide, les guides suivants sont disponibles dans la gamme de documentation sur les transactions JBoss API 4.2.3:"
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr "Les notes de mise à jour des transactions JBoss API 4.2.3: offrent les dernières informations à propos des transactions JBoss API 4.2.3."
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr "Guide d'installation des transactions JBoss API 4.2.3: Ce guide procure des instuctions pour installer JBoss Transactions API 4.2.3."
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr "Guide du programmeur des transactions JBoss API 4.2.3: procure des informations sur les applications écriture."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/fr-FR/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Revision_History.po to French
+# Language fr-FR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Revision_History\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-30 12:59+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr "<firstname></firstname> <surname></surname> <email></email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Appendix.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 00:15+0000\n"
+"PO-Revision-Date: 2008-05-15 11:16+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr "リビジョン履歴"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,36 @@
+# translation of Author_Group.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 00:15+0000\n"
+"PO-Revision-Date: 2008-05-15 11:17+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "FF0000 Headgear Documentation Group"
+msgstr "FF0000 Headgear Documentation Group"
+
+#. Tag: author
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+msgstr ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# translation of Book_Info.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 00:15+0000\n"
+"PO-Revision-Date: 2008-05-15 11:17+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions API 4.2.3 Administration Guide"
+msgstr "JBoss Transactions API 4.2.3 管理ガイド"
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss Enterprise Application Platform"
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr ""
+"本ガイドは JBoss Enterprise Application Platform 版の JBoss "
+"Transactions 管理ガイドになります。"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1195 @@
+# translation of Chapter.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-05-19 13:04+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr "はじめに"
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr ""
+"ランタイムシステムが正常に実行していることを確認する他、 JBoss Transactions "
+"ソフトウェアには継続的に行う必要のある管理が若干あります。 以下にいくつか注意"
+"事項を記します。"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr ""
+"JBoss TA の現在の実装はデータの保護やセキュリティは提供しません。 JBoss "
+"Transactions オブジェクトストアに格納されるオブジェクトは (一般的に) それを作"
+"成したアプリケーションの実行を行ったユーザーに所有されます。 Object Store お"
+"よび Object Manager の機能は、 Unix/Windows が提供する限定形式の保護であって"
+"もまったく実施しません。 読み取りまたは書き込みいずれかのためオブジェクトに行"
+"われるアクセスに関してユーザーまたはグループの ID によるチェックはありませ"
+"ん。"
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr ""
+"クラスの構成が変更になった場合、 データベースの再構成やオブジェクトのバージョ"
+"ン管理に関するサポートは現在ありません。 これは対処していない複雑な研究分野に"
+"なります。 現時点では、 永続オブジェクトのクラスの定義を変更する場合は、 "
+"Object Store 内のオブジェクトの既存インスタンスが新しい表現に変換されるかは確"
+"約できませんので必ず確認を行ってください。 JBoss Transactions ソフトウェアは"
+"新しいオペレーションバージョンで旧オブジェクトの状態への参照を検出することも"
+"修正することもできません、 またこの逆もできません。"
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid ""
+"Object store management is critically important to the transaction service."
+msgstr ""
+"オブジェクトストア管理はトランザクションサービスにとって非常に重要となりま"
+"す。"
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr "ObjectStore 管理"
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+"トランザクションサービスのインストール内で、 オブジェクトストアはトランザク"
+"ションが作成されるとき、 または Java 用の Transactional Objects が使用される"
+"場合必ず更新されます。 障害なしの環境では、 オブジェクトストア内に常駐すべき"
+"オブジェクトの状態のみが Java API の Transactional Objects で作成されるオブ"
+"ジェクトを表現するものとなります。 ただし、 障害が発生すると、クラッシュリカ"
+"バリの機能が表しているトランザクションを解決するまでトランザクションログはオ"
+"ブジェクトストア内に残る可能性があります。 このため、 オブジェクトストアの内"
+"容は十分な注意を払わずに削除されると疑わしいトランザクション内での解決が不可"
+"能となるため、 非常に重要です。 また、 複数のユーザーが同じオブジェクトストア"
+"を共有する場合、 ユーザーはこれをよく認識してリソースは共有されないものとして"
+"オブジェクトストアの内容を削除しないようにすることが重要です。"
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr "JBoss Transactions ランタイム情報"
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr ""
+"JBoss Transactions を構成する各モジュールは Info と呼ばれるクラスを持っていま"
+"す。 これらのクラスはすべて単一の toString メソッドを提供し、 そのモジュール"
+"用の設定情報を表す XML ドキュメントを返します。 たとえば、"
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr "障害リカバリ管理"
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr ""
+"JBoss Transactions の障害リカバリサブシステムは、 アプリケーションプロセスや"
+"それをホストしているマシンのいずれかがクラッシュしたりネットワーク接続を失っ"
+"た場合にでも、 トランザクションの結果がトランザクションにより影響されるすべて"
+"のリソースに対して常に必ず適用されるようにします。 マシン (システム) のクラッ"
+"シュやネットワーク障害が発生した場合、 そのシステムまたはネットワークが回復さ"
+"れるまでリカバリは行われませんが、 オリジナルのアプリケーションは起動される必"
+"要はありません。 リカバリ処理は Recovery Manager のプロセスに委任されます (以"
+"下を参照)。 傷害後のリカバリにはトランザクションとリソースに関する情報が障害"
+"を逃れて存続しその後アクセス可能であることが要されます。 この情報は "
+"ActionStore に維持され、 これは ObjectStore の一部になります。"
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid ""
+"If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr ""
+"ObjectStore が破棄または変更されると、 リカバリができなくなる可能性がありま"
+"す。"
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr ""
+"リカバリの手順が完了するまで、 障害発生時に実行中だったトランザクションによっ"
+"て影響を受けるリソースはアクセスできない可能性があります。 データベースのリ"
+"ソースについては、 “in-doubt transactions” で維持される表または列として報告さ"
+"れる可能性があります。 Java の TransactionalObjects リソースについては、 "
+"Transactional Object の起動の試行が失敗します (ロック取得試行時)。"
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr "Recovery Manager"
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+"JBoss Transactions の障害リカバリサブシステムは、 スタンドアローンの "
+"Recovery Manager プロセスが各 ObjectStore (一般的に JBoss Transactions アプリ"
+"ケーションを実行しているネットワーク上の各ノードに 1 つ) に対して実行している"
+"必要があります。 RecoveryManager ファイルは <classname>com.arjuna.ats.arjuna."
+"recovery.RecoveryManager</classname> パッケージ内の arjunacore jar ファイルに"
+"あります。 Recovery Manager を起動するには次のコマンドを実行します。"
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr ""
+"Recovery Manager で <literal>-test</literal> フラグが使用される場合、 初期化"
+"すると “Ready” メッセージが表示されます。"
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr "Recovery Manager を設定する"
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+"RecoveryManager は <filename>arjuna.properties</filename> ファイルに定義され"
+"るプロパティを読み込み、 また arjuna プロパティファイルを発見した同じディレク"
+"トリから <filename>RecoveryManager.properties</filename> プロパティファイルを"
+"読み込みます。 RecoveryManager プロパティファイル内のプロパティのエントリはメ"
+"インの TransactionService プロパティファイル内の同じプロパティのエントリを上"
+"書きします。 ほとんどのエントリは Recovery Manager 固有となります。"
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr ""
+"<filename>RecoveryManager.properties</filename> のデフォルトバージョンはディ"
+"ストリビューションに同梱されます。 おそらくデバッグ追跡フィールド (以下参"
+"照、 「出力」) 以外は変更することなく使用できます。 これ以降、 本セクションで"
+"はプロパティを他の値に設定する上での問題について説明していきます (ファイルの"
+"デフォルトバージョンで表されている順序)。"
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr "出力"
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+"どのようなリカバリアクティビティが行われたのかの記録を提供するために、 インス"
+"トールが RecoveryManager からの出力をなんらかの形式で必要とする可能性がありま"
+"す。 RecoveryManager は Arjuna Common Logging Framework (CLF) によって提供さ"
+"れるログ追跡メカニズムを使用します。 これは Jakarta log4j や JDK 1.4 ロギン"
+"グ API など既存のロギング API 間に存在する違いを隠す高度なレベルのインター"
+"フェースを提供します。 CLF は Apache Commons Logging フレームワーク経由ですべ"
+"てのロギングをインダイレクトするので、 設定はそのフレームワークを通して発生す"
+"るとみなされます。"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr ""
+"CLF ではアプリケーションはロッガーオブジェクトでロギングのコールを作成しま"
+"す。 ロッガーはロギングの Levels を使って特定のログメッセージに興味があるかを"
+"決定することができます。 各ログメッセージはログの Level を関連付け、 これによ"
+"りログメッセージの重要性や緊急性を与えます。 可能な Log Level のセットは "
+"DEBUG、 INFO、 WARN、 ERROR、 FATAL になります。 定義される Level は次のよう"
+"にその整数値に従って順序付けられます: DEBUG &lt; INFO &lt; WARN &lt; ERROR "
+"&lt; FATAL。"
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr ""
+"CLF はアプリケーションが定義する可能性があるより詳細な粒度に従ってロギング"
+"メッセージのフィルタを行うため拡張子を提供します。 これは、 ログメッセージが "
+"DEBUG レベルでロッガーに提供される場合、 ログメッセージが有効かどうかを判別す"
+"るため指定できる追加の条件になります。"
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr ""
+"これらの条件は、 DEBUG レベルが有効でアプリケーションによって実行されるログ要"
+"求がデバッグの粒度を指定している場合にのみ適用されます。"
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr ""
+"有効になると、 Debugging は次の 3 つの変数の条件付きでフィルタされます。"
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr ""
+"Debugging レベル: DEBUG Level 月のログ要求が生成される場所です。 例えば、 コ"
+"ンストラクタや基本的なメソッド。"
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr ""
+"Visibility レベル: デバッグを生成するコンストラクタ、 メソッドなどの可視性で"
+"す。"
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr ""
+"Facility コード: たとえば、 デバッグが生成される場所内のパッケージやサブモ"
+"ジュールです。 例、 オブジェクトストアなど。"
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr ""
+"これらの変数にしたがって、 CLF は 3 つのインターフェースを定義します。 特定の"
+"プロダクトがそれ自体の詳細な粒度にしたがいそれ自体のクラスを実装することがで"
+"きます。 JBoss Transactions はデフォルトの Debugging レベルおよび CLF によっ"
+"て提供されるデフォルトの Visibility レベルを使用しますが、 それ自体の "
+"Facility コードは定義します。 JBoss Transactions はそのロッガーオブジェクト "
+"(DEBUG) に割り当てられるデフォルトのレベルを使用します。 ただし、 デバッグ"
+"メッセージの無効化または有効化にはより詳細なデバッグ機能を使用します。 JBoss "
+"Transactions で使用される詳細なデバッグの値は以下のように定義されます。"
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr ""
+"Debugging レベル – JBoss Transactions はクラス <classname>com.arjuna.common."
+"util.logging.DebugLevel</classname> で定義されるデフォルトの値を使用します。"
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr ""
+"NO_DEBUGGING: 診断なしです。 この値を付けて割り当てられるロッガーオブジェクト"
+"はすべてのデバッグ要求を破棄します。"
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr ""
+"FULL_DEBUGGING: 完全診断です。 この値を付けて割り当てられるロッガーオブジェク"
+"トは、 facility コードと visibility レベルがそのロッガーで許可されるそれらと"
+"一致する場合にすべてのデバッグ要求を許可します。"
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr "追加のデバッグ値は次の通りです。"
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr "CONSTRUCTORS: コンストラクタからの診断です。"
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr "DESTRUCTORS:  ファイナライザからの診断です。"
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr "CONSTRUCT_AND_DESTRUCT: コンストラクタとファイナライザからの診断です。"
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr "FUNCTIONS: 関数からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr "OPERATORS: イコールなどの演算子からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr "FUNCS_AND_OPS: 関数と演算からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr "ALL_NON_TRIVIAL: non-trivial の全演算からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr "TRIVIAL_FUNCS: trivial 関数からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr "TRIVIAL_OPERATORS: trivial 演算と演算子からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr "ALL_TRIVIAL:  すべての trivial 演算からの診断です。"
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+"Visibility レベル – JBoss Transactions はクラス <classname>com.arjuna.common."
+"util.logging.VisibilityLevel</classname> で定義されるデフォルトの値を使用しま"
+"す。"
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr "VIS_NONE: 診断なしです。"
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr "VIS_PRIVATE : プライベートメソッドからのみです。"
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr "VIS_PROTECTED  保護メソッドからのみです。"
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr "VIS_PUBLIC  パブリックメソッドからのみです。"
+
+#. Tag: para
+#: Chapter.xml:141
+#, fuzzy, no-c-format
+msgid "VIS_PACKAGE   only from package methods."
+msgstr "VIS_PUBLIC  パブリックメソッドからのみです。"
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr "VIS_ALL:  完全診断です。"
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+"Facility コード – JBoss Transactions はクラス <classname>com.arjuna.common."
+"util.logging.VisibilityLevel</classname> で定義される次のような値を使用しま"
+"す。"
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr "FAC_ATOMIC_ACTION = 0x0000001 (アトミックアクションコアモジュール)。"
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr "FAC_BUFFER_MAN = 0x00000004 (状態管理 (バッファ) クラス)。"
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr "FAC_ABSTRACT_REC = 0x00000008 (抽出記録)。"
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr "FAC_OBJECT_STORE = 0x00000010 (オブジェクトストア実装)。"
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr "FAC_STATE_MAN = 0x00000020 (状態管理と StateManager)。"
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr "FAC_SHMEM = 0x00000040 (共有メモリ実装クラス)。"
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr "FAC_GENERAL = 0x00000080 (汎用クラス)。"
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr ""
+"FAC_CRASH_RECOVERY = 0x00000800 (クラッシュリカバリモジュールとクラスの詳細な"
+"とレース)。"
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr "FAC_THREADING = 0x00002000 (スレッディングクラス)。"
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr "AC_JDBC = 0x00008000 (JDBC 1.0 および 2.0 サポート)。"
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid ""
+"FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr ""
+"FAC_RECOVERY_NORMAL = 0x00040000 (クラッシュリカバリマネージャの通常出力)。"
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr ""
+"適切な出力を確認するため、 <filename>CommonLogging.xml</filename> ファイルで"
+"明示的に詳細なデバッグプロパティをいくつか設定して JBoss Transactions モ"
+"ジュールで発行されるロギングメッセージを有効にする必要があります。"
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr ""
+"RecoveryManager によって作成される開始と定期的な動作を説明しているメッセージ"
+"は INFO レベルを使用する出力です。 他のデバッグトレーシングが必要な場合は、 "
+"詳細なデバッグレベルを適切に設定されなければなりません。 たとえば、 次の設定"
+"の CommonLogging.xml で、 Crash Recovery プロトコルに関連し JBoss "
+"Transactions モジュールによって発行されるデバッグメッセージはすべて有効にしま"
+"す。"
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr ""
+"2 つのロッガーオブジェクトが提供され、 1 つは I18N メッセージを管理し、 2 番"
+"目は管理しません。"
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr ""
+"通常のリカバリメッセージを INFO レベルに設定すると RecoveryManager が適度なレ"
+"ポーティングレベルを生成することができるようになります。 何も行われていなけれ"
+"ば、 エントリをそれぞれの定期的なパスの各モジュールに報告するだけです。 "
+"Recovery Manager によって生成される INFO メッセージを無効にするには、 ロギン"
+"グレベルをより高いレベルの ERROR に設定すると行うことができます。 レベルを "
+"ERROR に設定するということは RecoveryManager が error、 warning、 fatal の"
+"メッセージしか生成しないということになります。"
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr "定期的なリカバリ"
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+"RecoveryManager は ObjectStore および情報のその他の場所をスキャンし、 リカバ"
+"リを要するまたは要する可能性があるトランザクションとリソースを探します。 この"
+"スキャンとリカバリ処理は、 トランザクションまたはリソースの特定カテゴリに対す"
+"る処理責務を有する各リカバリモジュールによって行われます、 (com.arjuna.ats."
+"arjuna.recovery.RecoveryModule インターフェースを実装するクラスのインスタン"
+"ス)。 使用されるリカバリモジュールのセットは動的にロードされ、 "
+"RecoveryManager property ファイルにあるプロパティを使用します。"
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+"インターフェースには <literal>periodicWorkFirstPass</literal> と "
+"<literal>periodicWorkSecondPass</literal> の 2 つのメソッドがあります。 ある"
+"間隔で (プロパティ <classname>com.arjuna.ats.arjuna.recovery."
+"periodicRecoveryPeriod</classname> によって定義される)、 RecoveryManager は各"
+"プロパティで 1 番目のパスをコールし、 少しの期間 (プロパティ <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname> によって定義され"
+"る) 待機してから、 各モジュールの 2 番目のパスをコールします。 一般的には、 "
+"1 番目のパスでモジュールは in-doubt (つまり、 コミットメントプロセスの途中) "
+"のリソースまたはトランザクションを検索するためスキャンを行います (例、 "
+"ObjectStore の関連部分)。 2 番目のパスで、 同じアイテムのいずれかがいまだ in-"
+"doubt の場合、 オリジナルのアプリケーションプロセスがクラッシュしていてそのア"
+"イテムがリカバリの候補である可能性があります。"
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+"RecoveryManager によるオリジナルのプロセスでいまだ進行中のトランザクションの"
+"リカバリ試行は整合性をブレイクする可能性があります。 これに応じて、 リカバリ"
+"モジュールはオリジナルのプロセスがいまだ生きているのかどうか、 またトランザク"
+"ションがいまだ進行中であるのかどうかをチェックするメカニズムを使用します "
+"(<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> パッケージ内に実装される)。 RecoveryManager はオリジナルのプロセス"
+"がなくなってしまった場合、 あるいはいまだ生きているときはトランザクションが完"
+"了した場合にのみ開始されます。 (サーバーのプロセスまたはマシンがクラッシュし"
+"たがトランザクション開始のプロセスが生き残っている場合、 このトランザクション"
+"は完了して通常は警告を生成します。 このようなトランザクションのリカバリが "
+"RecoveryManager の役割となります。)"
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+"間隔の期間を適切に設定することが明らかに重要となります。 合計反復時間は全リカ"
+"バリモジュールの <literal>periodicRecoveryPeriod</literal>、 "
+"<literal>recoveryBackoffPeriod</literal>、 およびスキャンをストアし発見した "
+"in-doubt トランザクションのリカバリを試行するのにかかる時間の合計になります。"
+"リカバリ試行時間にはクラッシュしたあるいはアクセスできないプロセスやマシンと"
+"の通信試行をしている間の接続タイムアウトも含まれることがあります (これが同じ"
+"トランザクションのリカバリ試行を永久に回避するメカニズムがリカバリシステムに"
+"ある理由です)。 合計反復時間は障害が発生してからリソースがアクセス不能な状態"
+"でいる長さに影響します。 応じて <literal>periodicRecoveryPeriod</literal> を"
+"設定しなければなりません (デフォルトは 120 秒)。 "
+"<literal>recoveryBackoffPeriod</literal> は比較的短時間で構いません (デフォル"
+"トは 10 秒)。 目的は主にリカバリの候補となるためいまだ実行中であるかどうかを"
+"確認するのにオリジナルのプロセスのコールを必要とするトランザクション数を減ら"
+"すことです。"
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr ""
+"JBoss Transactions の以前のバージョンでは、 コンタクトメカニズムがなかったた"
+"め空中のトランザクションのキャッチを回避するのに backoff 期間をかなり長くしな"
+"ければなりませんでした。 3.0 からはこのようなリスクがなくなります。"
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+"JBoss Transactions には 2 つのリカバリモジュール (<classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> インターフェースの実装) が同梱さ"
+"れ、 JDBC リカバリなど各種のリカバリに対応しています。 上級ユーザーの場合、 "
+"自分のリカバリモジュールを作成して Recovery Manager に登録することが可能で"
+"す。 リカバリモジュールは “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>” で始まるプロパティを使って RecoveryManager に"
+"登録します。 これらはプロパティ名のソート順で定期的なリカバリの各パスで呼び出"
+"されます。 したがって、 "
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr "失効エントリの削除"
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+"サブシステムのリカバリの実施により、 通常のプログレスでは削除されない "
+"ObjectStore 内にエントリがいくつか作成されることになります。 RecoveryManager "
+"にはこれらをスキャンして古いアイテムを削除する機能があります。 スキャンと削除"
+"は <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> イン"
+"ターフェースの実装で行われます。 このインターフェースの実装は <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanner</classname> で始まる名前を持つプロパ"
+"ティの値としてクラス名を与えることでロードされます。 RecoveryManager はプロパ"
+"ティ <classname>com.arjuna.ats.arjuna.recovery.expiryScanInterval</"
+"classname> で確定される間隔でロードされる Expiry Scanner の各実装で "
+"<command>scan()</command> メソッドをコールします。この値は時間単位で与えま"
+"す。 デフォルトは 12 時間です。 <classname>expiryScanInterval</classname> の"
+"値がゼロは失効のスキャンを抑制します。 与えられる値が整数である場合は、 "
+"RecoveryManager が起動したときに最初のスキャンが行われます。 値が負数の場"
+"合、 最初のスキャンは最初の間隔まで遅延されます (絶対値を使用)。"
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr "失効のスキャンが行われるアイテムの種類は次の通りです。"
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+"TransactionStatusManager アイテム: JBoss Transactions を使用する全アプリケー"
+"ションプロセスによってこれらのひとつが作成されます。 RecoveryManager がトラン"
+"ザクションを開始したプロセスがまだ生きているかどうか、 またそのトランザクショ"
+"ン状態を確定できるようにする情報が含まれています。 これらの失効時間はプロパ"
+"ティ <classname>com.arjuna.ats.arjuna.recovery."
+"transactionStatusManagerExpiryTime</classname> で設定されます (時間単位で、 "
+"デフォルトは 12 時間、 0 は失効しないという意味)。 失効時間はいずれの単一 "
+"JBoss Transactions 使用プロセスの寿命より長くなければなりません。"
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr "これらの Expiry Scanner プロパティは次の通りです。"
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr "エラーと例外"
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr ""
+"本セクションでは、 トランザクショナルアプリケーションの間に投げられたり報告さ"
+"れる可能性のあるエラーや例外のタイプについて説明し、 その原因により起こりそう"
+"な兆候をあげておきます。"
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr ""
+"NO_MEMORY: アプリケーションの空きメモリがなくなり "
+"(<classname>OutOfMemoryError</classname> が投げられる)、 JBoss Transactions "
+"が例外を再度投げるまでになんらかのクリーンアップを試行しています (ガーベッジ"
+"コレクションを実行)。 これはおそらく一時的な問題で呼び出しを再試行すると成功"
+"するはずです。"
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr ""
+
+#~ msgid ""
+#~ "VIS_JBoss_Transactions_Administrators_Guide   only from package methods."
+#~ msgstr ""
+#~ "VIS_JBoss_Transactions_Administrators_Guide  パッケージメソッドからのみで"
+#~ "す。"

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Feedback.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Feedback.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,38 @@
+# translation of Feedback.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 00:15+0000\n"
+"PO-Revision-Date: 2008-05-15 12:38+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "フィードバック"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr "本ガイドに誤植があった場合、 また本ガイドの改善案に関するご意見をお寄せ頂く場合、 <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> より Product: JBoss Enterprise Application Platform、 Version: <replaceable>&lt;version&gt;</replaceable>、 Component: <emphasis>Doc</emphasis> にてご報告頂ければ幸いです。 ドキュメントの改善案についてはできるだけ詳細にお願いいたします。 エラーの報告を頂く場合は、 該当するセクション番号および前後の文脈を含めてお知らせ頂けると発見しやすくなります。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/JBoss_Transactions_Administrators_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,127 @@
+# translation of Preface.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 00:15+0000\n"
+"PO-Revision-Date: 2008-05-15 13:44+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr "序文"
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr "本ガイドに含まれるもの"
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr "管理ガイドでは JBoss Transactions API 4.2.3 を管理する方法について説明しています。"
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr "対象"
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr "JBoss Transactions API 4.2.3 のインストールを管理するエンジニアの方に最適なガイドです。"
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr "必須条件"
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr "JBoss Transactions を管理するにはまず JBoss Transactions が多くのトランザクション機能で ArjunaCore に依存していることを理解しておくことが必要になります。 このため ArjunaCore 管理ガイドをよく読んでから JBoss Transactions の管理を開始するのが重要となります。"
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr "企業組織"
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr "本ガイドには以下の章から構成されています。"
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr "第 1 章、 JBoss Transactions の管理 では JBoss Transactions の管理方法について説明しています。 主に純粋なローカルまたはリモートなど JTA 実装の種類の選択についてです (配信トランザクションの許可)。"
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr "追加ドキュメント"
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr "本ガイドの他、 次のようなガイドが JBoss Transactions API 4.2.3 ドキュメントセットにあります。"
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr "JBoss Transactions API 4.2.3 Release Notes (リリースノート)、 JBoss Transactions API 4.2.3 に関する最新情報を提供します。"
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr "JBoss Transactions API 4.2.3 Installation Guide (インストールガイド)、 JBoss Transactions API 4.2.3 のインストール方法について説明しています。"
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr "JBoss Transactions API 4.2.3 Programmer’s Guide (プログラマーガイド)、 アプリケーションの記述方法についてのガイダンスになります。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/ja-JP/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Revision_History.po to Japanese
+# Language ja-JP translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Revision_History\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 00:15+0000\n"
+"PO-Revision-Date: 2008-05-15 12:38+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr "<firstname></firstname> <surname></surname> <email></email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:29+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,42 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:29+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions Administrators Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:24
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Chapter.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Chapter.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Chapter.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,933 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:29+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid ""
+"Object store management is critically important to the transaction service."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid ""
+"If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr ""
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "VIS_PACKAGE   only from package methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid ""
+"FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Feedback.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Feedback.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Feedback.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:29+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr ""
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/JBoss_Transactions_Administrators_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Preface.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Preface.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,124 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:29+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr ""
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr ""
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:29+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Appendix.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 10:41+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr "Histórico de Revisão"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,36 @@
+# translation of Author_Group.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 10:42+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "FF0000 Headgear Documentation Group"
+msgstr "Grupo de Documentação FF0000 Headgear"
+
+#. Tag: author
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+msgstr ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,44 @@
+# translation of Book_Info.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 10:49+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions API 4.2.3 Administration Guide"
+msgstr "Guia de Administração API 4.2.3 de Transações JBoss"
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "Plataforma de Aplicativo JBoss Enterprise"
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr "Este livro é uma edição da Plataforma de Aplicativo JBoss Enterprise do Guia de Administradores de Transações JBoss"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1000 @@
+# translation of Chapter.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-19 15:37+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr "Existe uma administração contínua e necessária para o software de transações JBoss, fora a garantia de que o sistema de tempo de execução é efetuado normalmente. No entanto, existem alguns pontos que devem ser mencionados:"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr "A implementação presente do sistema JBoss TA não fornece segurança ou proteção de dados. Os objetos armazenados no armazenamento de objeto de Transações JBoss pertencem (tipicamente) ao usuário que roda o aplicativo que os criou. As facilidades do Gerenciador de Objeto e Armazenamento de Objeto não se esforçam em reforçar nem mesmo o formulário limitado de proteção que o Unix/Windows fornece. Não há checagem de IDs de usuário ou grupo no acesso a objetos para tanto a leitura ou gravação."
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr "Os objetos persistentes criados no Armazenamento do Objeto nunca desaparecerão, a não ser que o método StateManager.destroy seja invocado no objeto ou algum programa de aplicativo explícito deletá-los. Isto significa que o Armazenamento de Objeto acumula gradativamente lixo (especialmente durante as fases de teste e desenvolvimento do aplicativo). No momento, não possuimos a facilidade de coleta de lixo automático. Adicionado a isto, não endereçamos o problema de referências de ligação. Isto quer dizer que, um objeto persistente A pode armazenar um Uid de outro objeto persistente B, em sua representação passiva no disco. Não há nada para evitar que um aplicativo delete o objeto persistente B, mesmo que o A possua referência a isto. Na próxima vez em que o A for ativado e tentar acessar o B, um erro de tempo de execução ocorrerá."
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr "Atualmente, não há suporte para o controle de versão de objetos ou reconfiguração de banco de dados, no evento de mudanças de estruturas de classe. Isto é uma área de pesquisa complexa, da qual nós não endereçamos ainda. Caso você mude a definição da classe de objetos persistentes, você será inteiramente responsável em assegurar que instâncias existentes do objeto, no Armazenamento do Objeto, serão convertidas à nova representação. O software de Transações JBoss nunca poderá detectar e nem mesmo corrigir referências para um estado de objeto antigo, pela nova operação."
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid "Object store management is critically important to the transaction service."
+msgstr "O gerenciamento de armazenamento de objeto é extremamente importante ao serviço de transação."
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr "Gerenciamento ObjectStore"
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr "Quando se tratar da instalação do serviço de transação, o armazenamento do objeto é atualizado regularmente toda vez em que as transações são criadas ou toda vez em que os Objetos Transacionais para Java forem usados. Numa falha de ambiente livre, o único objeto que determina o que deve residir com o armazenamento do objeto, são os objetos representantes criados com os Objetos Tradicionais para o Java API. No entanto, se uma falha ocorrer, os logs de transação poderão permanecer num armazenamento de objeto até que as facilidades de recuperação de travamento tenham resolvido as transações que elas representam. Assim como, é bastante importante que os conteúdos do armazenamento do objeto não sejam deletados sem o devido cuidado e atenção, uma vez que isto tornará impossível a resolução de transações suspeitas. Adicionado a isto, caso múltiplos usuários compartilharem o mesmo armazenamento do objeto, será necessário que eles saibam dis!
 to e não deletem simplesmente o conteúdo do armazenamento do objeto, assumindo que isto é um recurso exclusivo."
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr "Informação de tempo de execução de Transações JBoss"
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr "Cada módulo, do qual compromete as Transações JBoss, possui uma classe chamada Info. Todas estas classes fornecem um único método toString, que retorna um documento XML, representando a informação de configuração para aquele módulo. Por exemplo: "
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr "Administração de recuperação da falha"
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr "O sub-sistema de recuperação da falha de Transações JBoss irão garantir que os resultados de uma transação serão aplicados constantemente a todos os recursos afetados pela transação, mesmo que qualquer um dos processos de aplicativo, ou a máquina que os hospeda, travar ou perder a conexão da rede. No caso da máquina (sistema) travar ou a rede falhar, a recuperação não tomará lugar até que o sistema ou a rede forem restaurados. Contudo, o aplicativo original não precisa ser restaurado. A responsabilidade da recuperação é delegar o processo Gerenciador de Recuperação (veja abaixo). A recuperação, depois da falha, solicita que a informação sobre a transação e recursos envolvidos sobrevivam a falha e sejam acessíveis mais tarde (esta informação é retida no ActionStore, do qual faz parte do ObjectStore.)"
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid "If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr "Caso um ObjectStore seja destruído ou modificado, a recuperação talvez não seja disponível."
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr ""
+"Até que os processos de recuperação sejam completados, os recursos afetados pela transação, que estava em processo no período da falha, poderão tornar-se inacessíveis. Isto poderá ser relatado como tabelas ou filas retidas pelas “in-doubt transactions” (transações suspeitas). A tentativa de ativar o Objeto transacional (como, por exemplo, tentar obter um travamento) falhará para TransactionalObjects "
+"em recursos Java."
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr "O Gerenciamento de Recuperação"
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+"O sub-sistema de recuperação de falha de Transações JBoss solicita que o processo Gerenciador de Recuperação stand-alone rode para cada ObjectStore (tipicamente, um para cada nó na rede que está rodando os aplicativos de Transações JBoss). O arquivo RecoveryManager está localizado no arquivo de jarra arjunacore com o pacote <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. Use o seguinte comando para iniciar o Gerenciador de Recuperação:"
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr "Caso o aviso <literal>-test</literal> seja usado com o Gerenciador de Recuperação, será exibida uma mensagem “Ready”, uma vez que isto for inicializado: Por exemplo:"
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr "Configurando o Gerenciador de Recuperação"
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+"O RecoveryManager lê as propriedades definidas no arquivo <filename>arjuna."
+"properties</filename> e, também, lê o arquivo de propriedade <filename>RecoveryManager.properties</filename>, a partir do mesmo diretório como encontrado no arquivo de propriedade arjuna. Uma entrada para uma propriedade no arquivo de propriedades RecoveryManager irá substituir uma entrada para a mesma propriedade no arquivo principal de propriedades TransactionService. A maioria das entradas estão especificadas no Gerenciador de Recuperação. "
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr "A versão padrão do <filename>RecoveryManager.properties</filename> é fornecida com a distribuição (isto pode ser usado sem modificação, com exceção da possibilidade de campos de rastreamento de depuração, veja o exemplo abaixo). O resto desta seção trata dos problemas relevantes de configuração de propriedades para outros valores (em ordem de sua aparência, na versão padrão do arquivo)."
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr "Saída"
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+"É bem comum que as instalações queiram ter alguma forma de saída do RecoveryManager, para fornecer um registro sobre os acontecimentos da atividade de recuperação. O RecoveryManager usa o mecanismo de rastreamento de log fornecido pelo Arjuna Common Logging Framework (CLF), do qual fornece uma interface de alto nível. Esta esconde diferenças existentes entre o log existente APIs como Jakarta "
+"log4j ou JDK 1.4 logging API. O CLF desvia todos os logs através do framework Apache "
+"Commons Logging e presume-se que a configuração ocorra através daquele framework. "
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr ""
+"Usando os aplicativos CLF, efetue chamadas log nos objetos logger. Os loggers poderão usar os níveis log para decidir se eles estão interessados numa mensagem de log específica. Cada mensagem log possui um Nível log associado, do qual dá a importância e a urgência da mensagem log. O conjunto de possíveis Níveis de Log são DEBUG, INFO, WARN, ERROR e FATAL. Os níveis definidos são ordenados de acordo com os valores íntegros dos mesmos, como segue a seguir: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr ""
+"O CFL fornece uma extensão para filtrar mensagens de log de acordo com a definição de um aplicativo a respeito do finer "
+"granularity. Isto é, quando uma mensagem log é fornecida para o logger com o nível de DEBUG, condições adicionais poderão ser especificadas para determinar se uma mensagem log é ativada ou não."
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr "Estas condições são aplicadas \"se e apenas\" o nível DEBUG for ativado, e se a solicitação de log executada pelo aplicativo especificar a depuração granulada."
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr "Uma vez ativada, a Depuração é filtrada condicionalmente em três variáveis:"
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr "Nível de depuração: é onde a solicitação de log, com o Nível DEBUG, é gerado, por exemplo: construtores ou métodos básicos."
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr "Nível de Visibilidade: a visibilidade do construtor, método, etc. Isto gera a depuração."
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr "Código de Facilidade: para instanciar o pacote ou sub-modulo com que a depuração é gerada, por exemplo: o armazenamento do objeto."
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr "O CLF define três interfaces de acordo com estas variáveis. Um produto particular poderá implementar a própria classe de acordo com o próprio finer granularity. As Transações JBoss usam o nível de Depuração padrão e o nível de Visibilidade padrão fornecida pelo CLF, porém isto determina o próprio Código de Facilidade. As Transações JBoss usam o nível padrão determinado para seus próprios objetos logger (DEBUG). No entanto, elas usam o recurso de depuração fina para desativar ou ativar as mensagens de depuração. Segue abaixo, os valores definidos de depuração fina usados pelas Transações JBoss:"
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr "Nível de depuração - as Transações JBoss usam os valores padrões definidos na classe <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr "NO_DEBUGGING: Não há diagnósticos. Um objeto logger determinado com estes valores descarta todas as solicitações de depuração"
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr "FULL_DEBUGGING: Diagnóstico completo. Um objeto logger determinado com este valor permite todas as solicitações de depuração, no caso do código de facilidade e nível de visibilidade serem compatíveis com aqueles permitidos pelo logger. "
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr "Os Valores de Depuração Adicionais são:"
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr "CONSTRUCTORS: Diagnósticos a partir de construtores."
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr "DESTRUCTORS: Diagnósticos a partir de finalizadores."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr "CONSTRUCT_AND_DESTRUCT: Diagnósticos a partir de construtores e finalizadores."
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr "FUNCTIONS: Diagnósticos a partir de funções."
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr "OPERATORS: Diagnósticos a partir de operadores, como igualdades."
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr "FUNCS_AND_OPS: Diagnósticos a partir de funções e operações."
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr "ALL_NON_TRIVIAL: Diagnósticos a partir de todas operações não-triviais."
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr "TRIVIAL_FUNCS: Diagnósticos a partir de funções triviais."
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr "TRIVIAL_OPERATORS: Diagnósticos a partir de operações triviais e operadores."
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr "ALL_TRIVIAL: Diagnósticos a partir de todas operações triviais."
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr "Nível de Visibilidade - as Transações JBoss usam valores de padrão definido na classe <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr "VIS_NONE: Sem Diagnóstico"
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr "VIS_PRIVATE: apenas a partir de métodos privados."
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr "VIS_PROTECTED: apenas a partir de métodos protegidos."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr "VIS_PUBLIC: apenas a partir de métodos públicos."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "VIS_JBoss_Transactions_Administrators_Guide   only from package methods."
+msgstr "VIS_JBoss_Transactions_Administrators_Guide: apenas a partir de métodos de pacote."
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr "VIS_ALL: Diagnóstico Completo"
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr "Código de facilidade - as Transações JBoss usam os seguintes valores definidos na classe <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr "FAC_ATOMIC_ACTION = 0x0000001 (código principal de função atômica)."
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr "FAC_BUFFER_MAN = 0x00000004 (classes [buffer] de gerenciamento de estado)."
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr "FAC_ABSTRACT_REC = 0x00000008 (registros abstratos)."
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr "FAC_OBJECT_STORE = 0x00000010 (implementações de armazenamento de objeto)."
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr "FAC_STATE_MAN = 0x00000020 (gerenciamento de estado e StateManager)."
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr "FAC_SHMEM = 0x00000040 (classes de implementação de memória compartilhada)."
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr "FAC_GENERAL = 0x00000080 (classes em geral)."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr "FAC_CRASH_RECOVERY = 0x00000800 (rastreamento detalhado de classes e módulo de recuperação de travamento)."
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr "FAC_THREADING = 0x00002000 (classes de segmentação)."
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr "AC_JDBC = 0x00008000 (JDBC 1.0 e suporte 2.0)."
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid "FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr "FAC_RECOVERY_NORMAL = 0x00040000 (saída normal para gerenciamento de recuperação de travamento)."
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr "Para garantia de uma saída apropriada, é necessário configurar, explicitamente, algumas das propriedades de depuração fina no arquivo <filename>CommonLogging.xml</filename>. Isto tudo, para ativar as mensagens de log emitidas pelo módulo de Transações JBoss."
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr "As mensagens descrevem o início e o comportamento periódico feito pelo RecoveryManager como saída, se utilizarmos o nível de INFO. Caso outro rastreamento de depuração seja requerido, o nível de depuração fina deve ser propriamente configurado. Por exemplo, a configuração seguinte, no CommonLogging.xml, ativa todas as mensagens de depuração, relatadas ao protocolo de Recuperação de Travamento, e emitidas pelo módulo de Transações JBoss."
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr "Dois objetos logger são fornecidos, um gerencia as mensagens I18N e o outro não."
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr "A configuração das mensagens de recuperação normal, para o nível INFO, permite um nível moderado de reportagem à Produção RecoveryManager. Caso nada aconteça, isto apenas relata a entrada em cada módulo para cada caminho periódico. Para desativar as mensagens INFO produzidas pelo Gerenciador de Recuperação, o nível log deverá ser configurado num nível mais alto: ERROR. Configurando o nível para ERROR significa que o RecoveryManager irá apenas produzir error, aviso ou mensagens fatais."
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr "Recuperação Periódica"
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+"O RecoveryManager verifica o ObjectStore e outras localidades de informação, buscando por transações e recursos que requerem, ou talvez solicitarão, recuperação. A verificação e processo de recuperação são executados pelos módulos de recuperação (instâncias de classes que implementam a interface com.arjuna.ats."
+"arjuna.recovery.RecoveryModule), cada qual com a responsabilidade para uma categoria particular de transação ou recurso. O conjunto de módulos de recuperação usados estão dinamicamente carregados, usando propriedades encontradas no arquivo de propriedade RecoveryManager."
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+"A interface possui dois métodos: <literal>periodicWorkFirstPass</literal> e "
+"<literal>periodicWorkSecondPass</literal>. Num intervalo, (definido pela propriedade <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>) o RecoveryManager chamará o primeiro método de caminho em cada propriedade, e então esperará por um breve período (definido pela propriedade <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>) para então chamar o segundo caminho de cada módulo. Basicamente, no primeiro caminho, o módulo faz a verificação (por exemplo; a parte relevante do ObjectStore) para encontrar transações ou recursos que são duvidosos (por exemplo; são parte do caminho através do processo de comprometimento). Já no segundo caminho, se qualquer um dos mesmos ítens ainda forem suspeitos, é possível que o processo do aplicativo original trave e o ítem seja um candidato para a recuperação. "
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+"A tentativa de recuperar uma transação, pelo RecoveryManager, que ainda está sendo processada no(s) processo(s) original, poderá interromper a consistência. Conseqüentemente, os módulos de recuperação usam um mecanismo (implementado no pacote <classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname>) para checar se é que o processo original ainda está vivo e se a transação continua em progresso. O RecoveryManager apenas procede com a recuperação se o processo original se foi. Por outro lado, se ele estiver sobrevivido, a transação será completada. (Caso um processo do servidor ou sistema travar, mas o processo de inicialização de transação sobreviver, a transação será completada, normalmente gerando um aviso. A recuperação de tal transação é responsabilidade do RecoveryManager). "
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+"É muito importante configurar os períodos de intervalo propriamente. O período total de interação será a soma do <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> e o período de tempo necessário para verificar os armazenamentos e tentar a recuperação de quaisquer transações encontradas como duvidosas. Isto tudo, para todos os módulos de recuperação. O período de tentativa de recuperação poderá incluir conexões de intervalo enquanto tentando a comunicação com os processos ou sistemas que tenham travado ou estão inacessíveis (sendo este o motivo pelo qual existem mecanismos no mesmo sistema de recuperação para tentar evitar a recuperação de mesma transação para sempre). O período total de interação afetará quanto tempo um recurso permanecerá inacessível, após a falha. O <literal>periodicRecoveryPeriod</literal> deverá ser configurado em concordância (o padrão é 120 segundos). O <literal>recoveryBackoffPeriod</literal> pode ser relativamente menor (o padrão é 10 segundos). Isto tudo, com a principal intenção de reduzir o número de transações qu!
 e são candidatas para a recuperação, e desta forma, solicitar uma \"chamada ao processo original para a verificação de que elas ainda estão em progresso\"."
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr "Nas versões anteriores de Transações JBoss não havia mecanismo de contato, além de que o período de backoff necessitava ser longo o suficiente para evitar que transações de captura fossem perdidas pelo mundo afora. Este risco não ocorre a partir do 3.0."
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+"Dois módulos de recuperação (implementações da interface <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname>) são supridos com as Transações JBoss, suportando vários aspectos de recuperação de transação, incluindo a recuperação JDBC. É possível que os usuários mais avançados criem os próprios módulos de recuperação e registrem-os com o Gerenciador de Recuperação. Os módulos de recuperação são registrados como o RecoveryManager usando as propriedades que inicializam com “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. Isto será invocado em cada caminho de recuperação periódica em certa ordem de nomes de propriedades - desta forma é possível predizer a ordenação (mas perceba que a falha em um processo de aplicativo poderá ocorrer enquanto o caminho de recuperação periódico estiver em progresso). As configurações de Extensão de recuperação padrão são as seguintes: "
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr "Remoção da entrada expirada"
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+"A operação do sub-sistema de recuperação fará com que algumas entradas sejam feitas no ObjectStore, das quais não serão removidas em progresso normal. O RecoveryManager possui a facilidade de verificação destes e dos ítens removidos, dos quais são bastante antigos. A verificação e remoção são executadas pelas implementações da interface <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname>. As implementações desta interface são carregadas fornecendo o nome de classe como um valor de uma propriedade pela qual o nome começa com <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. O RecoveryManager chama o método <command>scan()</command> em cada implementação carregada de Expiry Scanner, no intervalo determinado pela propriedade <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. Este valor é dado em horas - o padrão é 12. Um <classname>expiryScanInterval</classname> de valor zero irá suprir qualquer verificação expirada. Caso o valor fornecido seja positivo, a primeira verificação é impedida até o final do primeiro intervalo (usando o valor absoluto)."
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr "Os tipos de ítens que são verificados pela expiração são o seguinte:"
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+"Ítens de TransactionStatusManager: um deles é criado por cada processo de aplicativo que usa as Transações JBoss - eles contêm a informação que permite o RecoveryManager a determinar se o processo que inicializou a transação sobreviveu, e qual é o status da transação. O tempo de expiração para isto é configurado pela propriedade <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (em horas - o padrão é 12, zero quer dizer nunca expirado). O tempo de expiração deve ser maior do que o tempo de vida de qualquer Transação JBoss simples, processo de uso."
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr "As propriedades de Verificação de Expiração são as seguintes:"
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr "Erros e Exceções"
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr "Nesta seção, iremos converter os tipos de erros e exceções que possam ser jogados ou relatados durante um aplicativo transacional, além de fornecer indicações prováveis de suas causas."
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr "NO_MEMORY: o aplicativo não possui mais memória (adicione um <classname>OutOfMemoryError</classname>) e as Transações JBoss tentaram realizar uma limpeza (apenas rodando o coletor de lixo) antes de re-adicionar a exceção. Isto é provavelmente um problema transitório e a nova tentativa de invocação deverá ser bem sucedida. "
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr "com.arjuna.ats.arjuna.exceptions.FatalError: ocorreu um erro significando que o sistema de transação deve ser desligado. Antes deste erro ser lançado, o serviço de transação irá certificar-se de que todas as transações tenham sido revertidas. Caso detectado, o aplicativo deverá limpar e encerrar o sistema. E, se houver uma tentativa de um futuro trabalho, a consistência do aplicativo poderá ser violada."
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr "com.arjuna.ats.arjuna.exceptions.LicenceError: foi realizada uma tentativa para usar o serviço de transação de uma maneira inconsistente com a licença atual. O serviço de transação não permitirá nenhum progresso futuro para novas ou existentes transações."
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr "com.arjuna.ats.arjuna.exceptions.ObjectStoreError: um erro foi detectado enquanto o serviço de transação tentava usar o armazenamento do objeto. Não foi possível realizar um progresso."
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr "O armazenamento do objeto avisa antecipadamente que os problemas de acesso nos estados poderão ocorrer durante a execução normal da recuperação de travamento. Este é o resultado de tentativas atuais múltiplas para recuperar o desempenho na mesma transação. Isto pode ser facilmente ignorado."
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr "Selecionando a implementação JTA"
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr "Duas variantes da implementação JTA são agora fornecidas e acessíveis através da mesma interface. Elas são:"
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr "Um puro JTA local, que apenas permite transações JTA não-distribuídas a serem executadas. Esta é a única versão disponível com o produto de Transações JBoss."
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr "Uma remoção, JTA CORBA baseada, que permite transações JTA distribuídas a serem executadas. Esta versão é apenas disponível com o produto ArjunaJTS e requer um CORBA ORB suportado."
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr "ambas implementações são inteiramente compatíveis com o driver JDBC transacional fornecido com as Transações JBoss."
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr "Para se realizar a seleção da implementação local JTA local, é necessário executar os seguintes passos:"
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+"certifique-se de que a propriedade <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> é configurada para <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+"certifique-se de que a propriedade <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> é configurada para <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr "estas configurações são valores padrões para as propriedades e não precisam ser especificadas, caso a implementação local seja requerida."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Feedback.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Feedback.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,40 @@
+# translation of Feedback.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-18 08:29+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "Comentários"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""
+"Caso você encontre um erro neste guia ou se você pensar numa maneira diferente de fazer este manual ainda melhor, queremos muito de ouvir sua opinião. Por favor, submeta o relatório em <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> em referência ao Produto: Plataforma de Aplicativo JBoss Enterprise, Versão: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. Caso tenha alguma sugestão para aperfeiçoamento desta documentação, por favor seja o mais específico possível. E, se você encontrar um erro, inclua o número de seção e algumas partes do texto ao redor, para que possamos localizá-lo com mais facilidade."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/JBoss_Transactions_Administrators_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,127 @@
+# translation of Preface.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-19 16:13+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr "Prefácio"
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr "O que contém neste Guia"
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr "O Guia de Administração contém informações de como administrar as Transações JBoss API 4.2.3"
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr "Audiência"
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr "Este guia é muito mais relevante para engenheiros, dos quais são responsáveis pela administração das instalações de Transações JBoss 4.2.3."
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr "Pré- Requisitos"
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr "Para que se possa administrar as Transações JBoss, é necessário primeiro entender que elas baseiam-se no ArjunaCore, em muitas das funcionalidades da transação. Assim como, é importante ler o Guia Administrativo ArjunaCore antes de tentar administrar as Transações JBoss."
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr "Organização"
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr "Este guia contém o seguinte capítulo:"
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr "Capítulo 1 - Administração das Transações JBoss: descreve como administrar as Transações JBoss, basicamente selecionando a variante de implementação JTA, local limpo ou remoto (permitindo as transações distribuídas)."
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr "Documentação Adicional"
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr "Os seguintes guias estão disponíveis no conjunto de documentação das Transações JBoss API 4.2.3:"
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr "Notas de Liberação de Transações JBoss API 4.2.3: Fornece informações recentes sobre Transações JBoss API 4.2.3."
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr "Guia de Instalação de Transações JBoss API 4.2.3: Este guia fornece instruções para instalação de Transações JBoss API 4.2.3."
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr "Guia do Programador das Transações JBoss 4.2.3: Fornece instruções para aplicativos escritos."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/pt-BR/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Revision_History.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Revision_History\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-17 14:47+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr "<firstname></firstname> <surname></surname> <email></email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,30 @@
+# translation of Appendix.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-19 00:36+0000\n"
+"PO-Revision-Date: 2008-06-24 11:47+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr "修订记录"
+
+#. Tag: para
+#: Appendix.xml:10
+#, no-c-format
+msgid "<para>TBD</para>"
+msgstr "<para>TBD</para>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,36 @@
+# translation of Author_Group.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 10:36+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "FF0000 Headgear Documentation Group"
+msgstr "FF0000 Headgear Documentation Group"
+
+#. Tag: author
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+msgstr ""
+"<firstname>Dude</firstname> <surname>McDude</surname> <affiliation> "
+"<orgname>My Org</orgname> <orgdiv>Best Div in the place</orgdiv> </"
+"affiliation> <email>dude.mcdude at myorg.org</email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,44 @@
+# translation of Book_Info.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 10:38+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions API 4.2.3 Administration Guide"
+msgstr "JBoss Transactions API 4.2.3 管理员指南"
+
+#. Tag: subtitle
+#: Book_Info.xml:10
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss 企业级应用程序平台"
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the JBoss Enterprise Application Platform edition of the JBoss "
+"Transactions Administrators Guide"
+msgstr "本书是面向 JBoss 企业级应用程序平台的《JBoss Transactions 管理员指南》"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1040 @@
+# translation of Chapter.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-19 00:36+0000\n"
+"PO-Revision-Date: 2008-06-24 14:07+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the JBoss Transactions software. "
+"There are a few points however, that should be made:"
+msgstr ""
+"为了确保系统的正常运行,你需要对 JBoss Transactions 进行一点持续的管理。下面"
+"是一些需要注意的地方:"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"The present implementation of the JBoss TA system provides no security or "
+"protection for data. The objects stored in the JBoss Transactions object "
+"store are (typically) owned by the user who ran the application that created "
+"them. The Object Store and Object Manager facilities make no attempt to "
+"enforce even the limited form of protection that Unix/Windows provides. "
+"There is no checking of user or group IDs on access to objects for either "
+"reading or writing."
+msgstr ""
+"目前 JBoss TA 系统的实现没有提供安全性或对数据的保护。存储在 JBoss "
+"Transactions 的 object store 里的对象通常为运行创建这些对象的应用程序的用户所"
+"有。Object Store 和 Object Manager 机制甚至没有强制 Unix/Windows 所提供的有限"
+"的保护。对这些对象的读和写并不需要检查用户或组的 ID。"
+
+#. Tag: para
+#: Chapter.xml:13
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"StateManager.destroy method is invoked on the object or some application "
+"program explicitly deletes them. This means that the Object Store gradually "
+"accumulates garbage (especially during application development and testing "
+"phases). At present we have no automated garbage collection facility. "
+"Further, we have not addressed the problem of dangling references. That is, "
+"a persistent object, A, may have stored a Uid for another persistent object, "
+"B, in its passive representation on disk. There is nothing to prevent an "
+"application from deleting B even though A still contains a reference to it. "
+"When A is next activated and attempts to access B, a run-time error will "
+"occur."
+msgstr ""
+"除非调用 StateManager.destroy 方法或某个应用程序显性地进行删除,在 Object Store 里创建的持久性对象会永远存在。这意味着 "
+"Object Store 会逐渐地积累垃圾(特别是在程序开发和测试阶段)。目前我们还没有自动的垃圾回收机制。而且,我们也还没解决 dangling "
+"引用的问题:某个持久性对象 A,可能在其磁盘上的 passive representation 里存储了另外一个持久性对象 B 的 "
+"UID。应用程序有可能删除了 B,即使 A 仍然具有对其的引用。之后 A 被激活并试图访问 B 时,就会出现一个运行错误。"
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The JBoss Transactions software can "
+"neither detect nor correct references to old object state by new operation "
+"versions or vice versa."
+msgstr ""
+"目前没有对类结构改变时对象或数据库重配置的版本控制的支持。这是我们还没解决的一个复杂的研究领域。目前,如果你修改了持久性对象的类的定义,你需要完全负责确保 "
+"Object Store 里的现存实例转换成新的结构。JBoss Transactions 既不能检测也不能改正通过新的操作版本对旧的对象状态的引用,反之亦然。"
+
+#. Tag: para
+#: Chapter.xml:19
+#, no-c-format
+msgid "Object store management is critically important to the transaction service."
+msgstr "对于事务服务来说,Object store 的管理至关重要。"
+
+#. Tag: title
+#: Chapter.xml:24
+#, no-c-format
+msgid "ObjectStore management"
+msgstr "管理 ObjectStore "
+
+#. Tag: para
+#: Chapter.xml:25
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+"在事务访问安装里,只要有事务被创建或是用于 Java 的 Transactional Object 被使用,object store "
+"就会被更新。在无故障的环境里,唯一应该驻留在 object store 里的对象状态时那些代表用 Java API "
+"然而,如果发生了故障,事务日志可能保留在 object store 里,直到故障恢复机制已经恢复了它们所代表的事务。因此,删除 object store 的内容需要很小心和谨慎,这很重要,因为这会导致无法解决可疑的事务。此外,如果多个用户共享相同的 object store,他们也需明白这一点。他们不能假定 object store 里的内容是独占资源而简单地进行删除。"
+
+#. Tag: title
+#: Chapter.xml:28
+#, no-c-format
+msgid "JBoss Transactions runtime information"
+msgstr "JBoss Transactions 的运行信息"
+
+#. Tag: para
+#: Chapter.xml:29
+#, no-c-format
+msgid ""
+"Each module that comprises JBoss Transactions possesses a class called Info. "
+"These classes all provide a single toString method that returns an XML "
+"document representing the configuration information for that module. So, for "
+"example:"
+msgstr ""
+"组成 JBoss Transactions 的每个模块都拥有一个名为 info 的类。这些类都提供单一的 toString 方法来返回代表该模块的配置信息的 "
+"XML 文档。例如:"
+
+#. Tag: programlisting
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+msgstr ""
+"&lt;module-info name=\"arjuna\"&gt;\n"
+"        &lt;source-identifier&gt;unknown&lt;/source-identifier&gt;\n"
+"        &lt;build-information&gt;\n"
+"           Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+"        &lt;/build-information&gt;\n"
+"        &lt;version&gt;unknown&lt;/version&gt;\n"
+"        &lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;\n"
+"        &lt;notes&gt;&lt;/notes&gt;\n"
+"        &lt;configuration&gt;\n"
+"                &lt;properties-file dir=\"null\"&gt;arjuna.properties&lt;/"
+"properties-file&gt;\n"
+"                &lt;object-store-root&gt;null&lt;/object-store-root&gt;\n"
+"        &lt;/configuration&gt;\n"
+"&lt;/module-info&gt;"
+
+#. Tag: title
+#: Chapter.xml:34
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr "失效切换管理"
+
+#. Tag: para
+#: Chapter.xml:35
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions will ensure that "
+"results of a transaction are applied consistently to all resources affected "
+"by the transaction, even if any of the application processes or the machine "
+"hosting them crash or lose network connectivity. In the case of machine "
+"(system) crash or network failure, the recovery will not take place until "
+"the system or network are restored, but the original application does not "
+"need to be restarted – recovery responsibility is delegated to the Recovery "
+"Manager process (see below). Recovery after failure requires that "
+"information about the transaction and the resources involved survives the "
+"failure and is accessible afterward: this information is held in the "
+"ActionStore, which is part of the ObjectStore."
+msgstr ""
+"JBoss Transactions "
+"的失效切换子系统将确保在即使应用程序进程或主机崩溃或断开了网络连接的情况下,事务的结果都可以持续地应用到事务所影响的资源里。在主机(系统)崩溃或网络故障时,失效"
+"切换将直到系统或网络恢复时才进行,但原来的应用程序不需要重启 - 切换的责任委托给了 Recovery Manager "
+"进程(请参考下面内容)。失效切换要求和事务和资源相关的信息:这些信息保存在作为 ObjectStore 一部分的 ActionStore 里。"
+
+#. Tag: para
+#: Chapter.xml:38
+#, no-c-format
+msgid "If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr "如果 ObjectStore 被销毁或修改,失效切换有可能无法进行。"
+
+#. Tag: para
+#: Chapter.xml:41
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by “in-doubt transactions”. For TransactionalObjects for Java "
+"resources, an attempt to activate the Transactional Object (as when trying "
+"to get a lock) will fail."
+msgstr ""
+"直到失效切换过程完成之前,故障发生时正进行的事务所影响的资源都可能无法访问。对于数据库资源而言,可能出现表或行被“in-doubt "
+"transactions”锁定。对于用于 Java 资源的 TransactionalObjects,试图激活 Transactional "
+"Object(尝试获取锁)将失败。"
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr "Recovery Manager"
+
+#. Tag: para
+#: Chapter.xml:44
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of JBoss Transactions requires that the stand-"
+"alone Recovery Manager process be running for each ObjectStore (typically "
+"one for each node on the network that is running JBoss Transactions "
+"applications). The RecoveryManager file is located in the arjunacore jar "
+"file within the package <classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryManager</classname>. To start the Recovery Manager issue the "
+"following command:"
+msgstr ""
+"JBoss Transactions 的失效切换(failure recovery)子系统要求为每个 ObjectStore(通常是网络上的每个运行 "
+"JBoss Transactions 应用程序的节点)运行独立的 Recovery Manager 进程。RecoveryManager 文件位于 <"
+"classname>com.arjuna.ats.arjuna.recovery.RecoveryManager</classname> 包里的 "
+"arjunacore jar 中。要启动 Recovery Manager,你可以使用下面的命令:"
+
+#. Tag: command
+#: Chapter.xml:45
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+
+#. Tag: para
+#: Chapter.xml:46
+#, no-c-format
+msgid ""
+"If the <literal>-test</literal> flag is used with the Recovery Manager then "
+"it will display a “Ready” message when initialised, i.e.,"
+msgstr "如果使用了 <literal>-test</literal> 标签,它将在初始化时显示“Ready”信息,也就是:"
+
+#. Tag: command
+#: Chapter.xml:47
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+
+#. Tag: title
+#: Chapter.xml:50
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr "配置 Recovery Manager"
+
+#. Tag: para
+#: Chapter.xml:51
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the <filename>arjuna."
+"properties</filename> file and then also reads the property file "
+"<filename>RecoveryManager.properties</filename>, from the same directory as "
+"it found the arjuna properties file. An entry for a property in the "
+"RecoveryManager properties file will override an entry for the same property "
+"in the main TransactionService properties file. Most of the entries are "
+"specific to the Recovery Manager."
+msgstr ""
+"RecoveryManager 读取 <filename>arjuna.properties</filename> "
+"文件里定义的属性,然后读取相同目录下的属性文件 <filename>RecoveryManager.properties</filename>"
+"。RecoveryManager 属性文件里的条目将覆盖 TransactionService 属性文件里相同的条目。大多数条目都是 Recovery "
+"Manager 所专有的。"
+
+#. Tag: para
+#: Chapter.xml:52
+#, no-c-format
+msgid ""
+"A default version of <filename>RecoveryManager.properties</filename> is "
+"supplied with the distribution – this can be used without modification, "
+"except possibly the debug tracing fields (see below, Output). The rest of "
+"this section discusses the issues relevant in setting the properties to "
+"other values (in the order of their appearance in the default version of the "
+"file)"
+msgstr ""
+"本发行版本提供一个缺省的 <filename>RecoveryManager.properties</filename> 版本 - "
+"它无需修改就可以使用,除了一些调试跟踪的字段(请参考下面的 Output)。本节剩下的内容将讨论将属性设置为其他值所相关的问题(按照在缺省版本里出现的顺序)。"
+
+#. Tag: title
+#: Chapter.xml:54
+#, no-c-format
+msgid "Output"
+msgstr "Output"
+
+#. Tag: para
+#: Chapter.xml:55
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+"很可能安装将希望从 RecoveryManager 里获得某种形式的输出来提供发生恢复的记录。RecoveryManager 使用 Arjuna Common Logging Framework (CLF) 提供的日志跟踪机制,它提供了一个隐藏了现有的 logging API 如 Jakarta "
+"log4j 或 JDK 1.4 logging API 之间的差异的高级别的接口。CLF 通过 Apache "
+"Commons Logging 框架间接处理日志,其配置假定存在于该框架内。"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr "用 CLF 应用程序来调用 logger 对象的日志调用。Logger 可以使用日志级别来决定具体的日志信息。每个日志信息都有一个相关的日志级别来表示重要和紧急程度。日志级别可以是 DEBUG、INFO、WARN、 ERROR 和 FATAL。按整形值的顺序排列为:DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL。"
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr "CLF 提供按照定义的颗粒度过滤日志消息的扩展。这就是说,当 DEBUG 级别的日志消息被提供给 logger时,你可以指定其他的条件来决定是否启用这个日志消息。"
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr "只有启用了 DEBUG 级别且日志请求由应用程序专有的调试颗粒度执行时,才能应用这些条件。"
+
+#. Tag: para
+#: Chapter.xml:71
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr "被启用后,日志消息根据 3 个变量进行有条件地过滤:"
+
+#. Tag: para
+#: Chapter.xml:74
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, e.g., constructors or basic methods."
+msgstr "调试级别(Debugging level):DEBUG 级别的日志请求产生的地方,如构造函数或基本方法。"
+
+#. Tag: para
+#: Chapter.xml:77
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr "可见级别(Visibility level):产生调试信息的构造函数、方法等的可见性。"
+
+#. Tag: para
+#: Chapter.xml:80
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, e.g., the object store."
+msgstr "Facility code:例如产生调试信息的包或子模块,如 ObjectStore。"
+
+#. Tag: para
+#: Chapter.xml:83
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. JBoss Transactions uses the default Debugging level and the "
+"default Visibility level provided by CLF, but it defines its own Facility "
+"Code. JBoss Transactions uses the default level assigned to its logger "
+"objects (DEBUG). However, it uses the finer debugging features to disable or "
+"enable debug messages. Finer debugging values used by the JBoss Transactions "
+"are defined below:"
+msgstr ""
+"根据这些变量,CLF 定义了 3 个接口。特定的产品可以按照需要实现自己的类。JBoss Transactions 使用 CLF 提供的缺省 Debugging level 和 Visibility level,但它定义自己的 Facility "
+"Code。JBoss Transactions 使用分配给 logger 对象的缺省的级别(DEBUG)。然而,它使用 finer debugging 特征来禁用或启用调试消息。JBoss Transactions 使用的 finer debugging 值有:"
+
+#. Tag: para
+#: Chapter.xml:84
+#, no-c-format
+msgid ""
+"Debugging level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr "Debugging level – JBoss Transactions 使用 <classname>com.arjuna.common.util.logging.DebugLevel</classname> 类里定义的缺省值"
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"NO_DEBUGGING:  No diagnostics. A logger object assigned with this values "
+"discard all debug requests"
+msgstr "NO_DEBUGGING:  No diagnostics. 这个值分配的 Logger 对象丢弃所有的调试请求。"
+
+#. Tag: para
+#: Chapter.xml:90
+#, no-c-format
+msgid ""
+"FULL_DEBUGGING: Full diagnostics. A Logger object assigned with this value "
+"allows all debug requests if the facility code and the visibility level "
+"match those allowed by the logger."
+msgstr "FULL_DEBUGGING: Full diagnostics. 如果 facility code 和 the visibility level 符合 logger 所允许的值,这个值分配的 Logger 对象允许所有的调试请求。"
+
+#. Tag: para
+#: Chapter.xml:93
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr "其他的调试值有:"
+
+#. Tag: para
+#: Chapter.xml:96
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr "CONSTRUCTORS: Diagnostics from constructors."
+
+#. Tag: para
+#: Chapter.xml:99
+#, no-c-format
+msgid "DESTRUCTORS:  Diagnostics from finalizers."
+msgstr "DESTRUCTORS:  Diagnostics from finalizers."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid "FUNCTIONS:  Diagnostics from functions."
+msgstr "FUNCTIONS:  Diagnostics from functions."
+
+#. Tag: para
+#: Chapter.xml:108
+#, no-c-format
+msgid "OPERATORS:  Diagnostics from operators, such as equals."
+msgstr "OPERATORS:  Diagnostics from operators, such as equals."
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr "FUNCS_AND_OPS: Diagnostics from functions and operations."
+
+#. Tag: para
+#: Chapter.xml:114
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+
+#. Tag: para
+#: Chapter.xml:117
+#, no-c-format
+msgid "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+msgstr "TRIVIAL_FUNCS:  Diagnostics from trivial functions."
+
+#. Tag: para
+#: Chapter.xml:120
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+
+#. Tag: para
+#: Chapter.xml:123
+#, no-c-format
+msgid "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+msgstr "ALL_TRIVIAL:  Diagnostics from all trivial operations."
+
+#. Tag: para
+#: Chapter.xml:126
+#, no-c-format
+msgid ""
+"Visibility level – JBoss Transactions uses the default values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr "Visibility level – JBoss Transactions 使用 <classname>com.arjuna.common.util.logging.VisibilityLevel</classname> 类里定义的缺省值"
+
+#. Tag: para
+#: Chapter.xml:129
+#, no-c-format
+msgid "VIS_NONE:  No Diagnostic"
+msgstr "VIS_NONE:  No Diagnostic"
+
+#. Tag: para
+#: Chapter.xml:132
+#, no-c-format
+msgid "VIS_PRIVATE :  only from private methods."
+msgstr "VIS_PRIVATE :  only from private methods."
+
+#. Tag: para
+#: Chapter.xml:135
+#, no-c-format
+msgid "VIS_PROTECTED  only from protected methods."
+msgstr "VIS_PROTECTED  only from protected methods."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "VIS_PUBLIC   only from public methods."
+msgstr "VIS_PUBLIC   only from public methods."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "VIS_PACKAGE   only from package methods."
+msgstr "VIS_PACKAGE   only from package methods."
+
+#. Tag: para
+#: Chapter.xml:144
+#, no-c-format
+msgid "VIS_ALL:  Full Diagnostic"
+msgstr "VIS_ALL:  Full Diagnostic"
+
+#. Tag: para
+#: Chapter.xml:147
+#, no-c-format
+msgid ""
+"Facility Code – JBoss Transactions uses the following values defined in the "
+"class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>"
+msgstr "Facility Code – JBoss Transactions 使用 <classname>com.arjuna.common.util.logging.VisibilityLevel</classname> 类定义的下列值"
+
+#. Tag: para
+#: Chapter.xml:150
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+
+#. Tag: para
+#: Chapter.xml:156
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+
+#. Tag: para
+#: Chapter.xml:159
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+
+#. Tag: para
+#: Chapter.xml:162
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+
+#. Tag: para
+#: Chapter.xml:168
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr "FAC_GENERAL = 0x00000080 (general classes)."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+
+#. Tag: para
+#: Chapter.xml:174
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr "FAC_THREADING = 0x00002000 (threading classes)."
+
+#. Tag: para
+#: Chapter.xml:177
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+
+#. Tag: para
+#: Chapter.xml:180
+#, no-c-format
+msgid "FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr "FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+
+#. Tag: para
+#: Chapter.xml:183
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the JBoss Transactions module."
+msgstr "为了保证合适的输出,我们有必要在 <filename>CommonLogging.xml</filename> 文件里对一些调试属性进行更详细的设置,启用 JBoss Transactions 模块登记的日志信息。"
+
+#. Tag: para
+#: Chapter.xml:184
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the CommonLogging.xml, enables all debug "
+"messages related to the Crash Recovery protocol and issued by the JBoss "
+"Transactions module."
+msgstr ""
+"描述启动和 RecoveryManager 的定期行为的消息使用 INFO 级别的输出。如果需要其他调试跟踪信息,你应该设置更详细的调试级别。例如,下面 CommonLogging.xml 里的配置,启用了和 Crash Recovery 协议相关以及 JBoss "
+"Transactions 产生的所有调试信息。"
+
+#. Tag: programlisting
+#: Chapter.xml:186
+#, no-c-format
+msgid ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+msgstr ""
+"&lt;!-- Common logging related properties. --&gt;\n"
+"&lt;property\n"
+"  name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"  value=\"0x00000000\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;\n"
+"&lt;propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"  value=\"0xffffffff\"/&gt;"
+
+#. Tag: para
+#: Chapter.xml:189
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr "这里提供了两个 logger 对象,一个管理 I18N 消息而另外一个则处理其他消息。"
+
+#. Tag: para
+#: Chapter.xml:192
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr "把常规恢复消息设置为 INFO 级别允许 RecoveryManager 产生适度的报告。如果没有发生任何事情,它仅仅报告模块的定期登录。要禁用 Recovery Manager 提供的 INFO 消息,调试级别可以设为更高的 ERROR 级别。这表示 RecoveryManager 将只产生错误、警告或致命错误信息。"
+
+#. Tag: title
+#: Chapter.xml:196
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr "定期恢复"
+
+#. Tag: para
+#: Chapter.xml:197
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+"RecoveryManager 扫描 ObjectStore 以及信息的其他位置,寻找需要恢复的事务和资源。这个扫描和恢复过程由恢复模块来执行(实现 com.arjuna.ats."
+"arjuna.recovery.RecoveryModule 接口的类的实例),每个都负责特定类别的事务和资源。恢复模块使用 RecoveryManager 属性文件里找到的属性动态地进行加载。"
+
+#. Tag: para
+#: Chapter.xml:198
+#, no-c-format
+msgid ""
+"The interface has two methods: <literal>periodicWorkFirstPass</literal> and "
+"<literal>periodicWorkSecondPass</literal>. At an interval (defined by "
+"property <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname>), the RecoveryManager will call the first pass method on each "
+"property, then wait for a brief period (defined by property <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname>), then call the "
+"second pass of each module. Typically, in the first pass, the module scans "
+"(e.g. the relevant part of the ObjectStore) to find transactions or "
+"resources that are in-doubt (i.e. are part way through the commitment "
+"process). On the second pass, if any of the same items are still in-doubt, "
+"it is possible the original application process has crashed and the item is "
+"a candidate for recovery."
+msgstr ""
+"这个接口有两个方法:<literal>periodicWorkFirstPass</literal> 和 "
+"<literal>periodicWorkSecondPass</literal>。根据 <classname>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</"
+"classname> 属性定义的间隔,RecoveryManager 件将在每个属性上调用第一个 pass 方法,然后等待一段短暂的时间(由 <classname>com."
+"arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</classname> 属性定义)。通常,在第一个 pass 方法里,模块通过扫描(例如 ObjectStore 的相关部分)来发现可疑的事务和资源(也就是提交过程进行一部分)。在第二个 pass 方法里,如果任何相同的事务或资源仍然可疑,那么原来的应用程序就有可能已经崩溃,这些事务和资源就需要进行恢复。"
+
+#. Tag: para
+#: Chapter.xml:199
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> package) to check to see if the original process is still alive, "
+"and if the transaction is still in progress. The RecoveryManager only "
+"proceeds with recovery if the original process has gone, or, if still alive, "
+"the transaction is completed. (If a server process or machine crashes, but "
+"the transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+"RecoveryManager 试图恢复仍然在原来进程里进行的事务有可能会破坏一致性。因此,恢复模块使用一个机制(在 <classname>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</"
+"classname> 包里实现)来检查原来的进程是否仍然活动,且事务是否仍在进行。RecoveryManager 只在原始进程已经结束时才进行恢复,如果进程仍然活动,则在事务完成后进行。(如果服务器进程或主机崩溃了,但初始事务的基础仍然活动,事务也会完成并通常产生一个警告。RecoveryManager 也负责恢复这样的事务。)"
+
+#. Tag: para
+#: Chapter.xml:200
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the <literal>periodicRecoveryPeriod</"
+"literal>, <literal>recoveryBackoffPeriod</literal> and the length of time it "
+"takes to scan the stores and to attempt recovery of any in-doubt "
+"transactions found, for all the recovery modules. The recovery attempt time "
+"may include connection timeouts while trying to communicate with processes "
+"or machines that have crashed or are inaccessible (which is why there are "
+"mechanisms in the recovery system to avoid trying to recover the same "
+"transaction for ever). The total iteration time will affect how long a "
+"resource will remain inaccessible after a failure – "
+"<literal>periodicRecoveryPeriod</literal> should be set accordingly (default "
+"is 120 seconds). The <literal>recoveryBackoffPeriod</literal> can be "
+"comparatively short (default is 10 seconds) – its purpose is mainly to "
+"reduce the number of transactions that are candidates for recovery and which "
+"thus require a “call to the original process to see if they are still in "
+"progress"
+msgstr ""
+"设置合适的时间间隔显然很重要。重复时间将是 <literal>periodicRecoveryPeriod</"
+"literal>、<literal>recoveryBackoffPeriod</literal> 和所有恢复模块扫描 ObjectStore 并试图恢复可疑事务所需时间的总和。恢复时间可能包括试图和已经崩溃或无法访问的进程或主机通信所需的连接超时时间(这是为什么在恢复系统里有机制避免试图恢复相同的事务)。总共的重复时间将影响在发生故障后资源保持无法访问状态的时间 - <literal>periodicRecoveryPeriod</literal> 应该相应地进行设置(缺省是 120 秒)。<literal>recoveryBackoffPeriod</literal> 可以相对较短(缺省是 10 秒) - 它的目的主要是减少事务作为恢复备选对象的次数(这需要访问原始进程,检查事务是否仍在进行)。"
+
+#. Tag: para
+#: Chapter.xml:203
+#, no-c-format
+msgid ""
+"In previous versions of JBoss Transactions there was no contact mechanism, "
+"and the backoff period had to be long enough to avoid catching transactions "
+"in flight at all. From 3.0, there is no such risk."
+msgstr "JBoss Transactions 之前的版本里没有 contact 机制,你得把 backoff period 设置为足够久来避免缓存事务冲突。从 3.0 版本后,这不再是一个问题。"
+
+#. Tag: para
+#: Chapter.xml:206
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> interface) are supplied with "
+"JBoss Transactions, supporting various aspects of transaction recovery "
+"including JDBC recovery. It is possible for advanced users to create their "
+"own recovery modules and register them with the Recovery Manager. The "
+"recovery modules are registered with the RecoveryManager using properties "
+"that begin with “<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”. These will be invoked on each pass of the "
+"periodic recovery in the sort-order of the property names – it is thus "
+"possible to predict the ordering (but note that a failure in an application "
+"process might occur while a periodic recovery pass is in progress). The "
+"default Recovery Extension settings are:"
+msgstr ""
+"JBoss Transactions 提供了两个恢复模块(<classname>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</classname> 接口的实现),它们支持不同的事务恢复(包括 JDBC 恢复)。高级用户有可能创建自己的恢复模块并向 Recovery Manager 注册。恢复模块使用以“<classname>com.arjuna.ats.arjuna.recovery."
+"RecoveryExtension</classname>”开始的属性向 Recovery Manager 注册。它们将按照属性名称的顺序调用其定期恢复的 pass 方法(但请注意在定期恢复的 pass 方法运行时,可能会发生应用程序进程失效)。缺省的 Recovery Extension 设置是:"
+
+#. Tag: programlisting
+#: Chapter.xml:208
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = \n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"\n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = \n"
+"  com.arjuna.ats.txoj.recovery.TORecoveryModule"
+
+#. Tag: title
+#: Chapter.xml:211
+#, no-c-format
+msgid "Expired entry removal"
+msgstr "删除过期的条目"
+
+#. Tag: para
+#: Chapter.xml:212
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> "
+"interface. Implementations of this interface are loaded by giving the class "
+"name as the value of a property whose name begins with <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname>. The RecoveryManager calls the "
+"<command>scan()</command> method on each loaded Expiry Scanner "
+"implementation at an interval determined by the property <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname>. This value is "
+"given in hours – default is 12. An <classname>expiryScanInterval</classname> "
+"value of zero will suppress any expiry scanning. If the value as supplied is "
+"positive, the first scan is performed when RecoveryManager starts; if the "
+"value is negative, the first scan is delayed until after the first interval "
+"(using the absolute value)"
+msgstr ""
+"恢复子系统的操作将导致 ObjectStore 创建的某些条目在常规情况下不会被删除。RecoveryManager 里有一个工具可以扫描和删除那些很旧的的条目。<classname>com.arjuna.ats.arjuna.recovery.ExpiryScanner</classname> 接口的实现执行这种扫描和删除。这个实现通过把类名作为以 <classname>com.arjuna."
+"ats.arjuna.recovery.expiryScanner</classname> 开始的属性的值来加载。RecoveryManager 按照属性 <classname>com."
+"arjuna.ats.arjuna.recovery.expiryScanInterval</classname> 指定的时间间隔调用每个加载的 Expiry Scanner 实现的 <command>scan()</command> 方法。这个值以小时为单位 - 缺省为 12。零值的 <classname>expiryScanInterval</classname> 将忽略任何过期扫描。如果这个值为正值,RecoveryManager 启动时将执行第一次扫描;如果为负值,第一次扫描将直到第一个间隔(使用绝对值)后才发生。"
+
+#. Tag: para
+#: Chapter.xml:213
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr "扫描过期的条目类型包括:"
+
+#. Tag: para
+#: Chapter.xml:214
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses JBoss Transactions – they contain the "
+"information that allows the RecoveryManager to determine if the process that "
+"initiated the transaction is still alive, and what the transaction status "
+"is. The expiry time for these is set by the property <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname> (in hours "
+"– default is 12, zero means never expire). The expiry time should be greater "
+"than the lifetime of any single JBoss Transactions-using process."
+msgstr ""
+"TransactionStatusManager 条目:使用 JBoss Transactions 的每个应用程序进程创建的条目 - 它们包含允许 RecoveryManager 决定初始化事务的进程是否仍然活动、以及事务状态的信息。过期时间由属性 <classname>com.arjuna."
+"ats.arjuna.recovery.transactionStatusManagerExpiryTime</classname>(以小时为单位 - 缺省为 12,0 表示永不过期)设置。过期时间应该大于任何单个 JBoss Transactions-using 进程的生存时间。"
+
+#. Tag: para
+#: Chapter.xml:215
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr "Expiry Scanner 属性是:"
+
+#. Tag: programlisting
+#: Chapter.xml:217
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+msgstr ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager =\n"
+"  com.arjuna.ats.internal.ts.arjuna.recovery."
+"ExpiredTransactionStatusManagerScanner"
+
+#. Tag: title
+#: Chapter.xml:220
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr "错误和异常"
+
+#. Tag: para
+#: Chapter.xml:221
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr "本节将涵盖在事务行应用程序运行时可能抛出或报告的错误和异常类型,并给出可能的原因。"
+
+#. Tag: para
+#: Chapter.xml:224
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"<classname>OutOfMemoryError</classname>) and JBoss Transactions has "
+"attempted to do some cleanup (by running the garbage collector) before re-"
+"throwing the exception. This is probably a transient problem and retrying "
+"the invocation should succeed."
+msgstr ""
+"NO_MEMORY:应用程序已耗尽内存(抛出 <classname>OutOfMemoryError</classname>)且 JBoss "
+"Transactions 在重新抛出这个异常时已经试图进行清理(通过运行 garbage collector)。这可能是一个暂时的问题,重试应该能够成功。"
+
+#. Tag: para
+#: Chapter.xml:227
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr ""
+"com.arjuna.ats.arjuna.exceptions."
+"FatalError:表示事务系统必须关闭的错误已经发生。在抛出这个错误之前,服务将确保所有的事务都进行了回滚。如果捕获了这个异常,应用程序应该清理并退出。如果"
+"进行进一步尝试,可能会破坏应用程序的一致性。"
+
+#. Tag: para
+#: Chapter.xml:230
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr ""
+"com.arjuna.ats.arjuna.exceptions."
+"LicenceError:尝试以和当前许可证不一致的方式使用事务服务。事务服务将不会允许对现有的或新的事务进行进一步的行动。"
+
+#. Tag: para
+#: Chapter.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError:事务服务试图使用 object store "
+"时产生了错误。进一步的行动不被允许。"
+
+#. Tag: para
+#: Chapter.xml:236
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr "在失效切换的正常执行过程中,可能出现关于状态访问的 Object store 的警告。这是因为在相同的事务上执行多个并行的失效切换。它可以被忽略而无安全隐患。"
+
+#. Tag: title
+#: Chapter.xml:241
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr "选择 JTA 实现"
+
+#. Tag: para
+#: Chapter.xml:242
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr "目前可通过相同的接口访问两个 JTA 实现的变种。它们是:"
+
+#. Tag: para
+#: Chapter.xml:245
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the JBoss Transactions "
+"product."
+msgstr "纯本地的 JTA,它只允许执行非分布式的 JTA 事务。JBoss Transactions 产品里只有这个版本可用。"
+
+#. Tag: para
+#: Chapter.xml:248
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr "远程的,基于 CORBA 的 JTA,它允许执行分布式的 JTA 事务。它只在 ArjunaJTS 里可用且需要对 CORBA ORB 的支持。"
+
+#. Tag: para
+#: Chapter.xml:252
+#, no-c-format
+msgid ""
+"both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with JBoss Transactions."
+msgstr "这两种实现都和 JBoss Transactions 提供的事务性的 JDBC 驱动完全兼容。"
+
+#. Tag: para
+#: Chapter.xml:255
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr "要选择本地的 JTA 实现,你必须执行下面的步骤:"
+
+#. Tag: para
+#: Chapter.xml:258
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaTMImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</literal>."
+msgstr ""
+"确保属性 <literal>com.arjuna.ats.jta.jtaTMImplementation</literal> 被设置为 <literal>"
+"com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple<"
+"/literal>。"
+
+#. Tag: para
+#: Chapter.xml:261
+#, no-c-format
+msgid ""
+"make sure the property <literal>com.arjuna.ats.jta.jtaUTImplementation</"
+"literal> is set to <literal>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</literal>."
+msgstr ""
+"确保属性 <literal>com.arjuna.ats.jta.jtaUTImplementation</literal> 被设置为 <literal>"
+"com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple<"
+"/literal>。"
+
+#. Tag: para
+#: Chapter.xml:265
+#, no-c-format
+msgid ""
+"these settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr "这些设置都是这些属性的缺省值,如果使用本地实现的话,你不需要进行指定。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Feedback.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Feedback.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,43 @@
+# translation of Feedback.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-24 11:47+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "反馈"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""
+"如果你在本指南里发现了印刷错误,或者你有改进该手册的建议,我们希望听到你的声音!请提交报告到  <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> 并指明:产品:JBoss 企业级应用"
+"程序平台, 版本:<replaceable>&lt;version&gt;</replaceable>,组件:<emphasis>Doc</"
+"emphasis>。"
+"如果是改进本文档的建议,请尽量具体化;如果是其他错误,请指出章节号以及具体的内容"
+",这样我们就可以尽快改正。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/JBoss_Transactions_Administrators_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,131 @@
+# translation of Preface.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-16 11:05+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr "序言"
+
+#. Tag: title
+#: Preface.xml:14
+#, no-c-format
+msgid "What This Guide Contains"
+msgstr "本书包含的内容"
+
+#. Tag: para
+#: Preface.xml:15
+#, no-c-format
+msgid ""
+"The Administration Guide contains information on how to administer JBoss "
+"Transactions API 4.2.3."
+msgstr ""
+"《管理员指南》包含如何管理 JBoss "
+"Transactions API 4.2.3 的信息。"
+
+#. Tag: title
+#: Preface.xml:17
+#, no-c-format
+msgid "Audience"
+msgstr "读者"
+
+#. Tag: para
+#: Preface.xml:18
+#, no-c-format
+msgid ""
+"This guide is most relevant to engineers who are responsible for "
+"administration of JBoss Transactions API 4.2.3 installations."
+msgstr "本书面向负责 JBoss Transactions API 4.2.3 安装管理的工程师。"
+
+#. Tag: title
+#: Preface.xml:21
+#, no-c-format
+msgid "Prerequisites"
+msgstr "预备条件"
+
+#. Tag: para
+#: Preface.xml:22
+#, no-c-format
+msgid ""
+"In order to administer JBoss Transactions it is first necessary to "
+"understand that it relies on ArjunaCore for a lot of the transaction "
+"functionality. As such, it is important to read the ArjunaCore "
+"Administration Guide before attempting to administer JBoss Transactions."
+msgstr "为了管理 JBoss Transactions,你首先必须理解它的很多事务方面的功能依赖于 ArjunaCore。因此,在管理 JBoss Transactions 之前,先阅读《ArjunaCore 管理员指南》是很重要的。"
+
+#. Tag: title
+#: Preface.xml:25
+#, no-c-format
+msgid "Organization"
+msgstr "本书的结构"
+
+#. Tag: para
+#: Preface.xml:26
+#, no-c-format
+msgid "This guide contains the following chapters:"
+msgstr "本指南包含下面的章节:"
+
+#. Tag: para
+#: Preface.xml:29
+#, no-c-format
+msgid ""
+"Chapter 1, Administration of JBoss Transactions: describes how to administer "
+"JBoss Transactions, mainly by selecting the variant of JTA implementation: "
+"pure local or remote (allowing distributed transactions)."
+msgstr "第一章,JBoss Transactions 管理:描述如何使用不同的 JTA 实现来管理 JBoss Transactions:纯 local 或 remote 方式(允许分布式事务)。"
+
+#. Tag: title
+#: Preface.xml:34
+#, no-c-format
+msgid "Additional Documentation"
+msgstr "其他文档"
+
+#. Tag: para
+#: Preface.xml:35
+#, no-c-format
+msgid ""
+"In addition to this guide, the following guides are available in the JBoss "
+"Transactions API 4.2.3 documentation set:"
+msgstr ""
+"除了本指南外, JBoss "
+"Transactions API 4.2.3 的文档集里还有如下的文档:"
+
+#. Tag: para
+#: Preface.xml:38
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Release Notes: Provides late-breaking "
+"information about JBoss Transactions API 4.2.3."
+msgstr "JBoss Transactions API 4.2.3 发行注记:提供 JBoss Transactions API 4.2.3 的最新信息。"
+
+#. Tag: para
+#: Preface.xml:41
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Installation Guide: This guide provides "
+"instructions for installing JBoss Transactions API 4.2.3."
+msgstr "JBoss Transactions API 4.2.3 安装指南:提供 JBoss Transactions API 4.2.3 的安装说明。"
+
+#. Tag: para
+#: Preface.xml:44
+#, no-c-format
+msgid ""
+"JBoss Transactions API 4.2.3 Programmer’s Guide: Provides guidance for "
+"writing applications."
+msgstr "JBoss Transactions API 4.2.3 程序员指南:指导如何编写相关应用程序。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Administrators_Guide/zh-CN/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Revision_History.po to
+# Language zh-CN translations for JBoss_Transactions_Administrators_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Revision_History\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:49+0000\n"
+"PO-Revision-Date: 2008-06-24 11:43+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr "<firstname></firstname> <surname></surname> <email></email>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,13 @@
+#Makefile for Red Hat Documentation
+#Created by Jeff Fearn <jfearn at redhat.com>
+#Copyright Red Hat Inc. 2006
+
+XML_LANG	= en-US
+
+BRAND = JBoss
+
+#OTHER_LANGS	= de-DE es-ES fr-FR ja-JP pt-BR zh-CN
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/Makefile
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_A.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_A.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,702 @@
+# translation of Appendix_A.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_A\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-29 07:07+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr "Objektspeicher-Implementierungen"
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr "Der ObjectStore"
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr "In diesem Anhang sehen wir uns die verschiedenen Implementierungen des TxCore-Objektspeichers an und liefern Richtlinien dazu, wie andere Implementierungen erstellt und in eine Anwendung eingebunden werden können."
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+"Diese Release von JBossTS enthält mehrere verschiedene Implementierungen eines grundlegenden Objektspeichers. Jede dient einem bestimmten Zweck und ist hierfür optimiert. Alle Implementierungen sind vom "
+"<interface>ObjectStore</interface>-Interface abgeleitet. Dies definiert die Mindestoperationen, die bereitgestellt werden müssen, damit eine Objektspeicher-Implementierungen von JBossTS verwendet werden kann. Die standardmäßige Objektspeicher-Implementierungen kann durch  Einstellen der <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property>-Propertyvariablen "
+"auf einen der unten beschriebenen Werte zur Runtime außer Kraft gesetzt bzw. ersetzt werden."
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr ""
+"JBossTS Programmierer müssen in der Regel nicht direkt mit den Objektspeicher-Implementierungen interagieren außer dass sie sie erstellen (sogar das ist bei Verwendung des Standard-Speichertyps nicht nötig, da JBossTS die Speicher wie nötig erstellt). Alle Speicher manipulieren Instanzen der Klasse <classname>ObjectState</classname>, die mittels eines Typs "
+"(via der type()-Operation des Objekts) und einer Uid benannt werden. Für Zwecke atomischer Aktionen können Objektstati im Speicher zwei verschiedene Stati unterscheiden: "
+"OS_COMMITTED und OS_UNCOMMITTED. Ein Objektstatus beginnt mit dem OS_COMMITTED "
+"Status, aber es kann bei Modifizierung unter Kontrolle einer atomischen Aktion ein zweiter, nämlich der OS_UNCOMMITTED Status geschrieben werden. Wird die Aktion festgeschrieben, so ersetzt dieser zweite Status den ursprünglichen und wird zu OS_COMMITTED. Wird die Aktion abgebrochen, so wird dieser zweite Status einfach verworfen. Alle in dieser Release bereitgestellten Implementierungen handhaben diese Statusänderungen indem sie Schattenkopien der Objektstati verwenden, "
+"jedoch ist jede andere Implementierung, die diese Abstraktion pflegt erlaubt. Unter Kontrolle des Crash Recovery Systems können Objektstati verborgen (\"hidden\") sein (wodurch nicht mehr auf sie zugegriffen werden kann)."
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+"Sie können die Inhalte eines Stores mittels der "
+"<methodname>allTypes</methodname> und <methodname>allObjUids</methodname>-Operationen durchsuchen. <methodname>allTypes</methodname> liefert einen "
+"<type>InputObjectState</type> der alle Typennamen aller Objekte in einem Store enthält, terminiert durch einen Null-Namen. <methodname>allObjUids</methodname> liefert einen <type>InputObjectState</type>, der alle Uids aller Objekte eines gegebenen Typs liefert, terminiert durch die Sonder-"
+"<methodname>Uid.nullUid()</methodname>."
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr "Persistente Objektspeicher"
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr "Dieser Abschnitt liefert einen kurzen Überblick über die Charakteristika und Optimierungen jeder der verfügbaren Implementierungen des persistenten Objektspeichers. Persistente Objekt-Stati werden auf die Struktur des Dateisystems gemappt, das durch das Host-Betriebssystem unterstützt wird."
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr "Gängige Funktionalität"
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr "Zusätzlich zu den bereits zuvor erwähnten Features folgen alle gelieferten persistenten Objektspeicher folgenden Regeln:"
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr "Jeder Objektstatus wird in seiner eigenen Datei gespeichert, die unter Verwendung der <code>Uid</code> des Objekts benannt wird."
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr "Der Typ eines Objekts (wie durch die <methodname>type()</methodname>-Operation angegeben) bestimmt das Verzeichnis, in dem das Objekt platziert wird."
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr "Alle diese Stores besitzen ein gemeinsames Root-Verzeichnis, das bei der Konfiguration von JBossTS festgelegt wird. Dieser Verzeichnisname wird aller Store-spezifischen Root-Information automatisch vorangestellt."
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr "Alle Speicher besitzen auch die Idee eines lokalisierten Root-Verzeichnisses, dem zur Bestimmung des endgültigen Objektnamens automatisch der Objekttyp vorangestellt wird. Der lokalisierte Root-Name wird festgelegt, wenn der Speicher erstellt wird. In der Statndardeinstellung lautet der lokalisierte Root-Name <code>defaultStore</code>."
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr "Der Schattenspeicher"
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr "Dies ist die ursprüngliche Version des Objektspeichers wie sie in vorherigen Releases bereitgestellt wurde und sie wird durch die Klasse <classname>ShadowingStore</classname> implementiert. Es ist einfach aber langsam. Zur Repräsentation des Objekts werden zwei Dateipaare verwendet (die Schattenversion und die festgeschriebene Version) und Dateien werden geöffnet, gesperrt, bearbeitet, entsperrt und geschlossen, jedesmal wenn es zu einer Interaktion mit dem Objektspeicher kommt. Daher können signifikante Mengen an Zeit im System mit dem Öffnen, Schließen und Umbenennen von Dateien verbracht werden, Vorgängen also die alle sehr aufwendig sind."
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr "Wird die Objektspeicher-Implementierung außer Kraft gesetzt, so ist der Typ dieses Objektspeichers <type>ShadowingStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr "Kein Sperren auf Dateiebene"
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+"Da transaktionale Objekte durch "
+"<methodname>LockManager</methodname> Nebenläufigkeitskontrolle unterliegen, ist es nicht notwendig auf Dateiebene weitere Sperren hinzuzufügen, da die grundlegende Implementierung des ShadowingStore "
+"diesen Zweck erfüllt. Die standardmäßige Objektspeicherimplementierung für JBossTS, <methodname>ShadowNoFileLockStore</methodname> hängt daher vom Sperren auf Benutzerebene ab. Dies führt zu einer besseren Performance als dies bei der "
+"<methodname>ShadowingStore</methodname>-Implementierung der Fall ist."
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr "Wird die Objektspeicher-Implementierung außer Kraft gesetzt, so ist der Typ dieses Objektspeichers <type>ShadowNoFileLockStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr "Der \"gehashte\" Speicher"
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "Der <code>HashedStore</code> besitzt dieselbe Struktur für Objektstati wie die Schattenspeicher, besitzt jedoch eine alternative Verzeichnisstruktur, die besser dafür geeignet ist, große Mengen an Objekten deselben Typs zu speichern. Bei der Verwendung sind gespeicherte Objekte auf einem Satz von Verzeichnisses verteilt durch Anwendung einer Hashing-Funktion zur Uid des Objekts. Standardmäßig werden 255 Unterverzeichnisse verwendet. Dies lässt sich jedoch durch Einstellen der <code>HASHED_DIRECTORIES</code>-Umgebungsvariablen entsprechend außer Kraft setzen."
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr "Wird die Objektspeicher-Implementierung außer Kraft gesetzt, so ist der Typ dieses Objektspeichers <type>HashedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+"Da transaktionale Objekte durch "
+"<methodname>LockManager</methodname> Nebenläufigkeitskontrolle unterliegen, ist es nicht notwendig auf Dateiebene weitere Sperren hinzuzufügen, da die grundlegende Implementierung des ShadowingStore "
+"diesen Zweck erfüllt. Die standardmäßige Objektspeicher-Implementierung für JBossTS, <methodname>ShadowNoFileLockStore</methodname> hängt daher vom Sperren auf Benutzerebene ab. Dies führt zu einer besseren Performance als dies bei der "
+"<methodname>ShadowingStore</methodname>-Implementierung der Fall ist."
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "Der <code>HashedStore</code> besitzt dieselbe Struktur für Objektstati wie die Schattenspeicher, besitzt jedoch eine alternative Verzeichnisstruktur, die besser dafür geeignet ist, große Mengen an Objekten deselben Typs zu speichern. Bei der Verwendung sind gespeicherte Objekte auf einem Satz von Verzeichnisses verteilt durch Anwendung einer Hashing-Funktion zur Uid des Objekts. Standardmäßig werden 255 Unterverzeichnisse verwendet. Dies lässt sich jedoch durch Einstellen der <code>HASHED_DIRECTORIES</code>-Umgebungsvariablen entsprechend außer Kraft setzen."
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr "Der JDBC-Store"
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr "Der <methodname>JDBCStore</methodname> verwendet eine JDBC-Datenbank zur Speicherung persistenter Objektstati; wenn zusammen mit den transaktionalen Objekten für Java API verwendet, ist Support für verschachtelte Transaktionen verfügbar. Bei der aktuellen Implementierung werden alle Objektstati als \"Binary Large Objects\" (BLOBs) innerhalb derselben Tabelle gespeichert. Die durch BLOBs vorgegebene Größe für den Objektstatus beträgt 64k; beim Versuch einen Objektstatus zu speichern, der diese Größe überschreitet, wird ein Fehler gemeldet und der Status nicht gespeichert. Anschließend wird das Zurücksetzen der Transaktion erzwungen."
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+"Wird der JDBC-Objektspeicher verwendet, so muss die Anwendung eine Implementierung des folgenden Interface liefern, das sich im <code>com.arjuna."
+"ats.arjuna.objectstore</code>-Paket befindet:"
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr ""
+"Die Implementierung dieser Klasse ist verantwortlich dafür, dass die "
+"<emphasis>Verbindung</emphasis> bereitgestellt wird, die der JDBC ObjectStore zur Speicherung und Wiederherstellung von Objekt-Stati verwenden wird:"
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr "<methodname>getConnection</methodname>: liefert die zu verwendende Verbindung. Diese Methode wird aufgerufen, wenn eine Verbindung benötigt wird und die Implementierung die notwendige Richtlinie zur Bestimmung welche Verbindung wiedergegeben werden soll verwenden soll. Diese Methode muss nicht mehr als einmal dieselbe Verbindungsinstanz wiedergeben."
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr "<methodname>putConnection</methodname>: diese Methode wird aufgerufen, um eine der durch getConnection erhaltenen Verbindungen wiederzugeben. Verbindungen werden wiedergegeben, wenn bei deren Verwendung Fehler auftreten."
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr "<methodname>initialise</methodname>: kann zur Weitergabe zusätzlicher arbiträrer Informationen an die Implementierung verwendet werden."
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+"Der JDBC-Objektspeicher wird anfangs die Anzahl der in der <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property>-Property definierten Verbindungen anfragen und wird nicht mehr als in der <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property>-Property festgelegt verwenden."
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr ""
+"Die Implementierung des zu verwendenden <interfacename>JDBCAccess</interfacename>-Interface sollte in der <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property>-Property-Variablen eingestellt werden."
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr "Wird die Objektspeicher-Implementierung außer Kraft gesetzt, so ist der Typ dieses Objektspeichers <type>JDBCStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+"Ein JDBC Object Store kann zum managen des Transaktionsprotokolls verwendet werden. In diesem Fall sollte die Implementierung des Transaktionsprotokolls auf <property>JDBCActionStore</property> eingestellt sein und die <methodname>JDBCAccess</"
+"methodname>-Implementierung muss über die <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property>-Property-Variable geliefert werden. In diesem Fall lautet der Standard-Tabellenname JBossTSTxTable."
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr "Es ist möglich diesselbe JDBCAccess-Implementierung sowohl für den Benutzer-Objektspeicher als auch das Transaktionsprotokoll zu verwenden."
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr "Der \"gecachte\" Speicher"
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr ""
+"Dieser Objektspeicher wird im \"gehashten\" Objektspeicher verwendet, schreibt und liest Stati aber nicht sofort in den persistenten Sicherheitsspeicher (\"backing Store\"). Die Stati bleiben in einem "
+"selbstlöschenden Speicher-Cache, das entweder periodisch oder wenn voll bereinigt wird. Die mit diesem Objektspeicher assoziierte Fehlfunktionssemantik unterscheidet sich von normalen Objektspeichern, da eine Fehlfunktion zu einem Verlust der Stati im Cache führen kann."
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr "Wird die Objektspeicher-Implementierung außer Kraft gesetzt, so ist der Typ dieses Objektspeichers <type>CachedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr "Der Store kann mit den folgenden Properties konfiguriert werden:"
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> setzt die Anzahl interner Speicher, zu denen die Stati gecacht werden sollen. Der Standardwert beträgt 128."
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> ist die maximale Größe, die das Cache erreichen kann, ehe eine Bereinigung ausgelöst wird. Der Standard sind 10240 Bytes."
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> ist die maximale Anzahl entfernter Posten, die das Cache enthalten kann, ehe eine Bereinigung ausgelöst wird. Standardmäßig werden Aufrufe zur Entfernung eines Status in diesem Cache entweder den Status aus dem Cache entfernen, aber eine leere Stelle hinterlassen (statt den Eintrag sofort zu entfernen, was die Performance des Cache beeinflussen würde). Wenn ausgelöst, werden diese Einträge aus dem Cache entfernt. Der Standardwert beträgt das Doppelte des \"Hash\"."
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> ist die maximale Postenzahl auf die das Cache anwachsen darf, ehe eine Bereinigung stattfindet. Der Standardwert ist 100."
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> setzt die Zeit in Millisekunden für die periodische Bereinigung des Caches. Der Standardwert beträgt 120 Sekunden."
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> legt fest, ob Bereinigungen des Cache mit der Disk synchronisiert werden. Die Standardeinstellung lautet OFF. Um dies zu aktivieren setzen Sie diese Einstellung auf ON."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_B.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Appendix_B.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,503 @@
+# translation of Appendix_B.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_B\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-29 07:09+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr "Klassendefinitionen"
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr "Dieser Anhang enthält eine Übersicht derjenigen Klassen, die der Anwendungsprogrammierer in der Regel benutzt. Ziel dieses Anhangs ist es, ein schnell zu überblickendes Referenzhandbuch für diese Klassen beim Schreiben von Anwendungen in TxCore zu liefern. Zur besseren Klarheit werden nur die öffentlichen und geschützten Interfaces der Klassen angegeben."
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr "Klassenbibliothek"
+
+#. Tag: title
+#: Appendix_B.xml:17
+#, no-c-format
+msgid "Lock Manager"
+msgstr "Sperr-Manager"
+
+#. Tag: screen
+#: Appendix_B.xml:20
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:22
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: screen
+#: Appendix_B.xml:25
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:27
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr "Input/OutputObjectState"
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:32
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr "Input/OutputBuffer"
+
+#. Tag: screen
+#: Appendix_B.xml:35
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr "<title>Uid</title>"
+
+#. Tag: screen
+#: Appendix_B.xml:40
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:42
+#, no-c-format
+msgid "AtomicAction"
+msgstr "AtomicAction"
+
+#. Tag: screen
+#: Appendix_B.xml:45
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Author_Group.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-05 10:05+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr "Red Hat Dokumentationsgruppe"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# translation of Book_Info.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-29 09:34+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss TS Programmers Guide"
+msgstr "JBoss TS Handbuch für Programmierer"
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise SOA Platform"
+msgstr "JBoss Enterprise SOA Plattform"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr ""
+"Dieses Buch ist die Enterprise Application Platform Edition des JBoss TS "
+"Handbuchs für Programmierer"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1014 @@
+# translation of Chapter.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-28 20:01+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr "Ãœbersicht"
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr ""
+"Dieses Kapitel enthält eine Beschreibung der Verwendung der <classname>TxCore</classname> Transaction-Engine und der <firstterm>Transactional Objects for "
+"Java</firstterm> Klassen und Facilities. Die in diesem Kapitel erwähnten Klassen sind der Schlüssel zum Schreiben von fehlertoleranten Anwednugen unter Verwendung von Transkationen. Daher wollen wir sie nachdem wir sie beschrieben haben bei der Erstellung einer einfachen Applikation anwenden. Die in diesem Kapitel beschriebenen Klassen "
+"finden Sie in den <classname>com.arjuna.ats.txoj</classname> und "
+"<classname>com.arjuna.ats.arjuna</classname> Paketen."
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr "TxCore – die Transaction-Engine"
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr "Bei der objektorientierten Ansicht mussten die zur Konstruktion zuverlässiger distribuierter Anwendungen nötigen Mechanismen dem Programmierer auf objektorientierte Weise präsentiert werden. Einige Mechanismen müssen vererbt werden, so etwa Nebenläufigkeitskontrolle und Status-Management; andere Mechanismen wie Objektspeicherung und Transaktionen werden als <classname>TxCore</classname>-Objekte implementiert und wie jedes andere Objekt erstellt und manipuliert."
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+"Wenn im Handbuch die Rede von der Verwendung von \"Facilities\" zur Persistenz und Nebenläufigkeitskontrolle ist, so wird von der Verwendung der Klassen von <emphasis>Transaktionalen Objekten für Java</"
+"emphasis> (TXOJ) ausgegangen. Ist dies nicht der Fall, so ist der Programmierer für alle diese Aspekte verantwortlich."
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr "<classname>TxCore</classname> nutzt objektorientierte Techniken, um Programmierern ein Toolkit von Java-Klassen zu bieten, von dem Anwendungsklassen erben können um gewünschte Properties zu erhalten, wie etwa Persistenz und Nebenläufigkeitskontrolle. Diese Klassen bilden eine Hierarchie von der ein Teil unten dargestellt ist und später in diesem Dokument beschrieben wird."
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr "Txcore-Klassenhierarchie"
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr ""
+"Abgesehen vom Festlegen der Bereiche der Transaktionen und des Setzens entsprechender Sperren innerhalb von Objekten, hat der Programmierer keine weiteren Verantwortlichkeiten: <classname>TxCore</classname> und <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) stellen sicher, dass transaktionale Objekte bei den entsprechenden Transaktionen registriert und durch diese betrieben werden und dass Crash-Recovery Mechanismen bei Fehlfunktionen automatisch aufgerufen werden."
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr "Objekt-Stati speichern"
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+"<classname>TxCore</classname> muss aus verschiedenen Gründen dazu in der Lage sein, sich an den Status eines Objekts - darunter auch Recovery (der Status repräsentiert einen vergangenen Status des Objekts) und Persistenz (der Status repräsentiert den endgültigen Status eines Objekts zum Zeitpunkt der Beendigung der Anwendung) - zu erinnern. Da diese Anforderungen gemeinsame Funktionalitäten besitzen, werden sie alle unter Verwendung desselben Mechanismus implementiert: die Klassen <classname>InputObjectState</classname> und <classname>OutputObjectState</classname>. Die Klassen warten ein internes Array, in das unter Verwendung der entsprechenden <command>pack</command> (<command>unpack</"
+"command>) Operationen durchgängig Instanzen des Standard-Typs gepackt (entpackt) werden. Die Größe dieses Zwischenspeichers wird automatisch und wie erforderlich angepasst, falls nicht ausreichend Platz verfügbar ist. Sämtliche Instanzen werden in einem Standardformular (die sogenannte \"Network Byte Order\") im Zwischenspeicher gespeichert, damit sie unabhängig von der verwendeten Maschine sind. Jedes andere architekturunabhängige Format (wie XDR "
+"oder ASN.1) könnte einfach implementiert werden, indem die Operationen durch die der benötigten Codierung entsprechende ersetzt werden."
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr "Der Objektspeicher (\"Object Store\")"
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr ""
+"Implementierungen von Persistenz können von durch den Java SecurityManager gemachten Einschränkungen betroffen sein. Der mit "
+"<classname>TxCore</classname> gelieferte Objektspeicher (\"Object Store\") ist daher unter Verwendung von Techniken von Interface/Implementierung implementiert. Die aktuelle Distribution besitzt Implementierungen, die Objekt-Stati in das lokale Dateisystem oder Datenbank schreiben und Remote-Implementierungen, bei denen das Interface einen Client-Stub (Proxy) bei Remote-Diensten verwendet."
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr "Persistenten Objekten werden eindeutige Bezeichner zugewiesen (Instanzen der Uid-Klasse), wenn sie erstellt werden und dies wird verwendet, um sie innerhalb des Object Store zu identifizieren. Stati werden unter Verwendung der <literal>read_committed</literal>-Operation gelesen und mittels <literal>write_(un)committed</literal>-Operationen geschrieben."
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr "Wiederherstellung (\"Recovery) und Persistenz"
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+"Die Root der Klassenhierarchie ist die Klasse <classname>StateManager</"
+"classname>. Diese Klasse ist für Objektaktivierung und -deaktivierung sowie Objekt-Recovery zuständig. Die vereinfachte Signatur der Klasse lautet:"
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr "Ein Objekt kann drei verschiedene Formen haben. Es kann einfach wiederherstellbar sein, in welchem Falle der <classname>StateManager</classname> versuchen wird, die entsprechenden Recovery-Informationen für das Objekt zu generieren und zu warten. Die Lebensdauer solcher Objekte überschreitet nicht diejenige des Anwendungsprogramms, das sie erstellt. Objekte können wiederherstellbar und persistent sein, in welchem Fall die Lebensdauer des Objekts als größer als die der erstellenden oder zugreifenden Anwendung angenommen wird, so dass neben der Wartung der Recovery-Informationen der <classname>StateManager</classname> versucht einen eventuell vorhandenen persistenten Status für das Objekt durch Aufruf der \"activate\" (\"deactivate\") Operation zu entsprechenden Zeiten automatisch zu laden (löschen). Zu guter letzt kann das Objekt auch keine dieser Fähigkeiten besitzen, in welchem Fall keine Recovery-Informationen aufbewahrt werden und die Objektaktivierung bz!
 w. -deaktivierung nie automatisch versucht wird. "
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Ist ein Objekt wiederherstellbar oder wiederherstellbar und persistent so ruft <classname>StateManager</classname> die Operationen "
+"<command>save_state</command> (während der Durchführung von <command>deactivate</command>) und <command>restore_state</command> (während der Durchführung von activate) an verschiedenen Punkten während der Ausführung der Anwendung auf. Diese Operationen müssen vom Programmierer "
+"implementiert werden, da <classname>StateManager</"
+"classname> Statusänderungen auf Benutzerebene nicht aufspüren kann. (Wir prüfen die automatische Generierung von standardmäßigen <command>save_state</command> und "
+"<command>restore_state</command> Operationen, die es dem Programmierer erlauben, dies außer Kraft zu setzen, wenn anwendungsspezifisches Wissen eingesetzt werden kann, um die Effizienz zu erhöhen). Dies verleiht dem Programmierer die Möglichkeit zu entscheiden, welche Teile des Status eines Objekts persistent gemacht werden sollten. Für eine Tabellenkalkulation ist es möglicherweise nicht notwendig alle Einträge zu speichern, wenn einige der Werte einfach erneut berechnet werden können. Die <command>save_state</command>-Implementierung für eine Klasse "
+"<classname>Example</classname>, die ganzzahlige Teilvariablen namens A, B und C besitzt, könnte einfach wie folgt lauten:"
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr ""
+"Ein Objekt kann drei verschiedene Formen haben. Es kann einfach <emphasis>wiederherstellbar</emphasis> sein, in welchem Falle der <classname>StateManager</classname> versuchen wird, die entsprechenden Recovery-Informationen für das Objekt zu generieren und zu warten. Die Lebensdauer solcher Objekte überschreitet nicht diejenige des Anwendungsprogramms, das sie erstellt. Objekte können <emphasis>wiederherstellbar und persistent</emphasis> sein, in welchem Fall die Lebensdauer des Objekts als größer als die der erstellenden oder zugreifenden Anwendung angenommen wird, so dass neben der Wartung der Recovery-Informationen der <classname>StateManager</classname> versucht einen eventuell vorhandenen persistenten Status für das Objekt durch Aufruf der <classname>activate</classname> (<classname>deactivate</"
+"classname>) Operation zu entsprechenden Zeiten automatisch zu laden (löschen). Zu guter letzt kann das Objekt auch keine dieser Fähigkeiten besitzen, in welchem Fall keine Recovery-Informationen aufbewahrt werden und die Objektaktivierung bzw. -deaktivierung nie automatisch versucht wird."
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Ist ein Objekt <emphasis>wiederherstellbar</emphasis> (recoverable) oder <emphasis>wiederherstellbar und persistent</emphasis> so ruft der <classname>StateManager</classname> die Operationen <command>save_state</command> (während "
+"<command>deactivate</command> durchgeführt wird) und <command>restore_state</command> (während <command>activate</command> durchgeführt wird) an verschiedenen Punkten während der Ausführung der Anwendung auf. Diese Operationen müssen durch den Programmierer implementiert werden, das der <classname>StateManager</classname> Statusänderungen auf Benutzerebene nicht auffinden kann. (Wir prüfen die automatische Generierung von Standard <classname>save_state</classname> und <classname>restore_state</classname> Operationen, die es dem Programmierer gestatten, dies außer Kraft zu setzen, wenn applikationsspezifisches Wissen zur Verbesserung der Effizienz eingesetzt werden kann). Dies gibt dem Programmierer die Möglichkeit zu entscheiden, welche Teile des Status eines Objekts persistent gemacht werden sollten. Für eine Tabellenkalkulation etwa ist es vielleicht nicht notwendig alle Einträge zu speichern, wenn bestimmte Werte einfach erneut berechnet werden können. Die !
 <classname>save_state</classname>-Implementierung für eine Klasse "
+"<classname>Example</classname>, die ganzzahlige Teilvariablen namens A, B und C besitzt, könnte einfach wie folgt lauten:"
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+"Es ist für alle <command>save_state</command> und "
+"<command>restore_state</command>-Methoden notwendig, <classname>super.save_state "
+"</classname>und <classname>super.restore_state</classname> aufzurufen. Dadurch sollen Crash-Recovery-Mechanismen unterstützt werden."
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr "Der Lebenszyklus eines transaktionalen Objekts für Java"
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+"Man geht davon aus, dass ein nicht in Gebrauch befindliches persistentes Objekt in einem <emphasis>passiven</emphasis>-Status gehalten wird, wobei dessen Status sich in einem Objektspeicher befindet und auf Abruf <emphasis>aktiviert</emphasis> wird. Der fundamentale Lebenszyklus eines persistenten Objekts in <emphasis>TXOJ</emphasis> ist in <xref linkend="
+"\"figure_2\"/> dargestellt."
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr "Der Lebenszyklus eines persistenten Objekts."
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr "Das Objekt ist ursprünglich passiv und wird als eine Instanz der Klasse <classname>OutputObjectState</classname> im Objektspeicher gespeichert."
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr "Wenn durch eine Anwendung erforderlich, wird das Objekt automatisch aktiviert, indem es durch einen <command>read_committed</command>-Vorgang aus dem Speicher gelesen und dann durch den <command>restore_state</command>-Vorgang von einer <classname>InputObjectState</classname>-Instanz in ein vollwertiges Objekt konvertiert wird."
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr ""
+"Ist die Anwendung mit dem Objekt fertig, so wird dieses durch Rückkonvertierung in eine <classname>OutputObjectState</classname>-Instanz "
+"mittels der <command>save_state</command>-Operation deaktiviert, und wird dann mittels write_uncommitted als \"Schattenkopie\" "
+"in den Objektspeicher gespeichert. Diese Schattenkopie kann festgeschrieben werden, in dem die vorangegangene Version mittels "
+"<command>commit_state</command>-Operation festgeschrieben wird. Die Existenz von Schattenkopien wird normalerweise durch das Transaktionssystem vor dem Programmierer verborgen. Objekt-Deaktivierung erfolgt normalerweise nur dann, wenn die Transaktion der höchsten Ebene, innerhalb derer das Objekt aktiviert wurde, festgeschrieben wird."
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr "Während seiner Lebensdauer kann ein persistentes Objekt viele Male aktiv und wieder passiv gemacht werden."
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr "Der Nebenläufigkeits-Controller"
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr ""
+"Der Nebenläufigkeits-Controller wird durch die Klasse "
+"<classname>LockManager</classname> implementiert, die ein vernünftiges Standardverhalten liefert und dem Programmierer gleichzeitig gestattet dieses außer Kraft zu setzen, falls es aufgrund der bestimmten Semantik der programmierten Klasse erforderlich sein sollte. Wie mit <classname>StateManager</classname> und Persistenz, wird auch auf die Implementierungen der Nebenläufigkeitssteuerung über Interfaces zugegriffen. Neben Zugriff auf Remote-Dienste beinhalten die aktuellen Implementierungen von für Interfaces verfügbare Nebenläufigkeitssteuerung:"
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr "lokale Disk/Datenbank Implementierung, bei der Sperren persistent gemacht werden, indem sie in das lokale Datensystem oder die Datenbank geschrieben werden."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr "eine rein lokale Implementierung, bei der Sperren innerhalb des Speichers der sie erstellenden virtuellen Maschine gewartet werden; diese Implemetierung bietet eine bessere Performance als wenn Sperren auf die lokale Disk geschrieben werden, aber Objekte können nicht zwischen virtuellen Maschinen geteilt werden. Wichtig ist, dass es sich um ein einfaches Java-Objekt handelt ohne durch den SecurityManager beeinflussbare Anforderungen"
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr "Das primäre Programmierer-Interface zum Nebenläufigkeitskontroller ist über die \"setlock\"-Operation. Standardmäßig erzwingt das Runtime-System strikte zwei-Phasen Sperren nach einer \"multiplen Reader\", \"single Writer\" Richtlinie auf pro Objekt Basis. Wie jedoch in <xref linkend=\"figure_1\"/> gezeigt ist es für Programmierer durch Vererbung von der <classname>Lock</classname>-Klasse möglich, ihre eigene Sperrimplementierung mit anderen Sperrkonfliktregeln bereitzustellen, um die <firstterm>type specific concurrency control</firstterm> zu aktivieren."
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "Sperrerwerb ist (notwendigerweise) unter Programmiererkontrolle, da ebenso wie <classname>StateManager</classname> nicht bestimmen kann ob eine Operation ein Objekt verändert <classname>LockManager</classname> nicht bestimmen kann, ob eine Operation eine Lese- oder Schreibsperre benötigt. Die Freigabe der Sperre (Lock Release) jedoch ist unter Kontrolle des Systems und erfordert kein weiteres Eingreifen durch den Programmierer. Dies stellt sicher, dass die zwei-Phasen Property ordnungsgemäß gewartet werden kann."
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+"Die <classname>LockManager</classname>-Klasse ist primär verantwortlich für die Verwaltung von Anfragen zum Setzen"
+"einer Sperre oder dem Lösen einer Sperre an einem Objekt . Da sie jedoch vom <classname>StateManager</classname> abgeleitet ist, kann sie außerdem steuern, wo einige der vererbten Facilities aufgerufen werden. Zum Beispiel geht <classname>LockManager</classname> davon aus, dass das Setzen einer Schreibsperre voraussetzt, dass die aufrufende Operation im Begriff ist das Objekt zu modifizieren. Dies wiederum kann dazu führen, dass Recovery-Information gespeichert werden, falls es sich um ein wiederherstellbares Objekt handelt. Auf ähnliche Weise führt der erfolgreiche Erwerb einer Sperre dazu, dass \"activate\" aufgerufen wird."
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid "The code below shows how we may try to obtain a write lock on an object:"
+msgstr "Der Code unten zeigt, wie wir versuchen können, eine Sperre an einem Objekt zu erhalten:"
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr "Die Transaktionsprotokoll-Engine (\"Transaction Protocol Engine\")"
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr ""
+"Die Transaktionsprotokoll-Engine wird durch die "
+"<classname>AtomicAction</classname>-Klasse repräsentiert, die den "
+"<classname>StateManager</classname> verwendet, um ausreichende Informationen für Crash-Recovery Mechanismen zu speichern, um die Transaktion im Falle von Fehlfunktionen zu beenden. Sie besitzt Methoden zum Starten und Beenden der Transaktion sowie - für jene Situationen, in denen Programmierer ihre eigenen Ressourcen implementieren müssen - Methoden, um diese bei der aktuellen Transaktion zu registrieren. Da <emphasis>TxCore</emphasis> Sub-Transaktionen unterstützt, ist eine innerhalb einer bereits vorhandenen Transaktion begonnene Transaktion automatisch verschachtelt."
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr "<emphasis>TxCore</emphasis> ist multipler Threads gewahr und erlaubt jedem Thread innerhalb einer Anwendung eine Transaktion zu teilen oder innerhalb seiner eigenen Transaktion auszuführen. Daher sind alle <emphasis>TxCore</emphasis>-Klassen auch Thread-sicher."
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr "Beispiel"
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr "Das einfache Beispiel unten illustriert die Beziehungen zwischen Aktivierung (activation), Terminierung (termination) und Festschreibung (commitment):"
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr "Die Ausführung des obigen Codes beinhaltet die folgende Sequenz von Aktivitäten:"
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr ""
+"Das Erstellen von Bindings zu persistenten Objekten; dies könnte die Erstellung von Stub-Objekten sowie einen Aufruf an Remote-Objekte beinhalten. Im Beispiel oben an ein bestehendes, durch <literal>Name-A</"
+"literal> identifiziertes Objekt und ein neues persistentes Objekt ein erneutes Binding hergestellt wird."
+"Ein Namensgebungssystem für Remote-Objekte wartet das Mapping zwischen Objektnamen und Speicherorten und wird in einem späteren Kapitel beschrieben."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr "Start der atomischen Transaktion."
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr "Aufrufe von Operationen: Als Teil eines bestimmten Aufrufs ist die Objektimplementierung verantwortlich dafür sicherzustellen, dass im Lese- oder Schreibmodus eine Sperre existiert (vorausgesetzt es existiert kein Sperrkonflikt) und dass falls nötig eine Initialisierung mit dem letzten festgeschriebenen Status aus dem Objektspeicher stattfindet. Beim erstmaligen Sperrerwerb an einem Objekt innerhalb einer Transaktion wird der Status des Objekts falls möglich aus dem Objektspeicher eingeholt."
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr "Festschreiben der Action der höchsten Ebene. Dies beinhaltet die Aktualisierung des Status bearbeiteter Objekte im Objektspeicher."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr "Auflösen der zuvor erstellten Bindings."
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr "Die Klassenhierarchie"
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr "Die wichtigsten Klassen, aus denen die Hierarchieklasse <emphasis>TxCore</emphasis> besteht, sind unten abgebildet."
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+"Programmierer fehlertoleranter Anwendungen werden in erster Linie mit den Klassen <classname>LockManager</classname>, <classname>Lock</classname> und <classname>AtomicAction</classname> zu tun haben. Andere für Programmierer wichtige Klassen sind <classname>Uid</classname>, und <classname>ObjectState</classname>. Die meisten <emphasis>TxCore</emphasis>-Klassen sind von der Grundklasse <classname>StateManager</classname> abgeleitet, die einfachste Facilities zum managen persistenter und wiederherstellbarer Objekte bereitstellt. Diese beinhalten Support für die Aktivierung und Deaktivierung von Objekten und statusbasierte Objekt-Recovery. Die Klasse <classname>LockManager</classname> verwendet die Facilities von <classname>StateManager</classname> und "
+"<classname>Lock</classname> um die Nebenläufigkeitskontrolle bereitzustellen (zwei-Phasen Sperre in der aktuellen Implemetierung), die für die Implementierung der Serialisierbarkeits-Property von atomischen Aktionen erforderlich ist. Die Implementierung von Facilities von atomischen Aktionen wird durch <classname>AtomicAction</classname> und "
+"<classname>TopLevelTransaction</classname> unterstützt."
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr "Die meisten <emphasis>TxCore</emphasis>-Systemklassen sind von der Grundklasse <classname>StateManager</classname> abgeleitet, die einfachste Facilities zum managen persistenter und wiederherstellbarer Objekte bereitstellt. Diese beinhalten Support für die Aktivierung und Deaktivierung von Objekten und statusbasierte Objekt-Recovery. Die Klasse <classname>LockManager</classname> verwendet die Facilities von <classname>StateManager</classname> und liefert die Nebenläufigkeitskontrolle, die für die Implementierung der Serialisierbarkeits-Property von atomischen Aktionen erforderlich ist."
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+"Nehmen wir ein einfaches Beispiel. Gehen wir davon aus, dass <classname>Example</classname> eine benutzerdefinierte persistente Klasse ist, entsprechend vom <classname>LockManager</classname> abgeleitet. Eine Anwendung, die eine atomische Transaktion Trans enthält, greift auf ein Objekt (genannt O) von Typ <classname>Example</"
+"classname> durch Aufruf von Operation op1 zu, welches zu Statusänderungen an O führt. "
+"Die Serialisierbarkeits-Property erfordert es, dass eine Schreibsperre an O erworben werden muss, ehe es modifiziert wird; daher sollte der Körper von op1 einen Aufruf an die "
+"<literal>setlock</literal>-Operation des Nebenläufigkeitskontrollers enthalten:"
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr "Die durch die <classname>LockManager</classname>-Klasse bereitgestellte <literal>setlock</literal>-Operation, führt in diesem Fall die folgenden Funktionen durch:"
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid "Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr "Prüfung der Schreibsperrenkompatibilität (\"write lock\") mit aktuell vorhandenen Sperren, und falls erlaubt:"
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+"Rufen Sie das <classname>StateManager</classname>-Operation \"activate\" auf, das den aktuellsten persistenten Status von O aus dem Objektspeicher lädt, falls nicht bereits der Fall. Rufen Sie dann die <classname>StateManager</classname>-Operation \"modified\" auf, die eine Instanz von entweder <classname>RecoveryRecord</classname> oder <classname>PersistenceRecord</classname> für O erstellen, je nachdem, ob O persistent war oder nicht (die Sperre ist eine <literal>WRITE</literal>-Sperre, daher muss der alte Status des Objekt vor der Modifizierung gespeichert werden) und in die "
+"<classname>RecordList</classname> von <classname>Trans</classname> eingefügt werden."
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr "Erstellen und Einfügen einer LockRecord-Instanz in der Trans-RecordList."
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+"Nehmen wir jetzt an, dass die Aktion <literal>Trans</literal> einige Zeit, nachdem die Sperre erworben wurde, abgebrochen wird. Dann bearbeitet die Zurücksetz-Operation (Rollback) von "
+"<classname>AtomicAction</classname> die mit <literal>Trans</literal> assoziierte<classname>RecordList</classname>-Instanz durch  Aufrufen einer entsprechenden <literal>Abort</literal>-Operation an den verschiedenen Einträgen. Die Implementierung dieser Operation durch die <classname>LockRecord</classname>-Klasse löst die <literal>WRITE</literal>-Sperre, während "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> den vorherigen Status von O wiederherstellt."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr ""
+"Es ist wichtig, sich dessen bewusst zu sein, dass die oben genannten Arbeiten automatisch von <emphasis>TxCore</emphasis> für den Anwendungsprogrammierer durchgeführt werden. Der Programmierer muss die Transaktion lediglich starten und eine entsprechende Sperre setzen; <emphasis>TxCore</emphasis> und <emphasis>Transactional "
+"Objects for Java</emphasis> kümmern sich um die Teilnehmerregistrierung, Persistenz, Nebenläufigkeitskontrolle und Recovery."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_02.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_02.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1793 @@
+# translation of Chapter_02.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_02\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-28 21:34+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr "Verwendung von TxCore"
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr ""
+"In diesem Abschnitt beschreiben wir <emphasis>TxCore</emphasis> und "
+"<emphasis>Transaktionale Objekte für Java</emphasis> ausführlicher und zeigen, wie dies für die Konstruktion transaktionaler Anwendungen verwendet werden kann."
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr "Status-Management"
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr "Objekt-Stati"
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+"<emphasis>TxCore</emphasis> muss aus verschiedenen Gründen in der Lage sein, sich an den Status eines Objekts zu erinnern, darunter Recovery (der Status repräsentiert einige vergangene Stati des Objekts) und für Persistenz (der Status repräsentiert den letzten Status eines Objekts bei Terminierung der Anwendung). Da alle diese Anforderungen eine gemeinsame Funktionalität benötigen, werden sie "
+"unter Verwendung desselben Mechanismus implementiert - der Klassen <classname>Input/OutputObjectState</classname> "
+"und <classname>Input/OutputBuffer</classname>."
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr "OutputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr "InputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr ""
+"Die <classname>Input/OutputBuffer</classname>-Klasse pflegt einen internen Array, in dem Instanzen der Standard-Javatypen mittels der Pack- (Entpack-) Operationen zusammen "
+"gepackt (entpackt) werden können. Die Größe dieses Zwischenspeichers wird automatisch angepasst wie erforderlich, falls kein ausreichender Platz vorhanden sein sollte. Die Instanzen werden alle in einem Standardformular in einem Zwischenspeicher gespeichert (sogenannte \"Network Byte\"-Reihenfolge), um sie rechnerunabhängig zu machen."
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr "OutputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr "InputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr "Die Klasse <classname>Input/OutputObjectState</classname> liefert die gesamte Funktionalität von <classname>Input/OutputBuffer</classname> (durch Vererbung) aber fügt zwei zusätzliche Instanzvariablen hinzu, die die Uid und den Typ von Objekt für den die <classname>Input/OutputObjectState</classname>-Instanz ein komprimiertes Abbild ist, kennzeichnen. Diese werden beim Zugriff auf den Objektspeicher während Speicherung und Abruf des Objektstatus verwendet."
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr "Der Object Store"
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr "Der mit <emphasis>TxCore</emphasis> gelieferte Objektspeicher besitzt absichtlich ein relativ eingeschränktes Interface, damit er auf vielfältige Weise implementiert werden kann. Die Objektspeicher werden im \"shared Memory\" implementiert; im Unix Dateisystem (in mehreren verschiedenen Formen); und als von Remote aus zugreifbaren Speicher. Vollständigere Informationen zu den in <emphasis>TxCore</emphasis> verfügbaren Objektspeichern finden Sie im Anhang."
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr "Wie mit allen <emphasis>TxCore</emphasis>-Klassen sind die standardmäßigen Objektspeicher reine Java-Implementierungen; um auf das \"shared Memory\" und andere komplexere Objektspeicher-Implementierungen zuzugreifen ist die Verwendung nativer Methoden nötig."
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+"Alle Objektspeicher enthalten und rufen Instanzen der Klasse "
+"<classname>Input/OutputObjectState</classname> ab. Diese Instanzen werden durch die Uid und Typ von Objekt, den sie repräsentieren benannt. Stati werden mittels der <command>read_committed</command>-Operation gelesen und vom System mittels <command>write_uncommitted</command>-Operation geschrieben. Unter normaler Operation überschreiben "
+"neue Objekt-Stati alte Objekt-Stati nicht, sondern werden als Schattenkopien geschrieben. Diese Schattenkopien ersetzen die ursprünglichen nur wenn die <command>commit_state</command>-Operation aufgerufen wird. Normalerweise wird sämtliche Interaktion mit dem Objektspeicher durch <emphasis>TxCore</emphasis>-Systemkomponente wie erforderlich durchgeführt, obwohl das Vorhandensein von Schattenversionen von Objekten im Speicher dem Programmierer verborgen bleiben."
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+"Wird ein transaktionales Objekt festgeschrieben, so ist es notwendig bestimmte Statusänderungen zu persistieren, damit es im Falle einer Fehlfunktion wiederhergestellt werden kann und dann entweder weiter festgeschrieben oder aber zurückgesetzt werden kann. Bei Verwendung "
+"<emphasis>Transaktionaler Objekte für Java</emphasis>, kümmert sich <emphasis>TxCore</emphasis> automatisch um dies. Um ACID-Properties zu garantieren, müssen diese Statusänderungen in die Persistenzspeicher-Implementierung bereinigt werden, ehe die Transaktion mit der Festschreibung fortfahren kann;"
+"ist dies nicht der Fall, so könnte die Anwendung annehmen, dass die Transaktion festgeschrieben wurde, wenn tatsächlich innerhalb des Betriebssystem-Caches noch Statusänderungen vorhanden sein könnten, die bei einer späteren Fehlfunktion des Rechners verloren gehen könnten. Standardmäßig stellt <emphasis>TxCore</emphasis> sicher, dass solche Statusänderungen bereinigt werden."
+"Allerdings kann dies signifikante Performance-Nachteile bei der Applikation mit sich bringen. Um transaktionale Bereinigungen des Objektstatus zu vermeiden, setzen Sie die "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal>-Variable auf OFF."
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr "Auswahl einer Objektspeicher-Implementierung"
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+"<emphasis>TxCore</emphasis> wird mit Support für mehrere verschiedene Objektspeicher-Implementierungen geliefert. Der Anhang beschreibt diese Implementierungen, wie eine bestimmte Implementierung auf pro Objekt Basis gewählt und konfiguriert wird (mittels der <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal>-Property-Variablen) und gibt außerdem an, wie zusätzliche Implementierungen geliefert werden können."
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr ""
+"Die <emphasis>TxCore</emphasis>-Klasse <classname>StateManager</classname> "
+"managt den Status eines Objekts und liefert alle grundlegenden Support-Mechanismen die von einem Objekt zu Status-Management Zwecken benötigt werden."
+"Der <classname>StateManager</classname> ist verantwortlich für das Erstellen und Registrieren entsprechender Ressourcen, die mit der Persistenz und Wiederherstellung des transaktionalen Objekts zu tun haben. Ist eine Transaktion verschachtelt, so pflanzt der "
+"<classname>StateManager</classname> diese Ressourcen zum Festschreibungszeitpunkt auch zwischen unter- und übergeordneten Transaktionen fort."
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr ""
+"Bei Objekten in <emphasis>TxCore</emphasis> wird von drei möglichen Grundtypen ausgegangen. Sie können einfach wiederherstellbar sein, in welchem Fall der "
+"<classname>StateManager</classname> versuchen wird, die entsprechenden Wiederherstellungsinformationen für das Objekt zu generieren und zu warten (wie Instanzen der Klasse "
+"<classname>Input/OutputObjectState</classname>). Die Lebensdauer solcher Objekte überschreitet diejenige des Anwendungsprogramms, das sie erstellt hat, nicht."
+"Objekte können wiederherstellbar und persistent sein, in welchem Fall davon ausgegangen wird, dass die Lebensdauer "
+"höher als die der erstellenden oder zugreifenden Anwendung ist, weswegen außer der Wartung von Wiederherstellungsinformationen der "
+"<classname>StateManager</classname> versuchen wird, einen existierenden persistenten Status für das Objekt durch Aufruf der <command>activate</command> (<command>deactivate</command>) Operation zu entsprechenden Zeiten zu laden (entfernen). Desweiteren können Objekte auch keine dieser Fähigkeiten besitzen, in welchem Fall keine Wiederherstellungsinformationen aufbewahrt werden und auch keine Aktivierungs-/Deaktivierungsversuche automatisch stattfinden. Diese Objekt-Property wird zum Konstruktionszeitpunkt des Objekts gewählt und kann danach nicht mehr geändert werden. Ein Objekt kann daher Wiederherstellungsfähigkeiten nicht zu irgendeinem zufälligen Zeitpunkt während seiner Lebensdauer gewinnen (oder verlieren)."
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+"Ist ein Objekt wiederherstellbar (oder persistent) dann ruft <classname>StateManager</classname> die Operationen <command>save_state</command> (während der Durchführung von <command>deactivation</command>), <command>restore_state</"
+"command> (während der Durchführung von \"activate\") und \"type\" an verschiedenen Punkten der Anwendungsausführung auf. Diese Operationen müssen vom Programmierer implementiert werden, da der <classname>StateManager</classname> keinen Zugriff auf eine Runtime-Beschreibung des Layout eines arbiträren Java-Objekts im Speicher besitzt und daher keine Standardrichtlinie für die Konvertierung der gespeicherten Version in deren passive Form implementieren kann. Die durch <classname>Input/OutputObjectState</classname> bereitgestellten Möglichkeiten jedoch machen diese Vorgehensweisen recht einfach. Die <command>save_state</command>-Implementierung für eine Klasse <classname>Example</classname>, die Teilvariablen namens A, B und C besitzt, könnte einfach wie folgt lauten:"
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"Um Crash-Recovery für persistente Objekte zu unterstützen ist es notwendig, dass alle <command>save_state</command> und <command>restore_state</command>-Methoden von Benutzerobjekten <command>super.save_state</command> und "
+"<command>super.restore_state</command> aufrufen."
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr "Die Typenmethode wird zur Bestimmung des Speicherorts im Objektspeicher verwendet, an dem der Status von Instanzen dieser Klasse gespeichert und schließlich wiederhergestellt wird. Es kann sich dabei um einen gültigen String handeln. Sie sollten es aber vermeiden, das Rautenzeichen (#) zu verwenden, da dieses für bestimmte Verzeichnisse reserviert ist, die <emphasis>TxCore</emphasis> benötigt."
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr "Die <command>get_uid</command>-Operation von <classname>StateManager</classname> liefert schreibgeschützten (\"read only\") Zugriff auf den internen Systemname eines Objekts für welchen Zweck ihn der Programmierer benötigt (wie die Registrierung des Namens in einem Name-Server). Der Wert des internen Systemnamens kann nur gesetzt werden, wenn das Objekt erstmals erstellt wird - entweder durch Bereitstellen eines expliziten Parameters oder durch Generierung eines neuen Bezeichners wenn das Objekt erstellt wird."
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr "Die <command>destroy</command>-Methode kann zum Entfernen des Objektstatus aus dem Objektspeicher verwendet werden. Es handelt sich dabei um eine atomische Operation, und daher wird der Status nur entfernt, wenn die Transaktion der höchsten Ebene, innerhalb derer der Aufruf erfolgt, festgeschrieben wird. Der Programmierer muss vor dem Aufruf dieser Operation exklusiven Zugriff auf das Objekt erlangen."
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr ""
+"Da Objektwiederherstellung und Persistenz besitzen komplementäre Voraussetzungen (der einzige Unterschied besteht im Speicherort der Statusinformationen und deren Zweck) kombiniert der <classname>StateManager</classname> effektiv das Management dieser beiden Properties in einen einzelnen Mechanismus. "
+"Das heißt er verwendet Instanzen des Klassen Input/OutputObjectState sowohl zu Wiederherstellungs- als auch zu Persistenzzwecken. Ein zusätzliches an die <command>save_state</command> und <command>restore_state</command> Operationen gegebenes Argument gestattet es dem Programmierer, den Zweck für einen jeweiligen Aufruf zu bestimmen, wodurch unterschiedliche Informationen für Wiederherstellungs- und Persistenzzwecke gespeichert werden."
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr "Objektmodelle"
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr "<emphasis>TxCore</emphasis> unterstützt zwei Modelle für Objekte, die Einfluss auf die Implementierung des Status und der Nebenläufigkeitskontrolle eines Objekts haben, wie wir noch zeigen werden:"
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr "<termdef>SINGLE</termdef>: Nur ein einziges Exemplar des Objekts existiert innerhalb der Anwendung; dieses befindet sich innerhalb einer einzelnen JVM, und alle Clients müssen ihre Aufrufe an diesen Server richten. Dieses Modell bietet eine bessere Performance, aber stellt auch einen einzelnen Fehlfunktionspunkt dar, was in einer mehr-threadigen Umgebung das Objekt nicht vor Korrumpierung schützt, wenn ein einzelner Thread fehlschlägt."
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr "Einzelobjektmodell (Single Object Model)"
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr "MULTIPLE: Logisch existiert eine einzelne Instanz des Objekts, aber Kopien derselben werden über verschiedene JVMs distribuiert; die Performance dieses Modells ist schlechter als beim SINGLE-Modell, aber es bietet bessere Isolation bei Fehlfunktionen."
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr "Multiples Objektmodell"
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr ""
+"Das Standardmodell ist SINGLE. Der Programmierer kann dies auf einer pro Objekt Basis außer Kraft setzen, indem er eine passende Instanz der <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname>-Klasse bei der Objektkonstruktion bereitstellt."
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr "Das Modell kann in jeder nachfolgenden Instantiierung des Objekts geändert werden, d.h. es muss nicht während der gesamten Lebensdauer des Objekts dasselbe bleiben."
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr "Um eine passende <classname>ObjectName</classname>-Klasse bereitzustellen ist es notwendig, folgende Schritte durchzuführen:"
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr "eine neue Instanz von <classname>ObjectName</classname> erstellen."
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+"das Objekt-Modellattribut mittels <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal>-Name einstellen."
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr "Zum Beispiel:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+"Zusammendfassend kann man sagen, dass die <emphasis>TxCore</emphasis>-Klasse <classname>StateManager</"
+"classname> den Status eines Objekts managt und alle durch ein Objekt zum Zweck des Status-Management benötigten, grundlegenden Support-Mechanismen liefert. Einige Operationen müssen vom Entwickler der Klasse definiert werden. Diese Operationen sind: "
+"<command>save_state</command>, <command>restore_state</command> und "
+"<command>type</command>."
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr "boolean save_state (OutputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+"Immer dann aufgerufen, wenn der Status eines Objekts für mögliche zukünftige Verwendung gespeichert werden sollte - primär zu Wiederherstellungs- und Persistenzzwecken. Der "
+"<literal>ObjectType</literal>-Parameter gibt den Grund dafür an, warum "
+"<command>save_state</command> durch <emphasis>TxCore</emphasis> aufgerufen wurde. "
+"Dies gestattet es dem Programmierer verschieden Teile von Informationen im "
+"<classname>OutputObjectState</classname> zu speichern bereitgestellt als erster Parameter und in Abhängigkeit davon, ob der Status für Wiederherstellungs- oder Persistenzzwecke benötigt wird. Verweise (Pointers) auf andere <emphasis>TxCore</emphasis>-Objekte könnten einfach als Verweise für Wiederherstellungszwecke gespeichert werden, aber als Uids für Persistenzzwecke. Wie bereits gezeigt liefert die <classname>OutputObjectState</classname>-Klasse praktische Operationen, die das Speichern von Instanzen aller Grundtypen in Java gestatten. Um Crash-Recovery für persistente Objekte zu unterstützen ist es notwendig, dass alle <command>save_state</command>-Methoden <command>super.save_state</command> aufrufen."
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr "<command>save_state</command> geht davon aus, dass ein Object intern konsistent ist und alle gespeicherten Variablen feste Werte haben. Es obliegt der Verantwortung des Programmierers sicherzustellen, dass dies auch tatsächlich der Fall ist."
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr "boolean restore_state (InputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr ""
+"Immer dann aufgerufen, wenn der Status eines Objekts für den bereitgestellten wiederhergestellt werden muss. Wieder gestattet der zweite Parameter unterschiedliche Interpretationen des bereitgestellten Status. Um Crash-Recovery für persistente Objekte bereitzustellen ist es notwendig, dass alle <command>restore_state</command>-Methoden "
+"<command>super.restore_state</command> aufrufen."
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr "String Typ ()"
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+"Der <emphasis>TxCore</emphasis>-Persistenzmechanismus erfordert einen Weg der Bestimmung des Typs eines Objekte als String damit er den Status des Objekts in/aus dem Object Store speichern/wiederherstellen kann. Der Konvention nach zeigt diese Information die Position der Klasse in der Hierarchie an. Zum Beispiel “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr "Beispiel"
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr "Sehen Sie sich folgende grundlegende, von der <classname>StateManager</classname>-Klasse abgeleitete <classname>Array</classname>-Klasse an (in diesem Beispiel wird zur Illustrierung des Speicherns und Wiederherstellens des Status eines Objekts die highestIndex-Variable verwendet, um das höchste Element des Array mit nicht-Null Wert im Auge zu behalten):"
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr ""
+"Die <command>save_state</command>, <command>restore_state</command> und "
+"<command>type</command>-Operationen können wie folgt definiert werden:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr "Sperr-Management und Nebenläufigkeitskontrolle"
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr ""
+"Nebenläufigkeitskontrollinformationen innerhalb von <emphasis>TxCore</emphasis> werden durch Sperren gewartet. Zwischen Objekten in verschiedenen Prozessen geteilte Sperren können innerhalb eines Sperrspeichers aufbewahrt werden, ähnlich wie in der zuvor vorgestellten Objektspeichereinrichtung. Der mit "
+"<emphasis>TxCore</emphasis> gelieferte Sperrspeicher besitzt mit Absicht ein relativ eingeschränktes Interface, so dass er auf vielfältige Weise implementiert werden kann. Zum Beispiel werden Sperrspeicher im geteilten Speicher implementiert; im Unix-Dateisystem (in mehreren verschiedenen Formen); und als per Remote zugänglicher Speicher. Weitere Informationen zu verfügbaren Objektspeichern in <emphasis>TxCore</emphasis> finden Sie im Anhang (Appendix)."
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr "Wie bei allen <emphasis>TxCore</emphasis>-Klassen handelt es sich bei den standardmäßigen Sperrspeichern um reine Java-Implementierungen; um auf den freigegebenen Speicher und andere komplexere Sperrspeicher-Implementierungen zuzugreifen, müssen native Methoden verwendet werden."
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr "Auswahl einer Sperrspeicher-Implementierung (\"lock store\")"
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+"<emphasis>TxCore</emphasis> bietet Support für mehrere verschiedene Objektspeicher-Implementierungen. Falls das verwendete Objektmodell SINGLE ist, so wird zur Wartung von Sperren kein Sperrspeicher benötigt, da Informationen über das Objekt nicht exportiert werden. Wird jedoch das MULTIPLE-Modell verwendet kann es sein, das verschiedene Run-time Umgebungen (Prozesse, Java Virtual Machines) sich die Nebenläufigkeitskontrollinformationen teilen müssen. Der Implementierungstyp von zu verwendendem Sperrspeicher kann für alle Objekte innerhalb einer bestimmten Ausführungsumgebung mittels <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal>-Property Variablen festgelegt werden. Derzeit sind folgende Werte möglich:"
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr "BasicLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr "Hierbei handelt es sich um eine Implementierung im Speicher, die nicht standardmäßig die Freigabe gespeicherter Informationen zwischen Ausführungsumgebungen gestattet. Der Anwendungsprogrammierer ist für die Freigabe der gespeicherten Informationen verantwortlich."
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr "BasicPersistentLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+"Dieses ist die Standard-Implementierung und speichert die Sperrinformationen innerhalb des lokalen Dateisystems. Ausführungsumgebungen, die denselben Dateispeicher besitzen können also auch Informationen zur Nebenläufigkeitskontrolle teilen. Root des Dateisystems in das die Sperrinformationen geschrieben werden ist das <filename>LockStore</filename>-Verzeichnis innerhalb des <emphasis>TxCore</emphasis>-Installationsverzeichnisses. Dies kann zur Runtime entsprechend durch Einstellen der <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal>-Propertyvariablen außer Kraft gesetzt werden oder aber durch Platzieren des Speicherorts im <literal>CLASSPATH</literal>:"
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr "<para>oder</para>"
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr "Wird keine dieser Vorgehensweisen unternommen, so ist der Standard-Speicherort auf derselben Ebene wie das <filename>etc</filename>-Verzeichnis der Installation."
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr "LockManager"
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr ""
+"Der Nebenläufigkeits-Controller wird durch den "
+"<classname>LockManager</classname> implementiert, der ein vernünftiges Standardverhalten liefert und dem Programmierer gleichzeitig gestattet dieses außer Kraft zu setzen, falls durch die bestimmte Semantik der programmierten Klasse erforderlich. Das primäre Programmierer-Interface für den Nebenläufigkeits-Controller ist via der Setlock-Operation. Standardmäßig erzwingt das <emphasis>TxCore</emphasis> Runtime-System strenges zwei-Phasen Sperren nach einem multiplen Reader, \"single writer\" Richtlinie auf einer pro Objekt Basis. Die Sperr-Erfassung obliegt der Kontrolle des Programmierers, da <classname>LockManager</classname> ebenso wenig bestimmen kann, ob eine Operation eine Lese- oder Schreibsperre benötigt, wie der <classname>StateManager</classname> bestimmen kann, ob eine Operation ein Objekt modifiziert. Die \"Lock-Release\" hingegen ist in der Regel unter Kontrolle des Systems und erfordert keine weiteren Maßnahmen seitens des Programmierers. Dies stellt !
 sicher, dass die zwei-Phasen Property korrekt gewartet werden kann."
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+"Die <classname>LockManager</classname>-Klasse ist primär dafür verantwortlich Anfragen nach einer Sperreinstellung für ein Objekt oder  dem Lösen einer solchen Sperre zu verwalten. Da sie jedoch vom <classname>StateManager</classname> abgeleitet ist, kann sie außerdem steuern, wann einige der vererbten Einrichtungen aufgerufen werden. Zum Beispiel, wenn eine Anfrage zum Setzen einer Schreibsperre gewährt wird, ruft der "
+"<classname>LockManager</classname> \"modified\" in der direkten Annahme, dass der Aufruf zum Setzen einer Schreibsperre durch die aufrufende Operation bedeutet, dass das Objekt bearbeitet (modifiziert) werden soll. Dies wiederum kann dazu führen, dass Recovery-Informationen gespeichert werden, wenn es sich um ein wiederherstellbares Objekt handelt. Auf ähnliche Weise bewirkt eine erfolgreiche Sperre den Aufruf von <command>activate</command>."
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+"Daher ist der <classname>LockManager</classname> direkt verantwortlich für das Aktivieren/Deaktivieren persistenter Objekte und die Registrierung von <classname>Resources</classname> zur Verwaltung der Nebenläufigkeitskontrolle. Durch Steuerung der <classname>StateManager</classname>-Klasse ist er außerdem verantwortlich für das Registrieren von <classname>Resources</classname> für persistente/wiederherstellbare Statusmanipulation und Objekt-Recovery. Der Anwendungsprogrammierer setzt einfach die entsprechenden Sperren, startet und beendet Transaktionen und erweitert die <command>save_state</command> und <command>restore_state</"
+"command>-Methoden von <classname>StateManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr "Die <command>setlock</command>-Operation muss mit dem erforderlichen Sperr-Typ (<literal>READ</literal> / <literal>WRITE</literal>) sowie der Anzahl erneuter Versuche die Sperre zu erwerben, ehe aufgegeben wird, parametisiert werden. Erfolgt ein Sperr-Konflikt, so kommt es zu einem der folgenden Szenarios:"
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+"Ist der Wert des Neuversuchs gleich <literal>LockManager.waitTotalTimeout</"
+"literal>, so wird der Thread, der <command>setlock</command> aufgerufen hat, gesperrt, bis die Sperre aufgehoben oder der gesamte festgelegte Timeout vergangen ist, und in welchem <literal>REFUSED</literal> wiedergegeben wird."
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr "Falls die Sperre nicht gleich erhalten werden kann, so führt der <classname>LockManager</classname> eine bestimmte Anzahl von Malen Wiederholungsversuche durch, wobei er den festgelegten Zeitwert zwischen den fehlgeschlagenen Versuchen abwartet. Der Standard sind 100 Versuche, wobei jeder Versuch durch eine 0.25 Sekunden Verzögerung getrennt wird; die Zeit zwischen den Wiederholungsversuchen ist in Mikrosekunden festgelegt."
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr ""
+"Falls es zu einem Sperrkonflikt kommt, so führt die aktuelle Implementierung einfach einen Timeout der Sperranfragen durch, wodurch Deadlocks (Blockierungen) vermieden werden, statt dass ein vollständiges Deadlock-Aufspürschema aufgefunden werden müsste. Wird die angeforderte erhalten, so antwortet die \"Setlock\"-Operation mit dem Wert dem Wert <literal>GRANTED< andernfalls mit dem Wert "
+"<literal>REFUSED</literal>. Es obliegt der Verantwortung des Programmierers sicherzustellen, dass der restliche Code für eine Operation nur dann ausgeführt wird, wenn eine Sperranfrage gewährt wird. Nachfolgend sehen Sie Beispiele für die Verwendung der <command>setlock</command>-Operation."
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr ""
+"Der Mechanismus zur Kontrolle der Nebenläufigkeit ist in den atomischen Aktionsmechanismus integriert, wodurch sichergestellt wird, dass die entsprechenden Sperren für ein Objekt gewährt werden, das bei der aktuell laufenden atomischen Aktion registriert ist und wodurch außerdem sichergestellt wird, dass die Sperren zum richtigen Zeitpunkt freigegeben werden. Dies befreit den Programmierer von der Last, explizit innerhalb von atomischen Aktionen erworbene Sperren freigeben zu müssen. Werden Sperren jedoch für ein Objekt "
+"<emphasis>außerhalb</emphasis> des Bereichs einer atomischen Aktion erworben, so obliegt es der Verantwortung des Programmierers diese mittels der entsprechenden <command>releaselock</command>-Operation zu lösen."
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr "Sperr-Richtlinien"
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+"Anders als bei vielen anderen Systemen handelt es sich bei Sperren in <emphasis>TxCore</emphasis> nicht um spezielle Systemtypen. Stattdessen handelt es sich einfach um Instanzen anderer "
+"<emphasis>TxCore</emphasis>-Objekte (die Klasse <classname>Lock</classname>, die ebenfalls vom <classname>StateManager</classname> abgeleitet ist, so dass wenn nötig persistiert werden und auf einfache Weise benannt werden können). Desweiteren besitzt der <classname>LockManager</classname> mit Absicht keine Kenntnisse der Semantik der tatsächlichen Richtlinien entsprechend derer Sperranfragen gewährt werden. Solche Informationen werden durch die Instanzen der tatsächlichen <classname>Lock</classname>-Klasse gewartet, die Operationen bereitstellen (die "
+"<literal>conflictsWith</literal>-Operation) mittels derer der <classname>LockManager</classname> bestimmen kann, ob bei zwei Sperren ein Konflikt existiert oder nicht. Diese Trennung ist wichtig, da sie es dem Programmierer gestattet neue Sperrtypen aus der grundlegenden "
+"<classname>Lock</classname>-Klasse abzuleiten und entsprechende Definitionen der Konflikt-Operationen bereitzustellen, so dass verbesserte Nebenläufigkeitsebenen möglich sind."
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+"Die <classname>Lock</classname>-Klasse liefert eine <command>modifiesObject</command>-Operation, die der <classname>LockManager</classname> zur Bestimmung dazu verwendet, "
+"ob die Gewährung dieser Sperranfrage einen Aufruf an \"modified\" erforderlich macht. Diese Operation wird bereitgestellt, damit auch Sperr-Modi, die über einfaches Lesen und Schreiben hinausgehen, unterstützt werden können. Die gelieferte <classname>Lock</classname>-Klasse unterstützt die traditionellen multiplen \"Reader/Single Writer\"-Richtlinien"
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr "Objektkonstruktion und -löschung"
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr "Wie schon erwähnt können <emphasis>TxCore</emphasis>-Objekte wiederherstellbar, wiederherstellbar und persistent oder keines von beidem sein. Zusätzlich besitzt jedes Objekt einen eindeutigen internen Namen. Diese Attribute können nur eingestellt werden, wenn das Objekt konstruiert wird. Der <classname>LockManager</classname> stellt daher zwei geschützte Konstruktoren für die Verwendung durch abgeleitete Klassen bereit, von denen jeder einen ganz bestimmten Zweck erfüllt:"
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr "LockManager ()"
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr "Dieser Konstruktor gestattet die Erstellung neuer Objekte, das heißt es wird davon ausgegangen, dass kein vorheriger Status existiert."
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr "LockManager (int ObjectType, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr ""
+"Wie oben, gestattet dieser Konstruktor das Erstellen eines Objekts, das heißt es wird angenommen, dass kein vorheriger Status existiert. Der <literal>ObjectType</literal>-Parameter "
+"legt fest, ob ein Objekt einfach wiederherstellbar ist (angezeigt durch "
+"<literal>RECOVERABLE</literal>); wiederherstellbar und persistent (angezeigt durch <literal>ANDPERSISTENT</literal>) oder weder noch (<literal>NEITHER</literal>)."
+"Ist ein Objekt als persistent markiert, so wird der Status des Objekts in einem dieser Objektspeicher gespeichert. Der freigegebene Parameter ist nur von Bedeutung, wenn <literal>RECOVERABLE</literal>; ist <literal>attr</literal> nicht Null und das Objektmodell <literal>SINGLE</literal> (das Standardverhalten) dann wird der wiederherstellbare Status des Objekts innerhalb des Objekts selbst gewartet (d.h es besitzt keine externe Repräsentation), andernfalls wird ein \"in-memory\" (selbstlöschender) Objektspeicher zur Speicherung des Objektstatus zwischen atomischen Aktionen verwendet."
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr "Konstruktoren für neue persistente Objekte sollten atomische Aktionen untereinander verwenden. Dies stellt sicher, dass der Status des Objekts automatisch in den Objektspeicher geschrieben wird wenn die Aktion im Konstruktor festgeschrieben wird oder, falls eine einschließende Aktion vorhanden ist, wenn die entsprechende Aktion der höchsten Ebene festgeschrieben wird. Spätere Beispiele in diesem Kapitel führen dies weiter aus."
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr "LockManager(Uid objUid)"
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr "Dieser Konstruktor gestattet Zugriff auf ein bestehendes persistentes Objekt, dessen interner Name durch den <literal>objUid</literal>-Parameter geliefert wird. Bei mittels dieser Operation konstruierten Objekten wird normalerweise deren vorheriger Status (identifiziert anhand von <literal>objUid</literal>) aus einem Objektspeicher automatisch durch das System geladen."
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr "LockManager(Uid objUid, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr ""
+"Wie oben gestattet der Konstruktor Zugriff auf ein bestehendes persistentes Objekt, dessen interner Name durch den <literal>objUid</literal>-Parameter geliefert wird. "
+"Bei mittels dieser Operation konstruierten Objekten wird normalerweise deren vorheriger Status (identifiziert anhand von <literal>objUid</literal>) aus einem Objektspeicher automatisch durch das System geladen. Ist der attr-Parameter nicht Null und das Objektmodell <literal>SINGLE</literal> (das Standardverhalten), so wird das Objekt beim Start jeder Transaktion der höchsten Ebene nicht reaktiviert."
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr "Der Destruktor einer Programmierer-definierten Klasse muss das vererbte Operation \"terminate\" aufrufen, um den Status-Management Mechanismus darüber zu informieren, dass das Objekt im Begriff ist gelöscht zu werden, da andernfalls unvorhersehbare Ergebnisse auftreten können."
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""
+"Da der <classname>StateManager</classname> an den <classname>LockManager</classname> vererbt,"
+"gibt er jede erhaltene "
+"<classname>ObjectName</classname>-Instanz an die <classname>StateManager</classname>-Klasse weiter. Anschließend kann das "
+"<classname>StateManager</classname>-Objektmodell wie zuvor beschrieben eingestellt werden."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_03.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_03.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,710 @@
+# translation of Chapter_03.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_03\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-28 23:01+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr "Allgemeines Transaktionsprobleme"
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr "Fortgeschrittene Transaktionsprobleme mit TxCore"
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr "Atomische Aktionen (Transaktionen) können sowohl von Anwendungsprogrammierern als auch Entwicklern von Klassen verwendet werden. Es können daher ganze Operationen (oder Teile von Operationen) atomisch gemacht werden, wie durch die Semantik einer bestimmten Operation erforderlich. Dieses Kapitel beschreibt einige der subtileren Probleme, die bei der Verwendung von Transaktionen im allgemeinen und <emphasis>TxCore</emphasis> im besonderen auftreten können."
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr "Prüfen von Transaktionen"
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+"In einer Anwendung mit mehreren Threads können mehrere Threads während ihrer Lebensdauer mit einer Transaktion assoziiert werden, d.h. die Threads teilen sich den Kontext. Zusätzlich ist es möglich, dass - wenn ein Thread eine Transaktion beendet - andere Threads weiterhin aktiv innerhalb davon sind. In einer distribuierten Umgebung kann es schwierig sein zu garantieren, dass alle Threads mit einer Transaktion fertig sind, wenn diese beendet wird. Standardmäßig gibt <emphasis>TxCore</emphasis> eine Warnung heraus, wenn ein Thread eine Transaktion beendet wenn andere Threads darin noch aktiv sind - allerdings wird die Fortsetzung der Beendigung nichtsdestotrotz erlaubt. Es sind andere Lösungen für dieses Problem möglich, z.B. Sperren des die Transaktion beendenden Threads, bis alle anderen Threads sich vom Transaktionkontext disassoziiert haben. Daher liefert "
+"<emphasis>TxCore</emphasis> die <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname>-Klasse, die es gestattet, die Richtlinien für die Thread-/Transaktionsbeendigung außer Kraft zu setzen. Jede Transaktion hat eine Instanz dieser Klasse mit sich assoziiert und Anwendungsprogrammierer können ihre eigenen Implementierungen auf einer pro-Transaktionsbasis bereitstellen."
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr "Versucht ein Thread eine Transaktion zu beenden in der sich noch aktive Threads befinden, so ruft das System die Prüfmethode (\"Check Methode\") am <classname>CheckedAction</classname>-Objekt der Transaktion auf. Die Parameter der Prüfmethode lauten:"
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr "isCommit"
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr "Gibt an, ob die Transaktion im Begriff ist festgeschrieben oder zurückgesetzt zu werden."
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr "actUid"
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr "Der Transaktionsbezeichner."
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr "list"
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr "eine Liste aller zum aktuellen Zeitpunkt als aktiv gekennzeichneten Threads innerhalb dieser Transaktion."
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr "Wenn \"Check\" antwortet, so wird die Beendigung der Transaktion fortgesetzt. Selbstverständlich kann der Status der Transaktion zu diesem Zeitpunkt sich von dem zum Zeitpunkt des Aufrufs von \"Check\" unterscheiden, z.B. die Transaktion könnte mittlerweile festgeschrieben worden sein."
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr "Statistiksammlung"
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr ""
+"Standardmäßig bewahrt JBossTS keine Informationen zur Historie von Transaktionen. Wird jedoch die <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> Property-Variable auf YES gesetzt, so bewahrt der Transaktionsdienst Informationen zur Anzahl der erstellten Transaktionen und deren Ergebnissen auf. Diese Informationen können während der Ausführung einer transaktionalen Anwendung via der <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname>-Klasse abgerufen werden:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr "Festschreibungsoptimierung der letzten Ressource"
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr ""
+"In einigen Fällen kann es nötig sein, nicht in zwei-Phasen Festschreibung gewahre Teilnehmer in eine zwei-Phasen Festschreibungstransaktion einzutragen. Ist nur eine einzige Ressource vorhanden, so besteht keine Notwendigkeit für eine zwei-Phasen Festschreibung. Was aber, wenn mehrere Ressourcen in der Transaktion existieren? In diesem Fall kommt die \"Last "
+"Resource Commit\" Optimierung (LRCO) ins Spiel. Es ist möglich, dass eine einzelne Ressource, die ein-Phasen gewahr ist (d.h. kann nur festschreiben oder zurücksetzen, ohne \"prepare\"), in eine Transaktion mit zwei-Phasen Festschreibung gewahren Ressourcen eingetragen zu sein. Der Koordinator behandelt die ein-Phasen gewahre Ressource etwas anders, und zwar insofern als dass es die \"Prepare\"-Phase zuerst an allen anderen Ressourcen ausführt und - falls es die Transaktion dann festschreiben will - er die Kontrolle an die ein-Phasen gewahre Ressource gibt. Wird festgeschrieben, so protokolliert der Koordinator die Festschreibungsentscheidung und versucht die anderen Ressourcen ebenfalls festzuschreiben."
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr ""
+"Um das LRCO zu nutzen muss Ihr Teilnehmer das "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname>-Interface "
+"implementieren und durch <command>BasicAction</"
+"command>.add operation bei der Transaktion registriert sein; da diese Operation Instanzen von "
+"<classname>AbstractRecord</classname> erwartet, müssen Sie eine Instanz <classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> erstellen und Ihren Teilnehmer als Konstruktorparameter angeben, wie unten gezeigt:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr "Verschachtelte Transaktionen"
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr ""
+"Es gibt keine speziellen Konstrukte für das Verschachteln von Transaktionen: wird eine Aktion begonnen, während eine andere Action läuft, so wird sie automatisch verschachtelt. Dies erlaubt eine modulare Struktur für Anwendungen, wobei Objekte implementiert werden können, indem atomische Aktionen innerhalb ihrer Operationen verwendet werden, ohne dass der Anwendungsprogrammierer sich um die Anwendungen kümmern muss, die diese verwenden, d.h. ob die Anwendungen auch atomische Aktionen verwenden oder ob nicht. "
+"Daher sind Aktionen in manchen Anwendungen auf der obersten Ebene, in anderen hingegen verschachtelt. Auf diese Weise geschriebene Objekte können sogar von Anwendungsprogrammierern geteilt werden und <emphasis>TxCore</emphasis> garantiert Konsistenz."
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr "Wird eine verschachtelte Aktion abgebrochen, so wird alle ihre Arbeit rückgängig gemacht, obwohl striktes zwei Phasen Sperren bedeutet, dass alle Sperren, die möglicherweise vorhanden sind, erhalten bleiben bis die Aktion der höchsten Ebene festgeschrieben oder abgebrochen wird. Wird eine verschachtelte Aktion festgeschrieben, so wird die von ihr durchgeführte Arbeit vom System nur festgeschrieben, wenn die Aktion auf höchster Ebene festschreibt; wird die Aktion auf höchster Ebene abgebrochen, so wird alle ihre Arbeit rückgängig gemacht."
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr "Das Festschreiben oder Abbrechen einer verschachtelten Aktion hat nicht automatisch Einfluss auf das Ergebnis der Aktion innerhalb derer sie verschachtelt ist. Dies hängt von der Anwendung ab und gestattet es dem Programmierer atomische Aktionen zu strukturieren, so dass diese Fehler enthalten, Arbeit rückgängig machen usw."
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr "Asynchrones Festschreiben einer Transaktion"
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr "Standardmäßig führt JBossTS das Festschreibungsprotokoll einer Transaktion der höchsten Ebene auf synchrone Weise aus, d.h. allen registrierten Ressourcen wird mitgeteilt sich in der Anordnung eines einzelnen Threads vorzubereiten und anschließend entweder festgeschrieben oder zurückgesetzt zu werden. Dies hat mehrere mögliche Nachteile:"
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr "Im Falle vieler registrierter Ressourcen kann das \"Prepare Operating\" logisch parallel an jeder Ressource aufgerufen werden. Der Nachteil ist, dass eine \"frühe\" Ressource in der Liste registrierter Ressourcen ein Zurücksetzen während der Vorbereitung erzwingt, möglicherweise werden viele \"Prepare Operations\" unnötigerweise gemacht."
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr "Im Falle wo heuristisches Reporting nicht durch die Anwendung benötigt wird, kann die zweite Phase des Festschreibungsprotokolls asynchron erfolgen, da Erfolg oder Fehlschlagen unwichtig sind."
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+"Daher liefert <emphasis>JBossTS</emphasis> Runtime-Optionen zur Aktivierung möglicher Threading-Optimierungen. Durch Einstellung der <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal>-Umgebungsvariable auf "
+"<literal>YES</literal>, während der Vorbereitungsphase wird ein separater Thread für jeden registrierten Teilnehmer innerhalb der Transaktion erstellt. Durch Einstellung von "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> auf "
+"<literal>YES</literal>, wird ein separater Thread erstellt, um die zweite Phase der Transaktion zu vervollständigen, falls keine Kenntnisse über heuritische Ergebnisse notwendig sind."
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr "Unabhängige Transaktionen auf höchster Ebene"
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr "Zusätzlich zu normalen Top-Level und verschachtelten atomischen Aktionen unterstützt <emphasis>TxCore</emphasis> auch unabhängige Top-Level Aktionen, die dazu verwendet werden können strenge Serialisabilität auf kontrollierte Weise aufzulockern. Eine unabhängige Aktion der höchsten Ebene kann von überall aus innerhalb einer anderen atomischen Aktion ausgeführt werden und verhält sich genauso wie eine normale Aktion der höchsten Ebene, das heißt ihre Ergebnisse werden dauerhaft, wenn sie festgeschrieben wird und werden nicht rückgängig gemacht wenn jedwelche der Aktionen innerhalb derer sie ursprünglich verschachtelt wurde, abgebrochen werden."
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr "Unabhängige Aktion auf höchster Ebene"
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr "zeigt eine typische Verschachtelung atomischer Aktionen, wo Aktion B innerhalb Aktion A verschachtelt ist. Obwohl atomische Aktion C logisch innerhalb von Aktion B verschachtelt ist (ihre \"Begin\"-Operation wurde aufgerufen während B aktiv war) wird sie innerhalb der Struktur unabhängig von den anderen Aktionen festgeschrieben oder abgebrochen, weil es sich um eine unabhängige Aktion der obersten Ebene handelt. Aufgrund des Wesens unabhängiger Aktionen der obersten Ebene, sollten diese mit Vorsicht gehandhabt werden und nur in Situationen verwendet werden, die zuvor eingehend geprüft wurden."
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr "Top-Level Aktionen können innerhalb einer Anwendung verwendet werden, indem Instanzen der Klasse <classname>TopLevelTransaction</classname> deklariert und verwendet werden. Sie werden auf genau diesselbe Weise wie andere Transaktionen verwendet."
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr "Transaktionen innerhalb von save_state und restore_state"
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+"Beim Schreiben der <command>save_state</command> und "
+"<command>restore_state</command>-Operationen sollte man Vorsicht walten lassen um sicherzustellen, dass keine atomischen Aktionen gestartet werden (entweder explizit in der Operation oder implizit durch Verwendung einer anderen Operation). Diese Einschränkung kommt aufgrund der Tatsache auf, dass <emphasis>TxCore</emphasis> <command>restore_state</command> als Teil seiner Festschreibungsbearbeitung aufrufen kann, was im Versuch resultiert eine atomische Aktion während der Festschreibungs- oder Abbruchphase einer anderen Aktion auszuführen. Dies könnte die Atomizität-Properties der Aktion verletzen, die gerade festgeschrieben (abgebrochen) wird und wird daher nicht empfohlen."
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr "Beispiel"
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr "Wenn wir uns das zuvor gegebene Array-Beispiel ansehen, so würden die \"Set\" und \"Get\"-Operationen wie unten dargestellt implementiert."
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr "Es handelt sich hierbei um eine Vereinfachung des Code, wobei Fehlerbedingungen und Ausnahmen ignoriert werden."
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr "Müll sammelnde Objekte"
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr "Java Objekte werden gelöscht, wenn der Müllsammler bestimmt, dass sie nicht länger benötigt werden. Das Löschen eines zum aktuellen Zeitpunkt unter Kontrolle einer Transaktion stehenden Objekts muss mit Vorsicht angegangen werden, da das Schicksal eines innerhalb einer Transaktion bearbeiteten Objekts ultimativ von der Transaktion bestimmt wird. Daher wird, unabhängig von Verweisen auf ein transaktionales und durch die Anwendung gewartetes Objekt <emphasis>TxCore</emphasis> stets seine eigenen Verweise behalten um sicherzustellen, dass das Objekt nicht als Müll gesammelt wird ehe die Transaktion nicht beendet wurde."
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr "Transaktions-Timeouts"
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr "Standardmäßig leben Transaktionen bis sie durch die Anwendung beendet werden, die sie erstellt hat oder bis ein Fehler auftritt. Es ist jedoch möglich, einen Timeout (in Sekunden) auf pro-Transaktionsbasis einzustellen, so dass - falls die Transaktion nicht endet ehe der Timeout abläuft - eine automatische Zurücksetzung erfolgt."
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr ""
+"In <emphasis>TxCore</emphasis> wird der Timeout-Wert als ein Parameter zum <classname>AtomicAction</classname>-Konstruktor geliefert. Wird ein "
+"<literal>AtomicAction.NO_TIMEOUT</literal>-Wert bereitgestellt (der Standard) dann erfolgt für die Transaktion kein automatischer Timeout. Jeder andere positive Wert wird als Timeout für die Transaktion (in Sekunden) angenommen. Ein Wert von Null"
+"wird als allgemeiner Standard-Timeout angenommen, der durch die Property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal> geliefert werden kann. Falls er nicht geändert wird, so beträgt der Standardwert 60 Sekunden."
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+"Wird eine Transaktion der höchsten Ebene mit einem nicht-Null Timeout erstellt, so wird sie zurückgesetzt, wenn sie nicht innerhalb der festgelegten Sekundenzahl beendet wird. <emphasis>JBossTS</emphasis> verwendet einen separaten \"Reaper-Thread\", der alle lokal erstellten Transaktionen überwacht und deren Zurücksetzen erzwingt wenn deren Timeouts ablaufen. Um zu verhindern, dass dieser Thread Anwendungszeit verbraucht, läuft er nur periodisch. Die Standard-Prüfperiode sind 120000 Millisekunden, aber dies kann durch Einstellen der <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal>-Property-Variable auf einen anderen Wert in Mikrosekunden geändert werden. Alternativ, falls <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> auf "
+"<literal>DYNAMIC</literal> eingestellt ist, erwacht der \"Transaction-Reaper\" beim Timeout jeder Transaktion. Dies hat den Vorteil, das Transaktionen früher beendet werden, kann aber zur ständigen Neuterminierung des Reaper Threads führen."
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""
+"Wird ein Wert von 0 als Timeout für eine Transaktion der höchsten Ebene festgelegt (oder kein Timeout festgelegt), dann macht <emphasis>JBossTS</emphasis> keinen Timeout bei der Transaktion geltend, d.h. sie kann unbeschränkt laufen. Dieser Standard-Timeout kann durch Einstellen der "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> Property-Variablen außer Kraft und zum benötigten Timeout-Wert in Sekunden gesetzt werden, wenn <emphasis>ArjunaCore</emphasis> oder <emphasis>ArjunaJTS</"
+"emphasis> oder <literal>com.arjuna.ats.jts.defaultTimeout</literal> verwendet wird, wenn "
+"<emphasis>ArjunaJTS</emphasis> benutzt wird."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_04.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_04.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,332 @@
+# translation of Chapter_04.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_04\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-29 06:18+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr "Tipps und Tricks"
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr "Allgemeines"
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr "Verwendung von Transaktionen in Konstruktoren"
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr "Beispiele in diesem Handbuch haben Transaktionen in der Implementierung von Konstruktoren für neue persistente Objekte verwendet. Dies ist absichtlich der Fall, da es die ordnungsgemäße Fortpflanzung des Status des Objekts zum Objektspeicher gewährleistet. Erinnern wir uns daran, dass der Status eines bearbeiteten persistenten Objekts nur dann in den Objektspeicher geschrieben wird, wenn die Transaktion der höchsten Ebene festgeschrieben wird. Wenn also die Konstruktor-Transaktion diejenige der höchsten Ebene ist und festgeschrieben wird, dann wird das neu erstellte Objekt in den Speicher geschrieben und wird sofort verfügbar. Falls die Konstruktor-Transaktion festgeschrieben jedoch verschachtelt wird, weil eine andere vor der Objekterstellung begonnene andere Transaktion läuft, dann wird der Status nur geschrieben, wenn sämtliche übergeordneten Transaktionen festgeschrieben werden."
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr "Wenn andererseits der Konstruktor Transaktionen nicht verwendet wenn dieses möglich is, dann kann es zu Inkonsistenzen im System kommen. Ist zum Beispiel keine Transaktion bei der Erstellung eines Objekts aktiv, dann wird deren Status nicht gespeichert, ehe das Objekt nicht unter der Kontrolle einer Transaktion das nächste Mal bearbeitet wird."
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr "Nehmen wir dieses einfache Beispiel:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+"Hier werden zwei Objekte außerhalb der Kontrolle der Aktion A der höchsten Ebene erstellt. <literal>obj1</literal> ist ein neues Objekt; <literal>obj2</literal> ist ein altes, bestehendes Objekt. Wenn die \"remember\"-Operation von <literal>obj2</"
+"literal> aufgerufen wird, wird das Objekt aktiviert und die Uid von "
+"<literal>obj1</literal> memorisiert. Da diese Aktion den persistenten Status von <literal>obj2</literal> festschreibt könnte nun die Uid von <literal>obj1</literal> enthalten sein. Der Status von <literal>obj1</literal> selbst wurde jedoch nicht gespeichert da er nicht unter Kontrolle irgendeiner Aktion verändert wurde. Genau genommen wird er nie gespeichert, wenn er nicht unter der Kontrolle einer Aktion im weiteren Verlauf der Anwendung bearbeitet wurde. Falls aber der Konstruktor eine atomische Aktion am Status von <literal>obj1</literal> verwendet hat, so würde dies automatisch zum Zeitpunkt der Konstruktion gespeichert und diese Inkonsistenz würde nicht auftreten."
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr "Mehr zu save_state und restore_state"
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr "<emphasis>TxCore</emphasis> kann die benutzerdefinierte <command>save_state</command>-Operation eines Objekts effektiv zu jedem Zeitpunkt aufrufen, einschließlich während der Ausführung des Körpers des Objekt-Konstruktors (insbesondere wenn atomische Aktionen verwendet werden). Es ist daher wichtig, dass sämtlich durch save_state gespeicherte Variablen korrekt initialisiert werden."
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+"Beim Schreiben der <command>save_state</command> und <command>restore_state</command>-Operationen sollte man ebenfalls Vorsicht walten lassen um sicherzustellen, dass keine Transaktionen gestartet wurden (entweder explizit in der Operation oder implizit durch Verwendung einer anderen Operation). Diese Einschränkung ist Folge der Tatsache, dass <emphasis>TxCore</emphasis> beim Versuch eine atomische Transaktion während der Festschreibungs- oder Abbruchphase einer anderen Transaktion festzuschreiben als Teil seiner Festschreibungsbearbeitung <command>restore_state</"
+"command> aufrufen kann. Dies könnte die Atomaritäts-Properties der festzuschreibenden (abgebrochenen) Transaktion verletzen und wird daher nicht empfohlen."
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"Um Crash Recovery für persistente Objekte zu unterstützen ist es nötig, dass alle <literal>save_state</literal> und <literal>restore_state</literal> "
+"Methoden von Benutzerobjekten <command>super.save_state</command> und "
+"<command>super.restore_state</command> aufrufen."
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr "Verpacken von Objekten"
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr ""
+"Alle grundlegenden Typen von Java (int, long, etc.) können aus einer <classname>Input/OutputObjectState</classname>-Instanz gespeichert und wiederhergestellt werden indem die Verpack- (und Auspack-) Hilfsprogramme, die durch <classname>Input/OutputObjectState</"
+"classname> bereitgestellt werden, verwendet werden. Jedoch sollte das Verpacken und Auspacken von Objekten unterschiedlich gehandhabt werden. Der Grund hierfür ist die Tatsache, dass das Verpacken von Objekten das zusätzliche Problem des Aliasing aufbringt. Das heißt, zwei verschiedene Objektreferenzen können auf denselben Posten verweisen. Zum Beispiel:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr "Hier verweisen sowohl s1 als auch s2 auf denselben String und eine naive Implementierung von <command>save_state</command> könnte dazu führen, dass der String einfach zwei Mal kopiert wird. Aus einer <command>save_state</command>-Perspektive ist dies schlichtweg ineffizient. Jedoch macht es <command>restore_state</command> schlichtweg inkorrekt, da es die beiden Strings in unterschiedliche Speicherbereiche entpacken und die ursprünglichen Aliasing-Informationen zerstören würde. Die aktuelle Version von TxCore packt und entpackt separate Objektreferenzen."
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr "Direkte Verwendung von StateManager"
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr ""
+"Alle Beispiele in diesem Handbuch leiten Benutzerklassen aus dem "
+"<classname>LockManager</classname> ab. Dafür gibt es zwei Gründe."
+"Zunächst einmal erfordern die Serialisierbarkeitseinschränkungen atomischer Aktionen es und zweitens senkt es die Notwendigkeit von Eingriffen durch den Programmierer. Falls aber nur Zugriff auf <emphasis>TxCore</emphasis>s Persistenz- und Wiederherstellungsmechanismen benötigt werden, ist die direkte Ableitung einer Benutzerklasse vom <classname>StateManager</classname> möglich."
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr "Direkt vom <classname>StateManager</classname> abgeleitete Klassen müssen explizit dessen Statusmanagement-Mechanismen verwenden (diese Interaktionen werden normalerweise durch den <classname>LockManager</classname> vorgenommen). Aus Sicht des Programmierers führt dies zur korrekten Verwendung der Operationen \"activate\", \"deactivate\" und \"modified\", da die Konstruktoren des <classname>StateManager</classname>s Konstruktors effektiv identisch mit dem <classname>LockManager</classname> sind."
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr "<command>Activate</command> lädt ein Objekt aus dem Objektspeicher. Die UID des Objekts muss bereits via Konstruktor eingestellt sein und das Objekt muss im Speicher vorhanden sein. Wird das Objekt erfolgreich gelesen, so wird <command>restore_state</command> aufgerufen, um das Objekt im Speicher zu bauen. <command>Activate</command> ist id-unwirksam, so dass nach Aktivierung eines Objekts weitere Aufrufe ignoriert werden. Der Parameter repräsentiert den Root-Namen des Objektspeichers für die Suche nach dem Objekt. Ein Wert von Null bedeutet Verwendung des Standardspeichers."
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr ""
+"Die Umkehrung von \"activate\". Erst Aufruf von <command>save_state</command> zum Bau des"
+"komprimierten Objekt-Image, dass dann im Objektspeicher gespeichert wird. Objekte können nur gespeichert werden, wenn sie seit ihrer Aktivierung verändert wurden. Der Parameter repräsentiert den Root-Namen des Objektspeichers, in welchem das Objekt gespeichert werden sollte. Ein Wert von Null bedeutet Verwendung des Standardspeichers."
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr "void modified ()"
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr ""
+"<emphasis>Muss</emphasis> vor der Bearbeitung des Objekts im Speicher aufgerufen werden. "
+"Falls dies nicht erfolgt, so wird das Objekt nicht im Objektspeicher durch \"deactivate\" gespeichert."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_05.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_05.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,969 @@
+# translation of Chapter_05.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_05\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-29 06:42+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr "Tools"
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr "Dieses Kapitel erklärt, wie das Tools Framework gestartet und verwendet wird und welche Tools verfügbar sind."
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr "Starten der \"Transaction Service Tools\""
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr "Wie die Transaction Service Tools gestartet werden unterscheidet sich je nach verwendetem Betriebssystem:"
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr "Windows"
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr ""
+"Doppelklicken Sie auf das ‘Start Tools’-Link in der JBoss Transaction Service "
+"Programmgruppe im Start-Menü."
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr "Unix"
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr "Starten Sie eine Bash-Shell und tippen Sie:"
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr ""
+"Nachdem Sie dies getan haben, erscheint der Tools-Bildschirm. Dies ist der Launch-Bereich für alle mit <emphasis>JBoss Transaction "
+"Service</emphasis> gelieferten Tools. Ganz oben im Bildschirm sehen Sie einen Menü-Balken. Dieser besitzt vier Elemente:"
+
+#. Tag: title
+#: Chapter_05.xml:39
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr "Das <menuchoice><guimenu>File</guimenu></menuchoice> Menü"
+
+#. Tag: term
+#: Chapter_05.xml:44
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr "JMX-Browser öffnen"
+
+#. Tag: para
+#: Chapter_05.xml:45
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr "Dies zeigt das JMX-Browser-Fenster an (siehe ***Verwendung des JMX-Browsers für weitere Informationen zur Verwendung des JMX-Browsers)."
+
+#. Tag: term
+#: Chapter_05.xml:49
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr "Objektspeicher-Browser öffnen"
+
+#. Tag: para
+#: Chapter_05.xml:50
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr "Dies zeigt das JBossTS Object Store Browser-Fenster an (siehe ***Verwendung des Objektspeicher-Browsers für weitere Informationen zur Verwendung des Objektspeicher-Browsers)."
+
+#. Tag: term
+#: Chapter_05.xml:54
+#, no-c-format
+msgid "Settings"
+msgstr "Einstellungen"
+
+#. Tag: para
+#: Chapter_05.xml:55
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr "Diese Option öffnet den Einstellungsdialog, mit dem Sie die verschiedenen verfügbaren Tools konfigurieren können."
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Exit"
+msgstr "Exit"
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr "Dies schließt den Tools-Bildschirm und beendet die Anwendung, wobei ungespeicherte/unbestätigte Änderungen verloren gehen."
+
+#. Tag: title
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr "Das <menuchoice><guimenu>Performance</guimenu></menuchoice> Menü"
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Open"
+msgstr "Open"
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr ""
+"Dies öffnet einen Performance-Bildschirm – siehe <xref linkend=\"Performance_Tool\"/> "
+"für weitere Informationen zum Performance-Tool."
+
+#. Tag: term
+#: Chapter_05.xml:77
+#, no-c-format
+msgid "Close All"
+msgstr "Close All"
+
+#. Tag: para
+#: Chapter_05.xml:78
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+"dies schließt alle aktuell offenen Performance-Bildschirme – siehe <xref "
+"linkend=\"Performance_Tool\"/> für weitere Informationen zum Performance-Tool."
+
+#. Tag: title
+#: Chapter_05.xml:87
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr "Das <menuchoice><guimenu>Window</guimenu></menuchoice> Menü"
+
+#. Tag: term
+#: Chapter_05.xml:90
+#, no-c-format
+msgid "Cascade Windows"
+msgstr "Cascade Windows"
+
+#. Tag: para
+#: Chapter_05.xml:91
+#, no-c-format
+msgid "This arranges the windows in a diagonal line to you find a specific window."
+msgstr "Dies ordnet die Bildschirme in einer diagonalen Linie an, damit Sie einen bestimmten Bildschirm finden können."
+
+#. Tag: term
+#: Chapter_05.xml:95
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr "1. XXXXXXX"
+
+#. Tag: para
+#: Chapter_05.xml:96
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr "Für jeden aktuell sichtbaren Bildschirm ist hier eine extra Menüoption verfügbar. Die Auswahl dieser Menüoption bringt den assoziierten Bildschirm vorne auf das Desktop."
+
+#. Tag: title
+#: Chapter_05.xml:104
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr "Das <menuchoice><guimenu>Help</guimenu></menuchoice> Menü"
+
+#. Tag: term
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "About"
+msgstr "About"
+
+#. Tag: para
+#: Chapter_05.xml:108
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr "Dies zeigt den \"About\"-Bildschirm mit Produktinformationen an."
+
+#. Tag: title
+#: Chapter_05.xml:119
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr "Verwendung des Performance-Tools"
+
+#. Tag: para
+#: Chapter_05.xml:121
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr ""
+"Das Performance-Tool kann zur Darstellung von Performance-Informationen des Transaktionsdienstes verwendet werden. Diese Informationen werden mittels des Performance "
+"JMX-Bean gesammelt, was bedeutet, dass der Transaktionsdienst in einen Applikationsserver integriert werden muss um Performance-Informationen zu liefern."
+
+#. Tag: para
+#: Chapter_05.xml:123
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+"Die Performance-Informationen werden über ein Multi-Serien Diagramm angezeigt. Um dieses Diagramm anzusehen, öffnen Sie einfach einen Performance-Bildschirm indem Sie "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice> wählen"
+
+#. Tag: para
+#: Chapter_05.xml:125
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr "Der jetzt erscheinende Bildschirm enthält ein Multi-Serien-Diagramm, das die folgenden Informationen anzeigen kann:"
+
+#. Tag: para
+#: Chapter_05.xml:130
+#, no-c-format
+msgid "Number of transactions."
+msgstr "Anzahl von Transaktionen."
+
+#. Tag: para
+#: Chapter_05.xml:135
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr "Anzahl von festgeschriebenen Transaktionen."
+
+#. Tag: para
+#: Chapter_05.xml:140
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr "Anzahl von abgebrochenen Transaktionen."
+
+#. Tag: para
+#: Chapter_05.xml:145
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr "Anzahl von verschachtelten Transaktionen."
+
+#. Tag: para
+#: Chapter_05.xml:150
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr "Anzahl aufgebrachter \"Heuristics\"."
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr "Um diese Serie an- und auszuschalten, wählen Sie einfach die entsprechende Menü-Option aus dem Serien-Menü."
+
+#. Tag: para
+#: Chapter_05.xml:158
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr "Wenn Serien angeschaltet werden, so erscheinen diese in der Legende unten im Diagramm. Die Farbe neben dem Namen der Serie (zum Beispiel für erstellte Transaktionen \"Transactions Created\") ist die Farbe der diese Daten repräsentierenden Daten."
+
+#. Tag: para
+#: Chapter_05.xml:161
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr "Die im Diagramm dargestellten Daten stehen im Verhältnis zur Zeit. Die Y-Achse repräsentiert die Anzahl von Transaktionen, die X-Achse repräsentiert Zeit."
+
+#. Tag: para
+#: Chapter_05.xml:164
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr ""
+"Das Sampling von Daten kann mittels <menuchoice><guimenu>Sampling</guimenu></menuchoice>-Menü zu jedem Zeitpunkt angehalten und erneut gestartet werden, und die aktuell sichtbaren Daten können als durch Kommas getrennte Werte - sog. \"Comma Separate Values\" (CSV) - in einer Datei für den Import der Daten in eine Tabellenanwendung gespeichert werden, indem die "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice>-Menüoption aus dem <menuchoice><guimenu>Data</guimenu></menuchoice>-Menü verwendet wird."
+
+#. Tag: title
+#: Chapter_05.xml:169
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr "Verwendung des JMX-Browsers"
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+"Um das JMX-Browser-Fenster zu öffnen, klicken Sie auf das <menuchoice><guimenu>File</guimenu></menuchoice>-Menü und anschließend auf die <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice>-Option. Das JMX-Browser-Fenster wird dann angezeigt."
+
+#. Tag: para
+#: Chapter_05.xml:173
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr ""
+"Der Bildschirm besteht aus zwei Hauptabschnitten: Dem \"Details\"-Panel und dem MBean-Panel. Das MBean-Panel zeigt die durch den MBean-Server offengelegten MBeans an. "
+"Diese werden nach Domain-Namen gruppiert. Das Details-Panel zeigt Informationen zum aktuell gewählten MBean an. Um ein MBean auszuwählen, machen Sie einfach einen Linksklick mit der Maus und es wird markiert. Die im Details-Panel angezeigten Informationen lauten wie folgt:"
+
+#. Tag: para
+#: Chapter_05.xml:178
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr "Die Gesamtzahl von auf diesem Server registrierten MBeans."
+
+#. Tag: para
+#: Chapter_05.xml:183
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr "Die Anzahl der durch dieses MBean offengelegten Konstruktoren."
+
+#. Tag: para
+#: Chapter_05.xml:188
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr "Die Anzahl der durch dieses MBean offengelegten Attribute."
+
+#. Tag: para
+#: Chapter_05.xml:193
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr "Die Anzahl der durch dieses MBean offengelegten Operationen."
+
+#. Tag: para
+#: Chapter_05.xml:198
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr "Die Anzahl der durch dieses MBean offengelegten Benachrichtigungen."
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr "Eine kurze Beschreibung des MBean."
+
+#. Tag: para
+#: Chapter_05.xml:208
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr ""
+"Es existiert außerdem ein <menuchoice><guimenu>View</guimenu></menuchoice>-Link, das beim Klicken darauf die durch dieses MBean offengelegten Attribute und Operationen anzeigt. "
+"Von hier aus können Sie lesbare Attribute ansehen, schreibbare Attribute verändern und Operationen aufrufen."
+
+#. Tag: title
+#: Chapter_05.xml:212
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr "Verwendung von Attributen und Operationen"
+
+#. Tag: para
+#: Chapter_05.xml:213
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr ""
+"Wird das <menuchoice><guimenu>View</guimenu></menuchoice>-Link geklickt, so wird der \"View JMX Attributes and Operations\"-Bildschirm zur Ansicht von JMX Attributen und Operationen angezeigt. Von hier aus können Sie auch alle lesbaren Attribute ansehen, die durch das gewählte MBean offengelegt werden. Sie können auch schreibbare Attribute bearbeiten. Ist ein Attribut schreibgeschützt, so werden Sie allerdings den Attributwert nicht bearbeiten können. Um einen Attributwert zu verändern, doppelklicken Sie einfach auf den aktuellen Wert und geben Sie den neuen Wert ein. Falls die "
+"<guibutton>...</guibutton>-Schaltfläche aktiviert ist, so können Sie darauf klicken um eine passendere Bearbeitungsmethode einzusehen. Handelt es sich beim Attribut-typ um einen JMX-Objektnamen, so führt das Klicken dieser Schaltfläche zur Anzeige der JMX-Attribute und Operationen für dieses Objekt."
+
+#. Tag: para
+#: Chapter_05.xml:216
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr "Sie können zu jedem Zeitpunkt die <guibutton>Refresh</guibutton>-Schaltfläche klicken, um die Attributwerte neu zu laden. Wird eine Ausnahme während des Abrufs eines Attributswerts gemeldet, so wird diese statt des Attributwerts angezeigt."
+
+#. Tag: para
+#: Chapter_05.xml:219
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr ""
+"Sie können auch Operationen an einem MBean aufrufen. Eine Liste von durch ein MBean offengelegten Operationen wird unter der Attributliste angezeigt. Um eine Operation aufzurufen, wählen Sie einfach"
+"aus der Liste und klicken Sie die <guibutton>Invoke</guibutton>-Schaltfläche. Falls die Operation Parameter erfordert, so öffnet sich ein weiteres Fenster, von dem aus Sie Werte für jeden der erforderlichen Parameter festlegen müssen. Parameterwerte werden auf diesselbe Weise festgelegt wie auch JMX-Attributwerte. Nachdem Sie einen Wert für jeden Parameter festgelegt haben, klicken Sie auf die <guibutton>Invoke</guibutton>-Schaltfläche, um den Aufruf durchzuführen."
+
+#. Tag: para
+#: Chapter_05.xml:222
+#, no-c-format
+msgid "Once the method invocation has completed its return value will be displayed."
+msgstr "Ist der Methodenaufruf beendet, so wird dessen Wiedergabewert angezeigt."
+
+#. Tag: title
+#: Chapter_05.xml:227
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr "Verwendung des Objektspeicher-Browsers"
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr ""
+"Um das Objektspeicher-Browser-Fenster zu öffnen, klicken Sie auf das "
+"<menuchoice><guimenu>File</guimenu></menuchoice>-Menü und anschließend auf die "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice>-Option. Das Objektspeicher-Browser-Fenster wird dann angezeigt."
+
+#. Tag: para
+#: Chapter_05.xml:231
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr "Das Browser-Fenster des Objektspeichers ist in vier Abschnitte aufgeteilt:"
+
+#. Tag: para
+#: Chapter_05.xml:236
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr ""
+"\"Object Store Roots\" - dies ist ein Pull-Down der aktuell verfügbaren Object "
+"Store Roots. Die Auswahl einer Option aus der Liste füllt die Hierarchie-Ansicht mit den Inhalten des ausgewählten Root wieder auf."
+
+#. Tag: para
+#: Chapter_05.xml:241
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr "\"Object Store\" Hierarchie – dies ist ein Baum, der die aktuelle Objektspeicher Hierarchie zeigt. Die Auswahl eines Node aus diesem Baum zeigt die an diesem Speicherort gespeicherten Objekte an."
+
+#. Tag: para
+#: Chapter_05.xml:246
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr "Objects – dies ist eine Liste von Symbolen, die die im ausgewählten Speicherort gespeicherten Objekte repräsentiert."
+
+#. Tag: para
+#: Chapter_05.xml:251
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr ""
+"Object Details – dies zeigt Informationen zum aktuell gewählten Objekt "
+"(nur falls der Objekttyp dem Repository zur Statusansicht bekannt ist, Informationen zum Schreiben von sog. \"Object State Viewers\" finden Sie in \"Writing an OSV\")."
+
+#. Tag: title
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr "Object State Viewers (OSV)"
+
+#. Tag: para
+#: Chapter_05.xml:259
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr ""
+"Wird ein Objekt im Objekt-Panel des Hauptbildschirms ausgewählt, so wird der registrierte Object State Viewer (oder OSV) für diesen Objekttyp aufgerufen. Die Aufgabe einer OSV ist es, dem Benutzer Informationen via des Benutzer-Interface verfügbar zu machen und Informationen zum gewählten Objekt anzuzeigen. Mit den Standard-Tools wird eine OSV für atomische Aktionen (Atomic Actions) distribuiert, und die OSV zeigt Informationen zu den abstrakten Datensätzen (Abstract Records) in ihren verschiedenen Listen (z.B. heuristic, failed, read-"
+"only, usw) an. Es ist auch möglich, eigene OSVs zu schreiben, die zur Anzeige von Informationen von definierten Objekttypen verwendet werden. Dieses Thema behandeln wir als nächstes."
+
+#. Tag: title
+#: Chapter_05.xml:263
+#, no-c-format
+msgid "Writing an OSV"
+msgstr "Schreiben eines OSV"
+
+#. Tag: para
+#: Chapter_05.xml:264
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr "Das Schreiben eines OSV-Plugins gestattet es Ihnen, die Möglichkeiten des Object Store Browsers zu erweitern, um den Status benutzerdefinierter abstrakter Datensätze anzuzeigen. Ein OSV-Plugin ist einfach eine Klasse, die das Interface implementiert:"
+
+#. Tag: code
+#: Chapter_05.xml:269
+#, no-c-format
+msgid "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+
+#. Tag: para
+#: Chapter_05.xml:271
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr "Es muss in einer JAR innerhalb des Plugins-Verzeichnisses gepackt werden. Dieses Beispiel zeigt, wie ein OSV-Plugin für eine abstrakte Datensatz-Unterklasse erstellt wird, die wie folgt aussieht:"
+
+#. Tag: screen
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:275
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr "Wird der abstrakte Datensatz im Object Store Browser angesehen, ist es schön, wenn der aktuelle Wert erscheint. Dies lässt sich leicht einrichten, da wir den Status in eine Instanz unseres abstrakten Datensatzes lesen und <methodname>getValue()</methodname> aufrufen können. Nachfolgend sehen Sie den Quellcode eines Object Store Browsers:"
+
+#. Tag: screen
+#: Chapter_05.xml:278
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:279
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr ""
+"Die <methodname>uidNodeExpanded</methodname>-Methode wird aufgerufen, wenn eine den gegebenen Typ repräsentierende UID "
+"(Unique Identification) im Object Store Hierarchie-Baum erweitert wird. Dies ist aus Sicht dieses Plugin nicht erforderlich, da dieser abstrakte Datensatz nicht direkt im Objektspeicher sichtbar ist, sondern nur via einer der Listen in einer atomischen Aktion einsehbar ist. Die Methode "
+"<methodname>entrySelected</methodname> wird aufgerufen, wenn ein Eintrag aus der Objektansicht ausgewählt wird, der ein Objekt des vorgegebenen Typs repräsentiert. In beiden Methoden wird das StatePanel zur Anzeige von Informationen zum Objektstatus verwendet. Das Status-Panel besitzt folgende Methoden, die bei der Anzeige dieser Informationen helfen:"
+
+#. Tag: para
+#: Chapter_05.xml:284
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr "<methodname>setInfo(String info)</methodname>: Diese Methode kann zur Anzeige allgemeiner Informationen verwendet werden."
+
+#. Tag: para
+#: Chapter_05.xml:289
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr "<methodname>setData(String name, String value)</methodname>: Diese Methode wird dazu verwendet Informationen in die Tabelle zu platzieren, die durch das Object Store Browser Tool dargestellt wird."
+
+#. Tag: para
+#: Chapter_05.xml:294
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: Diese Methode wird zur Aktivierung der Details-Schaltfläche verwendet. Das Listener-Interface gestattet es, dass ein Plugin informiert wird, wenn diese Schaltfläche gedrückt wird. Es hängt vom Plugin-Entwickler ab zu entscheiden, wie diese Informationen weiter angezeigt werden."
+
+#. Tag: para
+#: Chapter_05.xml:299
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr "In diesem Beispiel lesen wird den Status aus dem Objektspeicher und verwenden den von getValue() wiedergegebenen Wert zur Eingabe in eine Status-Panel-Tabelle. Die getType()-Methode gibt den Typ wieder, gegen den dieses Plugin registriert werden soll."
+
+#. Tag: para
+#: Chapter_05.xml:302
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+"Um dieses Plug-in zum Object Store Browser hinzuzufügen ist es notwendig, es in eine JAR-Datei (Java Archive) zu packen deren Namen ein 'osbv-' vorangestellt ist. "
+"Die JAR-Datei muss bestimmte Informationen innerhalb der Manifestdatei enthalten, damit der Object Store Browser weiß, bei welchen Klassen es sich um Plug-ins handelt. All dies kann mittels eines <ulink url=\"http://ant.apache.org\">Apache ANT</ulink>-Skripts wie folgt durchgeführt werden:"
+
+#. Tag: screen
+#: Chapter_05.xml:305
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+
+#. Tag: para
+#: Chapter_05.xml:306
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr ""
+"Nachdem eine JAR mit den korrekten Informationen in der Manifest-Datei erstellt wurde, muss sie nur noch im <emphasis>bin/tools/plugins</"
+"emphasis>-Verzeichnis untergebracht werden."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_06.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_06.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,878 @@
+# translation of Chapter_06.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_06\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-29 06:44+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr "Konstruktion von transaktionalen Objekten für Java-Anwendungen"
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr "Anwendungskonstruktion"
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid "There are two distinct phases to the development of a TxCore application:"
+msgstr "Es gibt zwei unterschiedliche Phasen bei der Entwicklung einer TxCore-Anwendung:"
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr "Entwicklung neuer Klassen mit bestimmten Charakteristika (z.B. persistent, wiederherstellbar d.h. \"recoverable\", nebenläufigkeitskontrolliert d.h. \"Concurrency Controlled\")."
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid "Developing the application(s) that make use of the new classes of objects."
+msgstr "Entwicklung der Anwendung(en), die die neue Objektklasse verwenden."
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr ""
+"Obwohl diese beiden Phasen parallel und von einer einzelnen Person durchgeführt werden können, nennen wir den ersten Schritt den Job des Klassenentwicklers und den zweiten den Job des Anwendungsentwicklers. Der Klassenentwickler kümmert sich um die Definition der passenden <code>save_state</code> und <code>restore_state</code>-Operationen für die Klasse, setzt passende Sperren in Operationen und ruft die passenden TxCore-Klassenkonstruktoren."
+"Der Anwendungsentwickler wird sich eher um die Definition der allgemeinen Struktur der Applikation kümmern, insbesondere im Hinblick auf die Verwendung von atomischen Aktionen."
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr ""
+"Dieses Kapitel illustriert die in vorangegangenen Abschnitten gemachten Punkte anhand einer einfachen Anwendung: In diesem Falle wird eine einfache FIFO Warteschleifen-Klasse für ganzzahlige Werte entwickelt. Die Implementierung der Warteschleife wird eine doppelt verlinkte Listenstruktur haben und wird als einzelnes Objekt implementiert. "
+"Wir werden dieses Beispiel für den Rest dieses Handbuchs verwenden, um die verschiedenen durch TxCore bereitgestellten Mechanismen zu illustrieren. Zwar ist dies eine unrealistische Beispielanwendung, ermöglicht es jedoch sämtliche TxCore-Modifikationen zu beschreiben, ohne dass tiefer gehende Kenntnisse vom Anwendungscode nötig wären."
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr "Im Rest dieses Kapitels gehen wir davon aus, dass die Anwendung nicht distribuiert wird. Ist dies nicht der Fall, so muss Kontextinformation entweder implizit oder explizit fortgepflanzt werden."
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr "Warteschleifen-Beschreibung (Queue Description)"
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr "Bei der Warteschleife handelt es sich um eine traditionelle FIFO-Warteschleife wo Elemente vorne hinzugefügt und hinten entfernt werden. Die durch die Warteschleifenklasse gelieferten Operationen gestatten es Werten in die Warteschleife platziert zu werden (\"enqueue\") und daraus entfernt zu werden (\"dequeue\"), und es ist auch möglich die Werte von Elementen in der Warteschleife zu verändern oder zu überprüfen. In dieser Beispielimplementierung wird ein Array zur Repräsentation einer Warteschleife verwendet. Eine Beschränkung auf <code>QUEUE_SIZE</code>-Elemente gilt für dieses Beispiel."
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid "The Java interface definition of this simple queue class is given below:"
+msgstr "Die Java Interface-Definition dieser einfachen Warteschleifenklasse ist unten angegeben:"
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr "Konstruktoren und Dekonstruktoren"
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr "Wie im vorherigen Abschnitt dargestellt, muss zur Verwendung eines bestehenden persistenten Objekts ein spezieller Konstruktor verwendet werden, der die Uid des persistenten Objekts annimt; die Implementierung eines solchen Konstruktors ist unten angegeben:"
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr "Der ein neues persistentes Objekt erstellende Konstruktor ist ähnlich:"
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr ""
+"Die Verwendung einer atomischen Aktion innerhalb des Konstruktors für ein neues Objekt folgt den zuvor beschriebenen Richtlinien und stellt sicher, dass der Status des Objekts in den Objektspeicher geschrieben wird, wenn die entsprechende atomische Aktion auf höchster Ebene festgeschrieben wird (welches entweder Aktion A oder eine einschließende Aktion wenn die <code>TransactionalQueue</code> konstruiert wurde). Die Verwendung atomischer Aktionen in einem Konstruktor ist einfach: Eine Aktion muss zuerst deklariert und ihre "
+"\"begin\"-Operation aufgerufen sein; die Operation muss dann eine entsprechende Sperre für das Objekt einstellen (in diesem Fall ist eine <code>WRITE</code>-Sperre erforderlich), dann wird der Hauptkörper des Konstruktors ausgeführt. Ist dies erfolgreich, so kann die atomische Aktion festgeschrieben werden, andernfalls wird sie abgebrochen."
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr "Der Destruktor der Warteschleifen-Klasse muss lediglich die \"terminate\"-Operation von <methodname>LockManager</methodname> aufrufen."
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr "save_state, resotre_state und type"
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr "Die Implementierungen von save_state und restore_state sind relativ einfach für dieses Beispiel:"
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+"Da die Warteschleifen-Klasse ist von der <classname>LockManager</"
+"classname>-Klasse abgeleitet ist, sollte der Operationstyp sein:"
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr "\"Enqueue\"/\"Dequeue\"-Operationen (einreihen und aus der Warteschlange entfernen)"
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr "Sollen Operationen der Warteschlange-Klasse als atomische Aktionen codiert werden, dann könnte die Einreihungsoperation (\"enqueue\") die unten angegebene Struktur besitzen (die Operation zum Entfernen aus der Warteschlange - \"dequeue\" - wäre ähnlich strukturiert):"
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr "queueSize"
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid "The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr "Die Implementierung von <methodname>queueSize</methodname> ist unten dargestellt:"
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr "inspectValue/setValue Operationen"
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr ""
+"Die Implementierung von <methodname>inspectValue</methodname> ist unten dargestellt. "
+"<methodname>setValue</methodname> ist ähnlich, nicht dargestellt."
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr "Der Client"
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr "Statt den gesamten Code für den Client zu zeigen, wollen wir uns auf einen repräsentativen Teil konzentrieren. Vor dem Aufruf von Operationen am Objekt muss der Client zunächst daran anbinden. Im lokalen Fall erfordert dies lediglich, dass der Client eine Instanz des Objekts erstellt."
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr "Vor dem Aufrufen einer der Operationen der Warteschleife, startet der Client eine Transaktion. Die <methodname>queueSize</methodname>-Operation ist unten angezeigt:"
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr "Anmerkungen"
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr "Da das Warteschlangen-Objekt persistent ist, überlebt der Status des Objekts alle Fehlfunktionen des Nodes auf dem es sich befindet. Der Status des Objekts das überlebt, wird von der letzten festgeschriebenen atomischen Aktion produziert, die an dem Objekt durchgeführt wird. Ist es zum Beispiel Absicht einer Anwendung zwei Einreihungsoperationen atomisch durchzuführen, so kann dies erfolgen, indem die Einreihungsoperationen in einer anderen, umschließenden atomischen Aktion verschachtelt werden. Zusätzlich werden nebenläufige Operationen an einem solchen persistenten Objekt serialisiert, wodurch Inkonsistenzen beim Status des Objekts verhindert werden. Da jedoch die Elemente der Warteschlange-Objekte nicht individuell auf Nebenläufigkeit kontrolliert werden, werden bestimmte Kombinationen von Aufrufen nebenläufiger Operationen seriell ausgeführt, während sie der Logik nach nebenläufig ausgeführt werden sollten. Zum Beispiel bei der Bearbeitung der Stati!
  von zwei verschiedenen Elementen der Warteschlange. Im nächsten Abschnitt gehen wir auf einige dieser Themen ein."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_07.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/Chapter_07.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,346 @@
+# translation of Chapter_07.po to
+# Language de-DE translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_07\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-29 07:01+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr "Konfigurationsoptionen"
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr "Optionen"
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr "Die folgende Tabelle zeigt die Konfigurations-Features, mit den Standardwerten in kursivem Schriftbild. Weitere Einzelheiten zu jeder Option finden Sie in den relevanten Abschnitten dieses Dokuments."
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr "TxCore-Konfigurationsoptionen."
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr "Konfigurationsname"
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr "Mögliche Werte"
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeSync"
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr "ON/OFF"
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr "Schaltet die Synchronisation des Objektspeichers an oder aus. Mit Vorsicht zu verwenden."
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeType"
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr "Legt den Typ von zu verwendender Objektspeicher-Implementierung fest."
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr "255/jeder ganzzahlige Wert"
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr "Einstellen der Verzeichniszahl zum Hashen der Objektstati für die HashedStore-Objektspeicher-Implementierung."
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreType"
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr "BasicLockStore/BasicPersistentLockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr "Festlegen der zu verwendenden Sperrspeicher-Implementierung."
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr "Windows: .\\LockStore Unix: ./LockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr "Legt den Speicherort des Sperrspeichers fest."
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr "Jeder Speicherort in den die Anwendung schreiben kann."
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr "Festlegen des Speicherorts des Objektspeichers."
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr "defaultStore"
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr "Festlegen des Namen des Objektspeicher-Root."
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr "com.arjuna.ats.arjuna.coordinator.actionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr "ActionStore/HashedActionStore/JDBCActionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr "Die zu verwendende Implementierung von Transaktionsprotokoll."
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr "YES/NO"
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr "Schaltet asynchrone Festschreibung an oder aus (Standard)."
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr "Schaltet asynchrones \"Prepare\" an oder aus (Standard)."
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.transactionSync"
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr "JDBCAccess-Klassenname"
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr "Die zu verwendende JDBCAccess-Implementierung für Objektspeicher auf Benutzerebene."
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr "Die zu verwendende JDBCAccess-Implementierung für Transaktions-Objektspeicher."
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr "Aktivieren oder Deaktivieren der ein-Phasen Festschreibungsoptimierung."
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr "Aktivieren oder Deaktivieren der schreibgeschützten (read-only) Optimierung für den Abbruch der zweiten Phase."
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr "Starten/stoppen des Sammelns von statistischen Informationen zur Transaktion."
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr "com.arjuna.ats.arjuna.coordinator.startDisabled"
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr ""
+"Mit aktiviertem oder deaktiviertem Transaktionssystem starten oder stoppen. Hin- und herschalten via der com."
+"arjuna.ats.arjuna.coordinator.TxControl-Klasse."
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr "Integer"
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr "Timeout in Millisekunden"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/de-DE/JBoss_TS_Programmers_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_A.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_A.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_A.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,269 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix>
+    <title>Object store implementations</title>
+    
+    <section>
+        <title>The ObjectStore</title>
+		<para>
+			In this appendix we shall examine the various TxCore object store implementations and give guidelines as to how other implementations may be created and plugged into an application.
+		</para>
+		<para>
+			This release of JBossTS contains several different implementations of a basic object store. Each serves a particular purpose and is generally optimised for that purpose. All of the implementations are derived from the <interface>ObjectStore</interface> interface. This defines the minimum operations which must be provided in order for an object store implementation to be used by JBossTS. The default object store implementation can be overridden at runtime by setting the <property>com.arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable to one of the types described below.
+		</para>
+<screen>
+	/*
+	* This is the base class from which all object store types are derived.
+	* Note that because object store instances are stateless, to improve
+	* efficiency we try to only create one instance of each type per process.
+	* Therefore, the create and destroy methods are used instead of new
+	* and delete. If an object store is accessed via create it *must* be
+	* deleted using destroy. Of course it is still possible to make use of
+	* new and delete directly and to create instances on the stack.
+	*/
+	
+	public class ObjectStore
+	{
+	public static final int OS_COMMITTED;
+	public static final int OS_COMMITTED_HIDDEN;
+	public static final int OS_HIDDEN;
+	public static final int OS_INVISIBLE;
+	public static final int OS_ORIGINAL;
+	public static final int OS_SHADOW;
+	public static final int OS_UNCOMMITTED;
+	public static final int OS_UNCOMMITTED_HIDDEN;
+	public static final int OS_UNKNOWN;
+	public ObjectStore (ClassName type);
+	public ObjectStore (ClassName type, String osRoot);
+	public ObjectStore (String osRoot);
+	public synchronized boolean allObjUids (String s, InputObjectState buff)
+	throws ObjectStoreException;
+	public synchronized boolean allObjUids (String s, InputObjectState buff,
+	int m) throws ObjectStoreException;
+	
+	public synchronized boolean allTypes (InputObjectState buff)
+	throws ObjectStoreException;
+	public synchronized int currentState(Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized boolean commit_state (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized boolean hide_state (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized boolean reveal_state (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized InputObjectState read_committed (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized InputObjectState read_uncommitted (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized boolean remove_committed (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized boolean remove_uncommitted (Uid u, String tn)
+	throws ObjectStoreException;
+	public synchronized boolean write_committed (Uid u, String tn,
+	OutputObjectState buff)
+	throws ObjectStoreException;
+	public synchronized boolean write_uncommitted (Uid u, String tn,
+	OutputObjectState buff)
+	throws ObjectStoreException;
+	public static void printState (PrintStream strm, int res);
+};			
+</screen>
+		<para>
+			JBossTS programmers need not usually interact with any of the object store implementations directly other than possibly to create them in the first place (even this is not necessary if the default store type is used as JBossTS will create stores as necessary). All stores manipulate instances of the class <classname>ObjectState</classname> which are named using a type (via the object's type() operation) and a Uid. For atomic actions purposes object states in the store can be principally in two distinct states: OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED state but when modified under the control of an atomic action a new second object state may be written that is in the OS_UNCOMMITTED state. If the action commits this second object state replaces the original and becomes OS_COMMITTED. If the action aborts, this second object state is simply discarded. All of the implementations provided with this release handle these state transitions by ma!
 king use of shadow copies of object states, however, any other implementation that maintains this abstraction is permissible. Object states may become hidden (and thus inaccessible) under the control of the crash recovery system.
+		</para>
+		<para>
+			Browsing of the contents of a store is possible through the <methodname>allTypes</methodname> and <methodname>allObjUids</methodname> operations. <methodname>allTypes</methodname> returns an <type>InputObjectState</type> containing all of the type names of all objects in a store, terminated by a null name. <methodname>allObjUids</methodname> returns an <type>InputObjectState</type> that contains all of the Uids of all objects of a given type terminated by the special <methodname>Uid.nullUid()</methodname>.
+		</para>
+    </section>
+    <section id="Persistent_object_stores">
+	    <title>Persistent object stores</title>
+	    	<para>
+			This section briefly describes the characteristics and optimisations of each of the supplied implementations of the persistent object store. Persistent object states are mapped onto the structure of the file system supported by the host operating system.
+		</para>
+		<formalpara>
+			<title>Common functionality</title>
+			<para>In addition to the features mentioned earlier all of the supplied persistent object stores obey the following rules:</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Each object state is stored in its own file that is named using the <code>Uid</code> of the object.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The type of an object (as given by the <methodname>type()</methodname> operation) determines the directory into which the object is placed.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					All of the stores have a common root directory that is determined when JBossTS is configured. This directory name is automatically prepended to any store specific root information.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					All stores also have the notion of a localised root directory that is automatically prepended to the type of the object to determine the ultimate directory name. The localised root name is specified when the store is created. By default the localised root name is <code>defaultStore</code>.
+				</para>
+			</listitem>
+		</itemizedlist>
+<screen>
+&lt;ObjectStore root Directory from configure&gt;	/JBossTS/ObjectStore/
+	&lt;ObjectStore Type1&gt;			FragmentedStore/
+		&lt;Default root&gt;			defaultStore/
+			&lt;StateManager&gt;			StateManager
+				&lt;LockManager&gt;			LockManager/
+					&lt;User Types&gt;		
+	&lt;Localised root 2&gt;		myStore/
+		&lt;StateManager&gt;			StateManager/
+									
+	&lt;ObjectStore Type2&gt;		ActionStore/
+		&lt;Default root&gt;			defaultStore/	
+</screen>
+    
+		<formalpara>
+			<title>The shadowing store</title>
+			<para>
+				This is the original version of the object store as provided in prior releases and is implemented by the class <classname>ShadowingStore</classname>. It is simple but slow. It uses pairs of files to represent objects (the shadow version and the committed version) and files are opened, locked, operated upon, unlocked and closed on every interaction with the object store. Thus significant portions of time can be spent in the system simply opening, closing and renaming files, all of which are very expensive operations.
+			</para>
+		</formalpara>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>ShadowingStore</type>.
+		</para>
+		<formalpara>
+			<title>No file-level locking</title>
+			<para>
+				Since transactional objects are concurrency controlled through <methodname>LockManager</methodname>, it is not necessary to impose additional locking at the file level, as the basic ShadowingStore implementation does. Therefore, the default object store implementation for JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-level locking. This enables it to provide better performance than the <methodname>ShadowingStore</methodname> implementation.
+			</para>
+		</formalpara>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>ShadowNoFileLockStore</type>.
+		</para>
+		<formalpara>
+			<title>The hashed store</title>
+				<para>
+					The <code>HashedStore</code> has the same structure for object states as the shadowing stores but has an alternate directory structure that is better suited to storing large numbers of objects of the same type. Using this store objects are scattered amongst a set of directories by applying a hashing function to the object's Uid. By default 255 sub-directories are used. However, this can be overridden by setting the <code>HASHED_DIRECTORIES</code> environment variable accordingly.
+				</para>
+		</formalpara>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>HashedStore</type>.
+		</para>
+		<formalpara>
+			<title>No file-level locking</title>
+				<para>
+					Since transactional objects are concurrency controlled through <methodname>LockManager</methodname>, it is not necessary to impose additional locking at the file level, as the basic <methodname>ShadowingStore</methodname> implementation does. Therefore, the default object store implementation for JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-level locking. This enables it to provide better performance than the <methodname>ShadowingStore</methodname> implementation.
+				</para>
+		</formalpara>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>ShadowNoFileLockStore</type>.
+		</para>
+		<formalpara>
+			<title>The hashed store</title>
+			<para>
+				The <methodname>HashedStore</methodname> has the same structure for object states as the shadowing stores but has an alternate directory structure that is better suited to storing large numbers of objects of the same type. Using this store objects are scattered amongst a set of directories by applying a hashing function to the object's Uid. By default 255 sub-directories are used. However, this can be overridden by setting the <code>HASHED_DIRECTORIES</code> environment variable accordingly.
+			</para>
+		</formalpara>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>HashedStore</type>.
+		</para>
+		<formalpara>
+			<title>The JDBC store</title>
+			<para>
+				The <methodname>JDBCStore</methodname> uses a JDBC database to save persistent object states; when used in conjunction with the Transactional Objects for Java API nested transaction support is available. In the current implementation, all object states are stored as Binary Large Objects (BLOBs) within the same table. The limitation on object state size imposed by using BLOBs is 64k; if an attempt is made to store an object state which exceeds this limit an error will be output and the state will not be stored. The transaction will subsequently be forced to roll back.
+			</para>
+		</formalpara>
+		<para>
+			When using the JDBC object store, the application must provide an implementation of the following interface, located in the <code>com.arjuna.ats.arjuna.objectstore</code> package:
+		</para>
+<screen>
+public interface JDBCAccess
+{
+	public Connection getConnection () throws SQLException;
+	public void putConnection (Connection conn) throws SQLException;
+	public void initialise (ObjectName objName);
+}
+</screen>
+		<para>
+			The implementation of this class is responsible for providing the <emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save and restore object states:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<methodname>getConnection</methodname>: returns the Connection to use. This method will be called whenever a connection is required and the implementation should use whatever policy is necessary for determining what connection to return. This method need not return the same Connection instance more than once.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<methodname>putConnection</methodname>: this method will be called to return one of the Connections acquired from getConnection. Connections are returned if any errors occur when using them.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<methodname>initialise</methodname>: this can be used to pass additional arbitrary information to the implementation.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The JDBC object store will initially request the number of Connections defined in the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeInitial</property> property and will use no more than defined in the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</property> property.
+		</para>
+		<para>
+			The implementation of the <interfacename>JDBCAccess</interfacename> interface to use should be set in the <property>com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess</property> property variable.
+		</para>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>JDBCStore</type>.
+		</para>
+		<para>
+			A JDBC object store can be used for managing the transaction log. In this case, the transaction log implementation should be set to <property>JDBCActionStore</property> and the <methodname>JDBCAccess</methodname> implementation must be provided via the <property>com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this case, the default table name is JBossTSTxTable.
+		</para>
+		<note>
+			<para>
+				It is possible to use the same JDBCAccess implementation for both the user object store and also the transaction log.
+			</para>
+		</note>
+		<formalpara>
+			<title>The cached store</title>
+				<para>
+					This object store used the hashed object store, but does not read or write states to the persistent backing store immediately. It maintains the states in a volatile memory cache and either flushes the cache periodically or when it is full. The failure semantics associated with this object store are different to the normal persistent object stores, because a failure could result in states in the cache being lost.
+				</para>
+		</formalpara>
+		<para>
+			If overriding the object store implementation, the type of this object store is <type>CachedStore</type>.
+		</para>
+		<para>
+			The store can be configured with the following properties:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</property> sets the number of internal stores to hash the states over. The default value is 128.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</property> is the maximum size the cache can reach before a flush is triggered. The default is 10240 bytes.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.removedItems</property> is the maximum number of removed items that the cache can contain before a flush is triggered. By default, calls to remove a state that is in the cache will simply remove the state from the cache, but leave a blank entry (rather than remove the entry immediately, which would affect the performance of the cache). When triggered, these entries are removed from the cache. The default value is twice the size of the hash.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</property> is the maximum number of items that are allowed to build up in the cache before it is flushed. The default value is 100.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</property> sets the time in milliseconds for periodically flushing the cache. The default is 120 seconds.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</property> determines whether flushes of the cache are sync-ed to disk. The default is OFF. To enable, set to ON.
+				</para>
+			</listitem>
+		</itemizedlist>
+    </section>
+</appendix>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_A.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_B.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_B.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_B.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,253 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix>
+   <title>Class definitions</title>
+    
+    <section>
+        <title>Introduction</title>
+	<para>
+		This appendix contains an overview of those classes that the application programmer will typically use. The aim of this appendix is to provide a quick reference guide to these classes for use when writing applications in TxCore. For clarity only the public and protected  interfaces of the classes will be given.
+	</para>
+    </section>
+    <section>
+    	<title>Class library</title>
+<!--	<formalpara>
+		<title>Lock Manager</title>
+		<para></para> 
+	</formalpara> -->
+	<example>
+		<title>Lock Manager</title>
+<screen>
+public class LockResult
+{
+	public static final int GRANTED;
+	public static final int REFUSED;
+	public static final int RELEASED;
+};
+	
+public class ConflictType
+{
+	public static final int CONFLICT;
+	public static final int COMPATIBLE;
+	public static final int PRESENT;
+};
+	
+public abstract class LockManager extends StateManager
+{
+	public static final int defaultRetry;
+	public static final int defaultTimeout;
+	public static final int waitTotalTimeout;
+	
+	public final synchronized boolean releaselock (Uid lockUid);
+	public final synchronized int setlock (Lock toSet);
+	public final synchronized int setlock (Lock toSet, int retry);
+	public final synchronized int setlock (Lock toSet, int retry, int sleepTime);
+	public void print (PrintStream strm);
+	public String type ();
+	public boolean save_state (OutputObjectState os, int ObjectType);
+	public boolean restore_state (InputObjectState os, int ObjectType);
+	
+	protected LockManager ();
+	protected LockManager (int ot);
+	protected LockManager (int ot, ObjectName attr);
+	protected LockManager (Uid storeUid);
+	protected LockManager (Uid storeUid, int ot);
+	protected LockManager (Uid storeUid, int ot, ObjectName attr);
+	
+	protected void terminate ();
+};
+</screen>
+</example>
+<!--	<formalpara>
+		<title>StateManager</title>
+			<para></para> 
+	</formalpara> -->
+	<example>
+		<title>StateManager</title>
+<screen>
+public class ObjectStatus
+{
+	public static final int PASSIVE;
+	public static final int PASSIVE_NEW;
+	public static final int ACTIVE;
+	public static final int ACTIVE_NEW;
+};
+	
+public class ObjectType
+{
+	public static final int RECOVERABLE;
+	public static final int ANDPERSISTENT;
+	public static final int NEITHER;
+};
+	
+public abstract class StateManager
+{
+	public boolean restore_state (InputObjectState os, int ot);
+	public boolean save_state (OutputObjectState os, int ot);
+	public String type ();
+	
+	public synchronized boolean activate ();
+	public synchronized boolean activate (String rootName);
+	public synchronized boolean deactivate ();
+	public synchronized boolean deactivate (String rootName);
+	public synchronized boolean deactivate (String rootName, boolean commit);
+	
+	public synchronized int status ();
+	public final Uid get_uid ();
+	public void destroy ();
+	public void print (PrintStream strm);
+	
+	protected void terminate ();
+	
+	protected StateManager ();
+	protected StateManager (int ot);
+	protected StateManager (int ot, ObjectName objName);
+	protected StateManager (Uid objUid);
+	protected StateManager (Uid objUid, int ot);
+	protected StateManager (Uid objUid, int ot, ObjectName objName);
+	protected synchronized final void modified ();
+};
+</screen>
+</example>
+<!--	<formalpara>
+		<title>Input/OutputObjectState</title>
+			<para></para> 
+		</formalpara> -->
+		<example>
+			<title>Input/OutputObjectState</title>
+<screen>
+class OutputObjectState extends OutputBuffer
+{
+	public OutputObjectState (Uid newUid, String typeName);
+	
+	public boolean notempty ();
+	public int size ();
+	public Uid stateUid ();
+	public String type ();
+};
+class InputObjectState extends ObjectState
+{
+	public OutputObjectState (Uid newUid, String typeName, byte[] b);
+	
+	public boolean notempty ();
+	public int size ();
+	public Uid stateUid ();
+	public String type ();
+};
+</screen>
+</example>
+<!--	<formalpara>
+		<title>Input/OutputBuffer</title>
+			<para></para>
+	</formalpara> -->
+	<example>
+		<title>Input/OutputBuffer</title>
+<screen>
+public class OutputBuffer
+{
+	public	OutputBuffer ();
+	
+	public final synchronized boolean valid ();
+	public synchronized byte[] buffer();
+	public synchronized int length ();
+	
+	/* pack operations for standard Java types */
+	
+	public synchronized void packByte (byte b) throws IOException;
+	public synchronized void packBytes (byte[] b) throws IOException;
+	public synchronized void packBoolean (boolean b) throws IOException;
+	public synchronized void packChar (char c) throws IOException;
+	public synchronized void packShort (short s) throws IOException;
+	public synchronized void packInt (int i) throws IOException;
+	public synchronized void packLong (long l) throws IOException;
+	public synchronized void packFloat (float f) throws IOException;
+	public synchronized void packDouble (double d) throws IOException;
+	public synchronized void packString (String s) throws IOException;
+};
+public class InputBuffer
+{
+	public	InputBuffer ();
+	
+	public final synchronized boolean valid ();
+	public synchronized byte[] buffer();
+	public synchronized int length ();
+	
+	/* unpack operations for standard Java types */
+	
+	public synchronized byte unpackByte () throws IOException;
+	public synchronized byte[] unpackBytes () throws IOException;
+	public synchronized boolean unpackBoolean () throws IOException;
+	public synchronized char unpackChar () throws IOException;
+	public synchronized short unpackShort () throws IOException;
+	public synchronized int unpackInt () throws IOException;
+	public synchronized long unpackLong () throws IOException;
+	public synchronized float unpackFloat () throws IOException;
+	public synchronized double unpackDouble () throws IOException;
+	public synchronized String unpackString () throws IOException;
+};
+</screen>
+</example>
+<!--	<formalpara>
+		<title>Uid</title>
+			<para></para> 
+		</formalpara> -->
+	<example>
+		<title>Uid</title>
+<screen>
+public class Uid implements Cloneable
+{
+	public Uid ();
+	public Uid (Uid copyFrom);
+	public Uid (String uidString);
+	public Uid (String uidString, boolean errorsOk);
+	public synchronized void pack (OutputBuffer packInto) throws IOException;
+	public synchronized void unpack (InputBuffer unpackFrom) throws IOException;
+	
+	public void print (PrintStream strm);
+	public String toString ();
+	public Object clone () throws CloneNotSupportedException;
+	public synchronized void copy (Uid toCopy) throws UidException;
+	public boolean equals (Uid u);
+	public boolean notEquals (Uid u);
+	public boolean lessThan (Uid u);
+	public boolean greaterThan (Uid u);
+	
+	public synchronized final boolean valid ();
+	public static synchronized Uid nullUid ();
+};
+</screen>
+</example>
+<!--	<formalpara>
+		<title>AtomicAction</title>
+			<para></para> 
+		</formalpara> -->
+	<example>
+		<title>AtomicAction</title>
+<screen>
+public class AtomicAction
+{
+	public AtomicAction ();
+	
+	public void begin () throws SystemException, SubtransactionsUnavailable,
+	NoTransaction;
+	public void commit (boolean report_heuristics) throws SystemException, 
+	NoTransaction, HeuristicMixed,
+	HeuristicHazard,TransactionRolledBack;
+	public void rollback () throws SystemException, NoTransaction;
+	public Control control () throws SystemException, NoTransaction;
+	public Status get_status () throws SystemException;
+	/* Allow action commit to be supressed */    
+	public void rollbackOnly () throws SystemException, NoTransaction;
+	
+	public void registerResource (Resource r) throws SystemException, Inactive;
+	public void registerSubtransactionAwareResource (SubtransactionAwareResource sr)
+	throws SystemException, NotSubtransaction;
+	public void registerSynchronization (Synchronization s) throws SystemException,
+	Inactive;
+};
+</screen>
+</example>
+    </section>
+</appendix>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Appendix_B.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,28 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo>
+	<title>JBoss Transactions Programmers Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>1</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.5</productnumber>
+	<abstract>
+		<para>This book is the Enterprise Application Platform edition of the JBoss TS Programmers
+Guide</para></abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/redhat-logo.svg" />
+			</imageobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Book_Info.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,292 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+    <title>Overview</title>
+    
+    <section>
+        <title>Introduction</title>
+        <para>This chapter contains a description of the use of the <classname>TxCore</classname> transaction engine and the <firstterm>Transactional Objects for Java</firstterm> classes and facilities. The classes mentioned in this chapter are the key to writing fault-tolerant applications using transactions. Thus, after describing them we shall apply them in the construction of a simple application. The classes to be described in this chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and <classname>com.arjuna.ats.arjuna</classname> packages.</para>
+    </section>
+    
+    <section>
+        <title>TxCore – the transaction engine</title>
+        
+        <para>
+            In keeping with the object-oriented view, the mechanisms needed to construct reliable distributed applications are presented to programmers in an object-oriented manner. Some mechanisms need to be inherited, for example, concurrency control and state management; while other mechanisms, such as object storage and transactions, are implemented as <classname>TxCore</classname> objects that are created and manipulated like any other object.
+        </para>
+        
+        <note><para>When the manual talks about using persistence and concurrency control facilities it assumes that the <emphasis>Transactional Objects for Java</emphasis> (TXOJ) classes are being used. If this is not the case then the programmer is responsible for all of these issues.</para></note>
+        
+        <para><classname>TxCore</classname> exploits object-oriented techniques to present programmers with a toolkit of Java classes from which application classes can inherit to obtain desired properties, such as persistence and concurrency control. These classes form a hierarchy, part of which is shown below and which will be described later in this document.</para>
+        
+        <mediaobject id="figure_1">
+            <imageobject>
+                <imagedata align="center" fileref="images/TXCore_class_hierarchy.png" />
+            </imageobject>
+            <caption> Txcore class hierarchy </caption>
+        </mediaobject>
+        
+        <para>Apart from specifying the scopes of transactions, and setting appropriate locks within objects, the application programmer does not have any other responsibilities: <classname>TxCore</classname> and <emphasis>Transactional Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will be registered with, and be driven by, the appropriate transactions, and crash recovery mechanisms are invoked automatically in the event of failures.</para>
+        
+        <section>
+ 
+             <title>Saving object states</title>
+            
+            <para>
+                <classname>TxCore</classname> needs to be able to remember the state of an object for several purposes, including recovery (the state represents some past state of the object) and persistence (the state represents the final state of an object at application termination). Since these requirements have common functionality they are all implemented using the same mechanism: the classes <classname>InputObjectState</classname> and <classname>OutputObjectState</classname>. The classes maintain an internal array into which instances of the standard types can be contiguously packed (unpacked) using appropriate <command>pack</command> (<command>unpack</command>) operations. This buffer is automatically resized as required should it have insufficient space. The instances are all stored in the buffer in a standard form (so-called network byte order) to make them machine independent. Any other architecture independent format (such as XDR or ASN.1) could be implemented s!
 imply by replacing the operations with ones appropriate to the encoding required.
+            </para>
+        </section>
+        
+        <section>
+            <title>The object store</title>
+            
+            <para>Implementations of persistence can be affected by restrictions imposed by the Java SecurityManager. Therefore, the object store provided with <classname>TxCore</classname> is implemented using the techniques of interface/implementation. The current distribution has implementations which write object states to the local file system or database, and remote implementations, where the interface uses a client stub (proxy) to remote services.</para>
+            
+            <para>
+                Persistent objects are assigned unique identifiers (instances of the Uid class), when they are created, and this is used to identify them within the object store. States are read using the <literal>read_committed</literal> operation and written by the <literal>write_(un)committed</literal> operations.
+                </para>
+        </section>
+        
+        <section>
+            <title>Recovery and persistence</title>
+            <para>At the root of the class hierarchy is the class <classname>StateManager</classname>. This class is responsible for object activation and deactivation and object recovery. The simplified signature of the class is:</para>
+            
+            <screen>public abstract class StateManager
+{
+    public boolean activate ();
+    public boolean deactivate (boolean commit);
+
+    public Uid get_uid (); // object’s identifier.
+
+    // methods to be provided by a derived class
+
+    public boolean restore_state (InputObjectState os);
+    public boolean save_state (OutputObjectState os);
+
+    protected StateManager ();
+    protected StateManager (Uid id);
+};
+            </screen>
+            
+            <para>Objects are assumed to be of three possible flavours. They may simply be recoverable, in which case <classname>StateManager</classname> will attempt to generate and maintain appropriate recovery information for the object. Such objects have lifetimes that do not exceed the application program that creates them. Objects may be recoverable and persistent, in which case the lifetime of the object is assumed to be greater than that of the creating or accessing application, so that in addition to maintaining recovery information <classname>StateManager</classname> will attempt to automatically load (unload) any existing persistent state for the object by calling the activate (deactivate) operation at appropriate times. Finally, objects may possess none of these capabilities, in which case no recovery information is ever kept nor is object activation/deactivation ever automatically attempted.</para>
+      
+        
+            <para>If an object is recoverable or recoverable and persistent then <classname>StateManager</classname> will invoke the operations <command>save_state</command> (while performing <command>deactivate</command>), and <command>restore_state</command> (while performing activate) at various points during the execution of the application. These operations must be implemented by the programmer since <classname>StateManager</classname> cannot detect user level state changes. (We are examining the automatic generation of default <command>save_state</command> and <command>restore_state</command> operations, allowing the programmer to override this when application specific knowledge can be used to improve efficiency.) This gives the programmer the ability to decide which parts of an object’s state should be made persistent. For example, for a spreadsheet it may not be necessary to save all entries if some values can simply be recomputed. The <command>save_state</comman!
 d> implementation for a class <classname>Example</classname> that has integer member variables called A, B and C could simply be:</para>
+        
+            <screen>public boolean save_state(OutputObjectState o)
+{
+    if (!super.save_state(o))
+    return false;
+            
+    try
+        {
+            o.packInt(A);
+            o.packInt(B);
+            o.packInt(C));
+        }
+    catch (Exception e)
+        {
+            return false;
+        }
+        
+    return true;
+}                      
+            </screen>
+            
+            <para>Objects are assumed to be of three possible flavours. They may simply be <emphasis>recoverable</emphasis>, in which case <classname>StateManager</classname> will attempt to generate and maintain appropriate recovery information for the object. Such objects have lifetimes that do not exceed the application program that creates them. Objects may be <emphasis>recoverable and persistent</emphasis>, in which case the lifetime of the object is assumed to be greater than that of the creating or accessing application, so that in addition to maintaining recovery information <classname>StateManager</classname> will attempt to automatically load (unload) any existing persistent state for the object by calling the <classname>activate</classname> (<classname>deactivate</classname>) operation at appropriate times. Finally, objects may possess none of these capabilities, in which case no recovery information is ever kept nor is object activation/deactivation ever automat!
 ically attempted.</para>
+            
+            <para>If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable and persistent</emphasis> then <classname>StateManager</classname> will invoke the operations <command>save_state</command> (while performing <command>deactivate</command>), and <command>restore_state</command> (while performing <command>activate</command>) at various points during the execution of the application. These operations must be implemented by the programmer since <classname>StateManager</classname> cannot detect user level state changes. (We are examining the automatic generation of default <classname>save_state</classname> and <classname>restore_state</classname> operations, allowing the programmer to override this when application specific knowledge can be used to improve efficiency.) This gives the programmer the ability to decide which parts of an object’s state should be made persistent. For example, for a spreadsheet it may not be necessary to save all entries if !
 some values can simply be recomputed. The <classname>save_state</classname> implementation for a class <classname>Example</classname> that has integer member variables called A, B and C could simply be:</para>
+            
+            <screen>public boolean save_state(OutputObjectState o)
+{
+    if (!super.save_state(o))
+    return false;
+            
+    try
+    {
+        o.packInt(A);
+        o.packInt(B);
+        o.packInt(C));
+    }
+    catch (Exception e)
+    {
+        return false;
+    }
+                
+return true;
+}
+            </screen>
+            <note><para>It is necessary for all <command>save_state</command> and <command>restore_state</command> methods to call <classname>super.save_state </classname>and <classname>super.restore_state</classname>. This is to cater for improvements in the crash recovery mechanisms.</para></note>
+        </section>
+        
+        <section>
+            <title>The life-cycle of a Transactional Object for Java </title>
+            
+            <para>A persistent object not in use is assumed to be held in a <emphasis>passive</emphasis> state with its state residing in an object store and <emphasis>activated</emphasis> on demand. The fundamental life cycle of a persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="figure_2"/>.</para>
+            
+            <mediaobject id="figure_2">
+                <imageobject>
+			<imagedata align="center" fileref="images/Persistent_Object_Lifecycle.png" />
+                </imageobject>
+                <caption> The lifecycle of a persistent object. </caption>
+            </mediaobject>
+            
+            <itemizedlist>
+                <listitem><para>The object is initially passive, and is stored in the object store as an instance of the class <classname>OutputObjectState</classname>.</para></listitem>
+                <listitem><para>When required by an application the object is automatically activated by reading it from the store using a <command>read_committed</command> operation and is then converted from an <classname>InputObjectState</classname> instance into a fully-fledged object by the <command>restore_state</command> operation of the object.</para></listitem>
+                <listitem><para>When the application has finished with the object it is deactivated by converting it back into an <classname>OutputObjectState</classname> instance using the <command>save_state</command> operation, and is then stored back into the object store as a shadow copy using write_uncommitted. This shadow copy can be committed, overwriting the previous version, using the <command>commit_state</command> operation. The existence of shadow copies is normally hidden from the programmer by the transaction system. Object de-activation normally only occurs when the top-level transaction within which the object was activated commits.</para></listitem>
+            </itemizedlist>
+            
+            <note><para>During its life time, a persistent object may be made active then passive many times.</para></note>
+         
+        </section>
+        
+        <section>
+            <title>The concurrency controller</title>
+            
+            <para>The concurrency controller is implemented by the class <classname>LockManager</classname> which provides sensible default behaviour while allowing the programmer to override it if deemed necessary by the particular semantics of the class being programmed. As with <classname>StateManager</classname> and persistence, concurrency control implementations are accessed through interfaces. As well as providing access to remote services, the current implementations of concurrency control available to interfaces include:</para>
+            
+            <itemizedlist>
+                <listitem><para>local disk/database implementation, where locks are made persistent by being written to the local file system or database.</para></listitem>
+                <listitem><para>a purely local implementation, where locks are maintained within the memory of the virtual machine which created them; this implementation has better performance than when writing locks to the local disk, but objects cannot be shared between virtual machines. Importantly, it is a basic Java object with no requirements which can be affected by the SecurityManager</para></listitem>
+            </itemizedlist>
+            
+            <para>The primary programmer interface to the concurrency controller is via the setlock operation. By default, the runtime system enforces strict two-phase locking following a multiple reader, single writer policy on a per object basis. However, as shown in <xref linkend="figure_1"/>, by inheriting from the <classname>Lock</classname> class it is possible for programmers to provide their own lock implementations with different lock conflict rules to enable <firstterm>type specific concurrency control</firstterm>.</para>
+            
+            <para>Lock acquisition is (of necessity) under programmer control, since just as <classname>StateManager</classname> cannot determine if an operation modifies an object, <classname>LockManager</classname> cannot determine if an operation requires a read or write lock. Lock release, however, is under control of the system and requires no further intervention by the programmer. This ensures that the two-phase property can be correctly maintained.</para>
+            
+            <screen>public abstract class LockManager extends StateManager
+{
+    public LockResult setlock (Lock toSet, int retry, int timeout);
+};</screen>
+            
+            <para>The <classname>LockManager</classname> class is primarily responsible for managing requests to set a lock on an object or to release a lock as appropriate. However, since it is derived from <classname>StateManager</classname>, it can also control when some of the inherited facilities are invoked. For example, <classname>LockManager</classname> assumes that the setting of a write lock implies that the invoking operation must be about to modify the object. This may in turn cause recovery information to be saved if the object is recoverable. In a similar fashion, successful lock acquisition causes activate to be invoked.</para>
+            
+            <para>The code below shows how we may try to obtain a write lock on an object:</para>
+            
+            <screen>public class Example extends LockManager
+{
+public boolean foobar ()
+{
+    AtomicAction A = new AtomicAction;
+    boolean result = false;
+        
+    A.begin();
+        
+    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)
+    {
+        /*
+        * Do some work, and TXOJ will
+        * guarantee ACID properties.
+        */
+        
+        // automatically aborts if fails
+        
+        if (A.commit() == AtomicAction.COMMITTED)
+        {
+            result = true;
+        }
+    }
+    else
+        A.rollback();
+            
+    return result;
+}
+}</screen>
+            
+        </section>
+        
+        <section>
+            <title>The transaction protocol engine</title>
+            
+            <para>The transaction protocol engine is represented by the <classname>AtomicAction</classname> class, which uses <classname>StateManager</classname> in order to record sufficient information for crash recovery mechanisms to complete the transaction in the event of failures. It has methods for starting and terminating the transaction, and, for those situations where programmers require to implement their own resources, methods for registering them with the current transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, if a transaction is begun within the scope of an already executing transaction it will automatically be nested.</para>
+            
+            <note><para><emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread within an application to share a transaction or execute within its own transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also thread safe.</para></note>
+        </section>
+        
+        <section>
+            <title>Example</title>
+            
+            <para>The simple example below illustrates the relationships between activation, termination and commitment:</para>
+            
+            <screen>{
+    . . .
+    O1 objct1 = new objct1(Name-A);/* (i) bind to "old" persistent object A */
+    O2 objct2 = new objct2();	 /* create a "new" persistent object */
+    OTS.current().begin();		 /* (ii) start of atomic action */
+    
+    objct1.op(...);		      /* (iii) object activation and invocations */
+    objct2.op(...);
+    . . .
+    OTS.current().commit(true); 	/* (iv) tx commits &amp; objects deactivated */
+    } 					/* (v) */</screen>
+            
+            <para>The execution of the above code involves the following sequence of activities:</para>
+            
+            <itemizedlist>
+                <listitem><para>Creation of bindings to persistent objects; this could involve the creation of stub objects and a call to remote objects. In the above example we re-bind to an existing persistent object identified by <literal>Name-A</literal>, and a new persistent object. A naming system for remote objects maintains the mapping between object names and locations and is described in a later chapter.</para></listitem>
+                <listitem><para>Start of the atomic transaction.</para></listitem>
+                <listitem><para>Operation invocations: as a part of a given invocation the object implementation is responsible to ensure that it is locked in read or write mode (assuming no lock conflict), and initialised, if necessary, with the latest committed state from the object store. The first time a lock is acquired on an object within a transaction the object’s state is acquired, if possible, from the object store.</para></listitem>
+                <listitem><para>Commit of the top-level action. This includes updating of the state of any modified objects in the object store.</para></listitem>
+                <listitem><para>Breaking of the previously created bindings.</para></listitem>
+            </itemizedlist>
+            
+        </section>
+        
+        <section>
+            <title>The class hierarchy</title>
+            
+            <para>The principal classes which make up the class hierarchy of <emphasis>TxCore</emphasis> are depicted below.</para>
+            
+            <screen>StateManager		// Basic naming, persistence and recovery control
+                LockManager		// Basic two-phase locking concurrency control service
+                User-Defined Classes
+                Lock			// Standard lock type for multiple readers/single writer
+                User-Defined Lock Classes
+                AbstractRecord		// Important utility class, similar to Resource
+                    RecoveryRecord	            // handles object recovery
+                    LockRecord		// handles object locking
+                    RecordList		// Intentions list
+                    other management record types
+                AtomicAction		// Implements transaction control abstraction
+                    TopLevelTransaction
+                Input/OutputBuffer // Architecture neutral representation of an objects’ state
+                    Input/OutputObjectState	// Convenient interface to Buffer
+                ObjectStore			// Interface to the object storage services</screen>
+            
+            <para>Programmers of fault-tolerant applications will be primarily concerned with the classes <classname>LockManager</classname>, <classname>Lock</classname> and <classname>AtomicAction</classname>. Other classes important to a programmer are <classname>Uid</classname>, and <classname>ObjectState</classname>. Most <emphasis>TxCore</emphasis> classes are derived from the base class <classname>StateManager</classname>, which provides primitive facilities necessary for managing persistent and recoverable objects. These facilities include support for the activation and de-activation of objects, and state-based object recovery. The class <classname>LockManager</classname> uses the facilities of <classname>StateManager</classname> and <classname>Lock</classname> to provide the concurrency control (two-phase locking in the current implementation) required for implementing the serialisability property of atomic actions. The implementation of atomic action facilities is !
 supported by <classname>AtomicAction</classname> and <classname>TopLevelTransaction</classname>.</para>
+            
+            <para>Most <emphasis>TxCore</emphasis> system classes are derived from the base class <classname>StateManager</classname>, which provides primitive facilities necessary for managing persistent and recoverable objects. These facilities include support for the activation and de-activation of objects, and state-based object recovery. The class <classname>LockManager</classname> uses the facilities of <classname>StateManager</classname> and provides the concurrency control required for implementing the serialisability property of atomic actions.</para>
+            
+            <para>Consider a simple example. Assume that <classname>Example</classname> is a user-defined persistent class suitably derived from the <classname>LockManager</classname>. An application containing an atomic transaction Trans accesses an object (called O) of type <classname>Example</classname> by invoking the operation op1 which involves state changes to O. The serialisability property requires that a write lock must be acquired on O before it is modified; thus the body of op1 should contain a call to the <literal>setlock</literal> operation of the concurrency controller:</para>
+            
+            <screen>public boolean op1 (...)
+{	
+    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)
+    {
+        // actual state change operations follow 
+        ...
+    }
+}</screen>
+            
+            <para>The operation <literal>setlock</literal>, provided by the <classname>LockManager</classname> class, performs the following functions in this case:</para>
+            
+            <itemizedlist>
+                <listitem><para>Check write lock compatibility with the currently held locks, and if allowed:</para></listitem>
+                <listitem><para>Call the <classname>StateManager</classname> operation activate that will load, if not done already, the latest persistent state of O from the object store. Then call the <classname>StateManager</classname> operation modified which has the effect of creating an instance of either <classname>RecoveryRecord</classname> or <classname>PersistenceRecord</classname> for O depending upon whether O was persistent or not (the Lock is a <literal>WRITE</literal> lock so the old state of the object must be retained prior to modification) and inserting it into the <classname>RecordList</classname> of <classname>Trans</classname>.</para></listitem>
+                <listitem><para>Create and insert a LockRecord instance in the RecordList of Trans.</para></listitem>
+            </itemizedlist>
+            
+            <para>Now suppose that action <literal>Trans</literal> is aborted sometime after the lock has been acquired. Then the rollback operation of <classname>AtomicAction</classname> will process the <classname>RecordList</classname> instance associated with <literal>Trans</literal> by invoking an appropriate <literal>Abort</literal> operation on the various records. The implementation of this operation by the <classname>LockRecord</classname> class will release the <literal>WRITE</literal> lock while that of <classname>RecoveryRecord</classname>/<classname>PersistenceRecord</classname>  will restore the prior state of O.</para>
+            
+            <para>It is important to realise that all of the above work is automatically being performed by <emphasis>TxCore</emphasis> on behalf of the application programmer. The programmer need only start the transaction and set an appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional Objects for Java</emphasis> take care of participant registration, persistence, concurrency control and recovery.</para>
+            
+        </section>
+        
+        
+        
+    </section>
+    
+</chapter>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_02.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_02.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_02.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,652 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+    <title>Using TxCore</title>
+    
+    <section>
+        <title>Introduction</title>
+        
+        <para>In this section we shall describe <emphasis>TxCore</emphasis> and <emphasis>Transactional Objects for Java</emphasis> in more detail, and show how it can be used to construct transactional applications.</para>
+    </section>
+    
+    <section>
+        <title>State management</title>
+        
+        <section>
+            <title>Object States</title>
+            
+            <para><emphasis>TxCore</emphasis> needs to be able to remember the state of an object for several purposes, including recovery (the state represents some past state of the object), and for persistence (the state represents the final state of an object at application termination). Since all of these requirements require common functionality they are all implemented using the same mechanism - the classes <classname>Input/OutputObjectState</classname> and <classname>Input/OutputBuffer</classname>.</para>
+            
+            <formalpara><title>OutputBuffer</title>
+                
+                <para><programlisting>public class OutputBuffer
+{
+public OutputBuffer ();
+
+public final synchronized boolean valid ();
+public synchronized byte[] buffer();
+public synchronized int length ();
+
+    /* pack operations for standard Java types */
+
+public synchronized void packByte (byte b) throws IOException;
+public synchronized void packBytes (byte[] b) throws IOException;
+public synchronized void packBoolean (boolean b) throws IOException;
+public synchronized void packChar (char c) throws IOException;
+public synchronized void packShort (short s) throws IOException;
+public synchronized void packInt (int i) throws IOException;
+public synchronized void packLong (long l) throws IOException;
+public synchronized void packFloat (float f) throws IOException;
+public synchronized void packDouble (double d) throws IOException;
+public synchronized void packString (String s) throws IOException;
+};</programlisting></para></formalpara>
+            
+            <formalpara><title>InputBuffer</title><para><programlisting>public class InputBuffer
+{
+public InputBuffer ();
+
+public final synchronized boolean valid ();
+public synchronized byte[] buffer();
+public synchronized int length ();
+
+/* unpack operations for standard Java types */
+
+public synchronized byte unpackByte () throws IOException;
+public synchronized byte[] unpackBytes () throws IOException;
+public synchronized boolean unpackBoolean () throws IOException;
+public synchronized char unpackChar () throws IOException;
+public synchronized short unpackShort () throws IOException;
+public synchronized int unpackInt () throws IOException;
+public synchronized long unpackLong () throws IOException;
+public synchronized float unpackFloat () throws IOException;
+public synchronized double unpackDouble () throws IOException;
+public synchronized String unpackString () throws IOException;
+};</programlisting></para></formalpara>
+            
+            <para>The <classname>Input/OutputBuffer</classname> class maintains an internal array into which instances of the standard Java types can be contiguously packed (unpacked) using the pack (unpack) operations. This buffer is automatically resized as required should it have insufficient space. The instances are all stored in the buffer in a standard form (so-called network byte order) to make them machine independent.</para>
+
+            <formalpara><title>OutputObjectState</title>
+                
+                <para><programlisting>class OutputObjectState extends OutputBuffer
+{
+public OutputObjectState (Uid newUid, String typeName);
+
+public boolean notempty ();
+public int size ();
+public Uidpublic class InputBuffer
+{
+public InputBuffer ();
+
+public final synchronized boolean valid ();
+public synchronized byte[] buffer();
+public synchronized int length ();
+
+/* unpack operations for standard Java types */
+
+public synchronized byte unpackByte () throws IOException;
+public synchronized byte[] unpackBytes () throws IOException;
+public synchronized boolean unpackBoolean () throws IOException;
+public synchronized char unpackChar () throws IOException;
+public synchronized short unpackShort () throws IOException;
+public synchronized int unpackInt () throws IOException;
+public synchronized long unpackLong () throws IOException;
+public synchronized float unpackFloat () throws IOException;
+public synchronized double unpackDouble () throws IOException;
+public synchronized String unpackString () throws IOException;
+};</programlisting></para></formalpara>
+            
+            <para>The <classname>Input/OutputBuffer</classname> class maintains an internal array into which instances of the standard Java types can be contiguously packed (unpacked) using the pack (unpack) operations. This buffer is automatically resized as required should it have insufficient space. The instances are all stored in the buffer in a standard form (so-called network byte order) to make them machine independent.</para>
+            
+            <formalpara>
+                <title>
+                    OutputObjectState   
+                </title>
+                
+                <para>
+                    <programlisting>class OutputObjectState extends OutputBuffer
+{
+    public OutputObjectState (Uid newUid, String typeName);
+    
+    public boolean notempty ();
+    public int size ();
+    public Uid stateUid ();
+    public String type ();
+};</programlisting>
+                    </para>
+                    
+            </formalpara>
+            
+            
+            <formalpara>
+                <title>InputObjectState</title>
+                <para>
+                    <programlisting>class InputObjectState extends InputBuffer
+{
+    public OutputObjectState (Uid newUid, String typeName, byte[] b);
+    
+    public boolean notempty ();
+    public int size ();
+    public Uid stateUid ();
+    public String type ();
+};</programlisting>   
+                </para>
+            </formalpara>
+           
+            
+            <para>The class <classname>Input/OutputObjectState</classname> provides all the functionality of <classname>Input/OutputBuffer</classname> (through inheritance) but adds two additional instance variables that signify the Uid and type of the object for which the <classname>Input/OutputObjectState</classname> instance is a compressed image. These are used when accessing the object store during storage and retrieval of the object state.</para>
+    </section>
+    
+    <section>
+        <title>The object store</title>
+        
+        <para>The object store provided with <emphasis>TxCore</emphasis> deliberately has a fairly restricted interface so that it can be implemented in a variety of ways. For example, object stores are implemented in shared memory; on the Unix file system (in several different forms); and as a remotely accessible store. More complete information about the object stores available in <emphasis>TxCore</emphasis> can be found in the Appendix.</para>
+        
+        <note><para>As with all <emphasis>TxCore</emphasis> classes the default object stores are pure Java implementations; to access the shared memory and other more complex object store implementations it is necessary to use native methods.</para></note>
+        
+        <para>All of the object stores hold and retrieve instances of the class <classname>Input/OutputObjectState</classname>. These instances are named by the Uid and Type of the object that they represent. States are read using the <command>read_committed</command> operation and written by the system using the <command>write_uncommitted</command> operation. Under normal operation new object states do not overwrite old object states but are written to the store as shadow copies. These shadows replace the original only when the <command>commit_state</command> operation is invoked. Normally all interaction with the object store is performed by <emphasis>TxCore</emphasis> system components as appropriate thus the existence of any shadow versions of objects in the store are hidden from the programmer.</para>
+        
+        <screen>public class ObjectStore
+{
+public static final int OS_COMMITTED;
+public static final int OS_UNCOMMITTED;
+public static final int OS_COMMITTED_HIDDEN;
+public static final int OS_UNCOMMITTED_HIDDEN;
+public static final int OS_UNKNOWN;
+
+/* The abstract interface */
+public abstract boolean commit_state (Uid u, String name)
+throws ObjectStoreException;
+public abstract InputObjectState read_committed (Uid u, String name)
+throws ObjectStoreException;
+public abstract boolean write_uncommitted (Uid u, String name,
+OutputObjectState os) throws ObjectStoreException;
+. . .
+};</screen>
+        
+        <para>When a transactional object is committing it is necessary for it to make certain state changes persistent in order that it can recover in the event of a failure and either continue to commit, or rollback. When using <emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</emphasis> will take care of this automatically. To guarantee ACID properties, these state changes must be flushed to the persistence store implementation before the transaction can proceed to commit; if they are not, the application may assume that the transaction has committed when in fact the state changes may still reside within an operating system cache, and may be lost by a subsequent machine failure. By default, <emphasis>TxCore</emphasis> ensures that such state changes are flushed. However, doing so can impose a significant performance penalty on the application. To prevent transactional object state flushes, set the <literal>com.arjuna.ats.arjuna.objectstore.objectStore!
 Sync</literal> variable to OFF.</para>
+        
+    </section>
+        
+        <section><title>Selecting an object store implementation</title>
+        
+        <para>
+            <emphasis>TxCore</emphasis> comes with support for several different object store implementations. The Appendix describes these implementations, how to select and configure a given implementation (using the <literal>com.arjuna.ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per object basis, and indicates how additional implementations can be provided.
+        </para>
+        
+        </section>
+        
+        <section>
+            
+            <title>StateManager</title>
+        
+            <para>The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> manages the state of an object and provides all of the basic support mechanisms required by an object for state management purposes. <classname>StateManager</classname> is responsible for creating and registering appropriate resources concerned with the persistence and recovery of the transactional object. If a transaction is nested, then <classname>StateManager</classname> will also propagate these resources between child transactions and their parents at commit time.</para>
+        
+        <para>
+            Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible basic flavours. They may simply be recoverable, in which case <classname>StateManager</classname> will attempt to generate and maintain appropriate recovery information for the object (as instances of the class <classname>Input/OutputObjectState</classname>) . Such objects have lifetimes that do not exceed the application program that creates them. Objects may be recoverable and persistent, in which case the lifetime of the object is assumed to be greater than that of the creating or accessing application so that in addition to maintaining recovery information <classname>StateManager</classname> will attempt to automatically load (unload) any existing persistent state for the object by calling the <command>activate</command> (<command>deactivate</command>) operation at appropriate times. Finally, objects may possess none of these capabilities in which case no recovery information is ever !
 kept nor is object activation/deactivation ever automatically attempted. This object property is selected at object construction time and cannot be changed thereafter. Thus an object cannot gain (or lose) recovery capabilities at some arbitrary point during its lifetime.
+        </para>
+            
+            <screen>public class ObjectStatus
+{
+    public static final int PASSIVE;
+    public static final int PASSIVE_NEW;
+    public static final int ACTIVE;
+    public static final int ACTIVE_NEW;
+    public static final int UNKNOWN_STATUS;
+};
+
+public class ObjectType
+{
+    public static final int RECOVERABLE;
+    public static final int ANDPERSISTENT;
+    public static final int NEITHER;
+};
+
+public abstract class StateManager
+{
+    public synchronized boolean activate ();
+    public synchronized boolean activate (String storeRoot);
+    public synchronized boolean deactivate ();
+    public synchronized boolean deactivate (String storeRoot, boolean commit);
+    
+    public synchronized void destroy ();
+    
+    public final Uid get_uid ();
+    
+    public boolean restore_state (InputObjectState, int ObjectType);
+    public boolean save_state (OutputObjectState, int ObjectType);
+    public String type ();
+    . . .
+    
+    protected StateManager ();
+    protected StateManager (int ObjectType, ObjectName attr);
+    protected StateManager (Uid uid);
+    protected StateManager (Uid uid, ObjectName attr);
+    . . .
+    
+    protected final void modified ();
+    . . .
+};
+
+public class ObjectModel
+{
+    public static final int SINGLE;
+    public static final int MULTIPLE;
+};</screen>
+            
+            <para>If an object is recoverable (or persistent) then <classname>StateManager</classname> will invoke the operations <command>save_state</command> (while performing <command>deactivation</command>), <command>restore_state</command> (while performing activate) and type at various points during the execution of the application. These operations must be implemented by the programmer since <classname>StateManager</classname> does not have access to a runtime description of the layout of an arbitrary Java object in memory and thus cannot implement a default policy for converting the in memory version of the object to its passive form. However, the capabilities provided by <classname>Input/OutputObjectState</classname> make the writing of these routines fairly simple. For example, the <command>save_state</command> implementation for a class <classname>Example</classname> that had member variables called A, B and C could simply be the following:</para>
+            
+            <screen>public boolean save_state ( OutputObjectState os, int ObjectType )
+{
+    if (!super.save_state(os, ObjectType))
+    return false;
+    
+    try
+    {
+        os.packInt(A);
+        os.packString(B);
+        os.packFloat(C);
+    
+        return true;
+    }
+    catch (IOException e)
+    {
+        return false;
+    }
+}</screen>
+            
+            <para>In order to support crash recovery for persistent objects it is necessary for all <command>save_state</command> and <command>restore_state</command> methods of user objects to call <command>super.save_state</command> and <command>super.restore_state</command>.</para>
+            
+            <note><para>The type method is used to determine the location in the object store where the state of instances of that class will be saved and ultimately restored. This can actually be any valid string. However, you should avoid using the hash character (#) as this is reserved for special directories that <emphasis>TxCore</emphasis> requires.</para></note>
+            
+            <para>The <command>get_uid</command> operation of <classname>StateManager</classname> provides read only access to an object’s internal system name for whatever purpose the programmer requires (such as registration of the name in a name server). The value of the internal system name can only be set when an object is initially constructed - either by the provision of an explicit parameter or by generating a new identifier when the object is created.</para>
+            
+            <para>The <command>destroy</command> method can be used to remove the object’s state from the object store. This is an atomic operation, and therefore will only remove the state if the top-level transaction within which it is invoked eventually commits. The programmer must obtain exclusive access to the object prior to invoking this operation.</para>
+            
+            <para>Since object recovery and persistence essentially have complimentary requirements (the only difference being where state information is stored and for what purpose) <classname>StateManager</classname> effectively combines the management of these two properties into a single mechanism. That is, it uses instances of the class Input/OutputObjectState both for recovery and persistence purposes. An additional argument passed to the <command>save_state</command> and <command>restore_state</command> operations allows the programmer to determine the purpose for which any given invocation is being made thus allowing different information to be saved for recovery and persistence purposes.</para>
+            
+            
+        </section>
+        
+        <section>
+            <title>Object Models</title>
+            
+            <para><emphasis>TxCore</emphasis> supports two models for objects, which as we shall show affect how an objects state and concurrency control are implemented:</para>
+            
+            <itemizedlist>
+                <listitem><para><termdef>SINGLE</termdef>: only a single copy of the object exists within the application; this will reside within a single JVM, and all clients must address their invocations to this server. This model provides better performance, but represents a single point of failure, and in a multi-threaded environment may not protect the object from corruption if a single thread fails.</para>
+                
+                    <mediaobject id="figure_3">
+                        <imageobject>
+                            <imagedata align="center" fileref="images/Single_Object.png" />
+                        </imageobject>
+                        <caption> Single Object Model</caption>
+                    </mediaobject>
+                
+                </listitem>
+                <listitem><para>MULTIPLE: logically a single instance of the object exists, but copies of it are distributed across different JVMs; the performance of this model is worse than the SINGLE model, but it provides better failure isolation.</para>
+                
+                
+                    <mediaobject id="figure_4">
+                        <imageobject>
+                            <imagedata align="center" fileref="images/Multiple_Object.png" />
+                        </imageobject>
+                        <caption> Multiple Object Model</caption>
+                    </mediaobject>
+                </listitem>
+            </itemizedlist>
+            
+            <para>The default model is SINGLE. The programmer can override this on a per object basis by providing an appropriate instance of the <classname>com.arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object construction.</para>
+            
+            <note><para>The model can be changed between each successive instantiation of the object, i.e., it need not be the same during the object's lifetime.</para></note>
+            
+            <para>
+                To provide a suitable <classname>ObjectName</classname> class, it is necessary to perform the following steps:
+            </para>
+            
+            <itemizedlist>
+                <listitem><para>create a new instance of <classname>ObjectName</classname>.</para></listitem>
+                <listitem><para>set the object model attribute using the <literal>com.arjuna.ats.arjuna.ArjunaNames.StateManager_objectModel()</literal> name.</para></listitem>
+            </itemizedlist>
+            
+            <para>For example:</para>
+            
+            <programlisting>{
+    ObjectName attr = new ObjectName(“SNS:myObjectName”);
+    
+    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),
+    ObjectModel.SINGLE);
+    
+    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);
+                }</programlisting>
+            
+            
+            
+        </section>
+        
+        <section>
+            <title>Summary</title>
+            
+            <para>In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</classname> manages the state of an object and provides all of the basic support mechanisms required by an object for state management purposes. Some operations must be defined by the class developer. These operations are: <command>save_state</command>, <command>restore_state</command>, and <command>type</command>.</para>
+            
+            <variablelist>
+                <varlistentry>
+                    <term><literal>boolean save_state (OutputObjectState state, int ObjectType)</literal></term>
+                    <listitem><para>Invoked whenever the state of an object might need to be saved for future use - primarily for recovery or persistence purposes. The <literal>ObjectType</literal> parameter indicates the reason that <command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. This enables the programmer to save different pieces of information into the <classname>OutputObjectState</classname> supplied as the first parameter depending upon whether the state is needed for recovery or persistence purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects might be saved simply as pointers for recovery purposes but as Uid’s for persistence purposes. As shown earlier, the <classname>OutputObjectState</classname> class provides convenient operations to allow the saving of instances of all of the basic types in Java. In order to support crash recovery for persistent objects it is necessary for all <command>save_state</command> metho!
 ds to call <command>super.save_state</command>.</para>
+                    
+                        <note><para><command>save_state</command> assumes that an object is internally consistent and that all variables saved have valid values. It is the programmer's responsibility to ensure that this is the case.</para></note></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term><literal>boolean restore_state (InputObjectState state, int ObjectType)</literal></term>
+                    <listitem><para>Invoked whenever the state of an object needs to be restored to the one supplied. Once again the second parameter allows different interpretations of the supplied state. In order to support crash recovery for persistent objects it is necessary for all <command>restore_state</command> methods to call <command>super.restore_state</command>.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term><literal>String type ()</literal></term>
+                    <listitem><para>The <emphasis>TxCore</emphasis> persistence mechanism requires a means of determining the type of an object as a string so that it can save/restore the state of the object into/from the object store. By convention this information indicates the position of the class in the hierarchy. For example, “/<classname>StateManager</classname>/<classname>LockManager</classname>/<classname>Object</classname>”.</para>
+                    
+                        <note><para>The type method is used to determine the location in the object store where the state of instances of that class will be saved and ultimately restored. This can actually be any valid string. However, you should avoid using the hash character (#) as this is reserved for special directories that <emphasis>TxCore</emphasis> requires.</para></note></listitem>
+                </varlistentry>
+                
+            </variablelist>
+            
+        </section>
+        
+        <section>
+            <title>Example</title>
+            
+            <para>
+                Consider the following basic <classname>Array</classname> class derived from the <classname>StateManager</classname> class (in this example, to illustrate saving and restoring of an object’s state, the highestIndex variable is used to keep track of the highest element of the array that has a non-zero value):
+            </para>
+            
+            <programlisting>public class Array extends StateManager
+{
+    public Array ();
+    public Array (Uid objUid);
+    public void finalize ( super.terminate(); };
+    
+    /* Class specific operations. */
+    
+    public boolean set (int index, int value);
+    public int get (int index);
+    
+    /* State management specific operations. */
+    
+    public boolean save_state (OutputObjectState os, int ObjectType);
+    public boolean restore_state (InputObjectState os, int ObjectType);
+    public String type ();
+    
+    public static final int ARRAY_SIZE = 10;
+    
+    private int[] elements = new int[ARRAY_SIZE];
+    private int highestIndex;
+    };</programlisting>
+            
+            <para>
+                The <command>save_state</command>, <command>restore_state</command> and <command>type</command> operations can be defined as follows:
+            </para>
+            
+            <programlisting>/* Ignore ObjectType parameter for simplicity */
+
+public boolean save_state (OutputObjectState os, int ObjectType)
+{
+    if (!super.save_state(os, ObjectType))
+        return false;
+    
+    try
+    {    
+        packInt(highestIndex);
+
+        /*
+        * Traverse array state that we wish to save. Only save active elements
+        */
+
+        for (int i = 0; i &lt;= highestIndex; i++)
+            os.packInt(elements[i]);
+            
+        return true;
+    }
+    catch (IOException e)
+    {
+        return false;
+    }
+}
+ 
+public boolean restore_state (InputObjectState os, int ObjectType)
+{
+    if (!super.restore_state(os, ObjectType))
+        return false;
+    
+    try
+    {
+        int i = 0;
+    
+        highestIndex = os.unpackInt();
+    
+        while (i &lt; ARRAY_SIZE)
+        {
+            if (i &lt;= highestIndex)
+                elements[i] =  os.unpackInt();
+            else
+                elements[i] = 0;
+            i++;
+        }
+        
+        return true;
+        }
+    catch (IOException e)
+    {
+        return false;
+    }
+}
+ 
+public String type ()
+{
+    return "/StateManager/Array";
+}</programlisting>
+        </section>
+    </section>
+    
+    <section>
+        <title>Lock management and concurrency control</title>
+        
+        <para>Concurrency control information within <emphasis>TxCore</emphasis> is maintained by locks. Locks which are required to be shared between objects in different processes may be held within a lock store, similar to the object store facility presented previously. The lock store provided with <emphasis>TxCore</emphasis> deliberately has a fairly restricted interface so that it can be implemented in a variety of ways. For example, lock stores are implemented in shared memory; on the Unix file system (in several different forms); and as a remotely accessible store. More information about the object stores available in <emphasis>TxCore</emphasis> can be found in the Appendix.</para>
+        
+        <note><para>As with all <emphasis>TxCore</emphasis> classes the default lock stores are pure Java implementations; to access the shared memory and other more complex lock store implementations it is necessary to use native methods.</para></note>
+        
+        <programlisting>public class LockStore
+{
+    public abstract InputObjectState read_state (Uid u, String tName)
+    throws LockStoreException;
+    
+    public abstract boolean remove_state (Uid u, String tname);
+    public abstract boolean write_committed (Uid u, String tName,
+    OutputObjectState state);
+    };</programlisting>
+        
+        <section>
+            <title>Selecting a lock store implementation</title>
+            
+            <para><emphasis>TxCore</emphasis> comes with support for several different object store implementations. If the object model being used is SINGLE, then no lock store is required for maintaining locks, since the information about the object is not exported from it. However, if the MULTIPLE model is used, then different run-time environments (processes, Java virtual machines) may need to share concurrency control information. The implementation type of the lock store to use can be specified for all objects within a given execution environment using the <literal>com.arjuna.ats.txoj.lockstore.lockStoreType</literal> property variable. Currently this can have one of the following values:</para>
+            
+            <variablelist>
+                <varlistentry>
+                    <term>BasicLockStore</term>
+                    <listitem><para>This is an in-memory implementation which does not, by default, allow sharing of stored information between execution environments. The application programmer is responsible for sharing the store information.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term>BasicPersistentLockStore</term>
+                    <listitem><para>This is the default implementation, and stores locking information within the local file system. Therefore execution environments that share the same file store can share concurrency control information. The root of the file system into which locking information is written is the <filename>LockStore</filename> directory within the <emphasis>TxCore</emphasis> installation directory. This can be overridden at runtime by setting the <literal>com.arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable accordingly, or placing the location within the <literal>CLASSPATH</literal>:</para>
+                    
+                        <para><command>java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore myprogram</command></para>
+                    
+                    <para>or</para>
+                    
+                        <para><command>java –classpath $CLASSPATH;/var/tmp/LockStore myprogram</command></para>
+                    
+                        <para>If neither of these approaches is taken, then the default location will be at the same level as the <filename>etc</filename> directory of the installation.</para></listitem>
+                </varlistentry>
+                
+            </variablelist>
+            
+            
+        </section>
+        
+        <section>
+            <title>LockManager</title>
+            
+            <para>The concurrency controller is implemented by the class <classname>LockManager</classname> which provides sensible default behaviour while allowing the programmer to override it if deemed necessary by the particular semantics of the class being programmed. The primary programmer interface to the concurrency controller is via the setlock operation. By default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-phase locking following a multiple reader, single writer policy on a per object basis. Lock acquisition is under programmer control, since just as <classname>StateManager</classname> cannot determine if an operation modifies an object, <classname>LockManager</classname> cannot determine if an operation requires a read or write lock. Lock release, however, is normally under control of the system and requires no further intervention by the programmer. This ensures that the two-phase property can be correctly maintained. </para>
+            
+            <para>The <classname>LockManager</classname> class is primarily responsible for managing requests to set a lock on an object or to release a lock as appropriate. However, since it is derived from <classname>StateManager</classname>, it can also control when some of the inherited facilities are invoked. For example, if a request to set a write lock is granted, then <classname>LockManager</classname> invokes modified directly assuming that the setting of a write lock implies that the invoking operation must be about to modify the object. This may in turn cause recovery information to be saved if the object is recoverable. In a similar fashion, successful lock acquisition causes <command>activate</command> to be invoked.</para>
+        
+            <para>Therefore, <classname>LockManager</classname> is directly responsible for activating/de-activating persistent objects, and registering <classname>Resources</classname> for managing concurrency control. By driving the <classname>StateManager</classname> class, it is also responsible for registering <classname>Resources</classname> for persistent/recoverable state manipulation and object recovery. The application programmer simply sets appropriate locks, starts and ends transactions, and extends the <command>save_state</command> and <command>restore_state</command> methods of <classname>StateManager</classname>.</para>
+            
+            <programlisting>public class LockResult
+{
+public static final int GRANTED;
+public static final int REFUSED;
+public static final int RELEASED;
+};
+
+public class ConflictType
+{
+public static final int CONFLICT;
+public static final int COMPATIBLE;
+public static final int PRESENT;
+};
+
+public abstract class LockManager extends StateManager
+{
+public static final int defaultTimeout;
+public static final int defaultRetry;
+public static final int waitTotalTimeout;
+
+public synchronized int setlock (Lock l);
+public synchronized int setlock (Lock l, int retry);
+public synchronized int setlock (Lock l, int retry, int sleepTime);
+public synchronized boolean releaselock (Uid uid);
+
+/* abstract methods inherited from StateManager */
+
+public boolean restore_state (InputObjectState os, int ObjectType);
+public boolean save_state (OutputObjectState os, int ObjectType);
+public String type ();
+
+protected LockManager ();
+protected LockManager (int ObjectType, ObjectName attr);
+protected LockManager (Uid storeUid);
+protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);
+. . .
+};</programlisting>
+            
+            <para>The <command>setlock</command> operation must be parameterised with the type of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and the number of retries to acquire the lock before giving up. If a lock conflict occurs, one of the following scenarios will take place:</para>
+            
+            <para>
+                If the retry value is equal to <literal>LockManager.waitTotalTimeout</literal>, then the thread which called <command>setlock</command> will be blocked until the lock is released, or the total timeout specified has elapsed, and in which <literal>REFUSED</literal> will be returned.
+            </para>
+            
+            <para>If the lock cannot be obtained initially then <classname>LockManager</classname> will try for the specified number of retries, waiting for the specified timeout value between each failed attempt. The default is 100 attempts, each attempt being separated by a 0.25 seconds delay; the time between retries is specified in micro-seconds.</para>
+            
+            <para>If a lock conflict occurs the current implementation simply times out lock requests, thereby preventing deadlocks, rather than providing a full deadlock detection scheme. If the requested lock is obtained, the setlock operation will return the value <literal>GRANTED</literal>, otherwise the value <literal>REFUSED</literal> is returned. It is the responsibility of the programmer to ensure that the remainder of the code for an operation is only executed if a lock request is granted. Below are examples of the use of the <command>setlock</command> operation.</para>
+            
+            <programlisting>res = setlock(new Lock(WRITE), 10);	
+    // Will attempt to set a
+    // write lock 11 times (10
+    // retries) on the object
+    // before giving up.
+                
+res = setlock(new Lock(READ), 0);	
+    // Will attempt to set a read
+    // lock 1 time (no retries) on
+    // the object before giving up.
+    
+res = setlock(new Lock(WRITE);	
+    // Will attempt to set a write
+    // lock 101 times (default of
+    // 100 retries) on the object
+    // before giving up.</programlisting>
+
+            <para>The concurrency control mechanism is integrated into the atomic action mechanism, thus ensuring that as locks are granted on an object appropriate information is registered with the currently running atomic action to ensure that the locks are released at the correct time. This frees the programmer from the burden of explicitly freeing any acquired locks if they were acquired within atomic actions. However, if locks are acquired on an object <emphasis>outside</emphasis> of the scope of an atomic action, it is the programmer's responsibility to release the locks when required, using the corresponding <command>releaselock</command> operation.</para>        
+            
+            </section>
+                
+                <section>
+                    <title>Locking policy</title>
+                    
+                    <para>Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not special system types. Instead they are simply instances of other <emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> which is also derived from <classname>StateManager</classname> so that locks may be made persistent if required and can also be named in a simple fashion). Furthermore, <classname>LockManager</classname> deliberately has no knowledge of the semantics of the actual policy by which lock requests are granted.  Such information is maintained by the actual <classname>Lock</classname> class instances which provide operations (the <literal>conflictsWith</literal> operation) by which <classname>LockManager</classname> can determine if two locks conflict or not. This separation is important in that it allows the programmer to derive new lock types from the basic <classname>Lock</classname> class and by providing appropriate definitions of the confli!
 ct operations enhanced levels of concurrency may be possible.</para>
+                    
+                    <programlisting>public class LockMode
+{
+    public static final int READ;
+    public static final int WRITE;
+};
+
+public class LockStatus
+{
+    public static final int LOCKFREE;
+    public static final int LOCKHELD;
+    public static final int LOCKRETAINED;
+};
+
+public class Lock extends StateManager
+{
+    public Lock (int lockMode);
+    
+    public boolean conflictsWith  (Lock otherLock);
+    public boolean modifiesObject ();
+    
+    public boolean restore_state (InputObjectState os, int ObjectType);
+    public boolean save_state (OutputObjectState os, int ObjectType);
+    public String type ();
+    . . .
+};</programlisting>
+                    
+                    <para>The <classname>Lock</classname> class provides a <command>modifiesObject</command> operation which <classname>LockManager</classname> uses to determine if granting this locking request requires a call on modified. This operation is provided so that locking modes other than simple read and write can be supported. The supplied <classname>Lock</classname> class supports the traditional multiple reader/single writer policy.</para>
+                    
+                </section>
+        
+        <section>
+            <title>Object construction and destruction</title>
+            
+            <para>Recall that <emphasis>TxCore</emphasis> objects can be recoverable; recoverable and persistent; or neither. Additionally each object possesses a unique internal name. These attributes can only be set when that object is constructed. Thus <classname>LockManager</classname> provides two protected constructors for use by derived classes, each of which fulfils a distinct purpose:</para>
+            
+            <variablelist>
+                <varlistentry>
+                    <term><command>LockManager ()</command></term>
+                    <listitem><para>This constructor allows the creation of new objects, that is, no prior state is assumed to exist.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term><command>LockManager (int ObjectType, ObjectName attr)</command></term>
+                    <listitem><para>As above, this constructor allows the creation of new objects, that is, no prior state is assumed to exist. The <literal>ObjectType</literal> parameter determines whether an object is simply recoverable (indicated by <literal>RECOVERABLE</literal>); recoverable and persistent (indicated by <literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). If an object is marked as being persistent then the state of the object will be stored in one of the object stores. The shared parameter only has meaning if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not null and the object model is <literal>SINGLE</literal> (the default behaviour) then the recoverable state of the object is maintained within the object itself (i.e., it has no external representation), otherwise an in-memory (volatile) object store is used to store the state of the object between atomic actions. </para>
+                    
+                        <para>Constructors for new persistent objects should make use of atomic actions within themselves. This will ensure that the state of the object is automatically written to the object store either when the action in the constructor commits or, if an enclosing action exists, when the appropriate top-level action commits. Later examples in this chapter illustrate this point further.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term><command>LockManager(Uid objUid)</command></term>
+                    <listitem><para>This constructor allows access to an existing persistent object, whose internal name is given by the <literal>objUid</literal> parameter. Objects constructed using this operation will normally have their prior state (identified by <literal>objUid</literal>) loaded from an object store automatically by the system.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term><command>LockManager(Uid objUid, ObjectName attr)</command></term>
+                    <listitem><para>As above, this constructor allows access to an existing persistent object, whose internal name is given by the <literal>objUid</literal> parameter. Objects constructed using this operation will normally have their prior state (identified by <literal>objUid</literal>) loaded from an object store automatically by the system. If the attr parameter is not null, and the object model is <literal>SINGLE</literal> (the default behaviour), then the object will not be reactivated at the start of each top-level transaction.</para>
+                    
+                        <para>The destructor of a programmer-defined class must invoke the inherited operation terminate to inform the state management mechanism that the object is about to be destroyed otherwise unpredictable results may occur.</para>
+                    
+                        <para>Because <classname>LockManager</classname> inherits from <classname>StateManager</classname>, it will pass any supplied <classname>ObjectName</classname> instance to the <classname>StateManager</classname> class. As such, it is possible to set the <classname>StateManager</classname> object model as described earlier.</para></listitem>
+                </varlistentry>
+                
+             
+                
+                
+            </variablelist>
+            
+        </section>
+        
+        
+    </section>
+</chapter>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_02.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_03.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_03.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_03.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,247 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+     <title>General Transaction Issues</title>
+    
+    <section>
+        
+        <title>Advanced transaction issues with TxCore</title>
+        
+        <para>Atomic actions (transactions) can be used by both application programmers and class developers. Thus entire operations (or parts of operations) can be made atomic as required by the semantics of a particular operation. This chapter will describe some of the more subtle issues involved with using transactions in general and <emphasis>TxCore</emphasis> in particular.</para>
+        
+        <section>
+            <title>Checking transactions</title>
+            
+            <para>In a multi-threaded application, multiple threads may be associated with a transaction during its lifetime, i.e., the thread’s share the context. In addition, it is possible that if one thread terminates a transaction other threads may still be active within it. In a distributed environment, it can be difficult to guarantee that all threads have finished with a transaction when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a warning if a thread terminates a transaction when other threads are still active within it; however, it will allow the transaction termination to continue. Other solutions to this problem are possible, e.g., blocking the thread which is terminating the transaction until all other threads have disassociated themselves from the transaction context. Therefore, <emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna.coordinator.CheckedAction</classname> class, which allows the thread/transaction t!
 ermination policy to be overridden. Each transaction has an instance of this class associated with it, and application programmers can provide their own implementations on a per transaction basis.</para>
+            
+            <programlisting>public class CheckedAction
+{
+public CheckedAction ();
+
+public synchronized void check (boolean isCommit, Uid actUid,
+BasicList list);
+};</programlisting>
+            
+            <para>When a thread attempts to terminate the transaction and there are active threads within it, the system will invoke the check method on the transaction’s <classname>CheckedAction</classname> object. The parameters to the check method are:</para>
+            
+            <variablelist>
+                <varlistentry>
+                    <term>isCommit</term>
+                    <listitem><para>Indicates whether the transaction is in the process of committing or rolling back.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term>actUid</term>
+                    <listitem><para>The transaction identifier.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term>list</term>
+                    <listitem><para>a list of all of the threads currently marked as active within this transaction.</para></listitem>
+                </varlistentry>
+                
+                
+            </variablelist>
+            
+            <para>When check returns, the transaction termination will continue. Obviously the state of the transaction at this point may be different from that when check was called, e.g., the transaction may subsequently have been committed.</para>
+            
+        </section>
+        
+        <section>
+            <title>Statistics gathering</title>
+            
+            <para>By default, the JBossTS does not maintain any history information about transactions. However, by setting the <literal>com.arjuna.ats.arjuna.coordinator.enableStatistics</literal> property variable to YES, the transaction service will maintain information about the number of transactions created, and their outcomes. This information can be obtained during the execution of a transactional application via the <classname>com.arjuna.TxCore.Atomic.TxStats</classname> class:</para>
+            
+            <programlisting>public class TxStats
+{
+
+/**
+* Returns the number of transactions (top-level and nested)
+* created so far.
+*/
+
+public static int numberOfTransactions ();
+
+/**
+* Returns the number of nested (sub) transactions created so far.
+*/
+
+public static int numberOfNestedTransactions ();
+
+/**
+* Returns the number of transactions which have terminated with
+* heuristic outcomes.
+*/
+
+public static int numberOfHeuristics ();
+
+/**
+* Returns the number of committed transactions.
+*/
+
+public static int numberOfCommittedTransactions ();
+
+/**
+* Returns the number of transactions which have rolled back.
+*/
+
+public static int numberOfAbortedTransactions ();
+
+}</programlisting>
+            
+            
+        </section>
+        
+        <section>
+            <title>Last resource commit optimisation</title>
+                
+            <para>In some cases it may be necessary to enlist participants that aren’t two-phase commit aware into a two-phase commit transaction. If there is only a single resource then there is no need for two-phase commit. However, what if there are multiple resources in the transaction? In this case, the Last Resource Commit optimization (LRCO) comes into play. It is possible for a single resource that is one-phase aware (i.e., can only commit or roll back, with no prepare), to be enlisted in a transaction with two-phase commit aware resources. The coordinator treats the one-phase aware resource slightly differently, in that it executes the prepare phase on all other resource first, and if it then intends to commit the transaction it passes control to the one-phase aware resource. If it commits, then the coordinator logs the decision to commit and attempts to commit the other resources as well.</para>
+            
+            <para>In order to utilise the LRCO, your participant must implement the <classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface and be registered with the transaction through the <command>BasicAction</command>.add operation; since this operation expects instances of <classname>AbstractRecord</classname>, you must create an instance <classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give your participant as the constructor parameter, as shown below:</para>
+            
+            <programlisting>try
+                {
+                boolean success = false;
+                AtomicAction A = new AtomicAction();
+                OnePhase opRes = new OnePhase();  // used OnePhase interface
+                
+                System.err.println("Starting top-level action.");
+                
+                A.begin();
+                A.add(new LastResourceRecord(opRes));
+                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));
+                
+                A.commit();</programlisting>
+            
+        </section>
+        
+        <section>
+            <title>Nested transactions</title>
+            
+            <para>There are no special constructs for nesting of transactions: if an action is begun while another action is running then it is automatically nested. This allows for a modular structure to applications, whereby objects can be implemented using atomic actions within their operations without the application programmer having to worry about the applications which use them, i.e., whether or not the applications will use atomic actions as well. Thus, in some applications actions may be top-level, whereas in others they may be nested. Objects written in this way can then be shared between application programmers, and <emphasis>TxCore</emphasis> will guarantee their consistency.</para>
+            
+            <para>If a nested action is aborted then all of its work will be undone, although strict two-phase locking means that any locks it may have obtained will be retained until the top-level action commits or aborts. If a nested action commits then the work it has performed will only be committed by the system if the top-level action commits; if the top-level action aborts then all of the work will be undone.</para>
+            
+            <para>The committing or aborting of a nested action does not automatically affect the outcome of the action within which it is nested. This is application dependant, and allows a programmer to structure atomic actions to contain faults, undo work, etc.</para>
+        </section>
+        
+        <section>
+            <title>Asynchronously committing a transaction</title>
+            
+            <para>By default, JBossTS executes the commit protocol of a top-level transaction in a synchronous manner, i.e., all registered resources will be told to prepare in order by a single thread, and then they will be told to commit or rollback. This has several possible disadvantages:</para>
+            
+            <itemizedlist>
+                <listitem><para>In the case of many registered resources, the prepare operating can logically be invoked in parallel on each resource. The disadvantage is that if an “early” resource in the list of registered resource forces a rollback during prepare, possibly many prepare operations will have been made needlessly.</para></listitem>
+                <listitem><para>In the case where heuristic reporting is not required by the application, the second phase of the commit protocol can be done asynchronously, since its success or failure is not important.</para></listitem>
+            </itemizedlist>
+            
+            <para>Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable possible threading optimizations. By setting the  <literal>com.arjuna.ats.arjuna.coordinator.asyncPrepare</literal> environment variable to <literal>YES</literal>, during the prepare phase a separate thread will be created for each registered participant within the transaction. By setting <literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to <literal>YES</literal>, a separate thread will be created to complete the second phase of the transaction if knowledge about heuristics outcomes is not required.</para>
+            
+            
+        </section>
+        
+        <section>
+            <title>Independent top-level transactions</title>
+            
+            <para>In addition to normal top-level and nested atomic actions <emphasis>TxCore</emphasis> also supports independent top-level actions, which can be used to relax strict serialisability in a controlled manner. An independent top-level action can be executed from anywhere within another atomic action and behaves exactly like a normal top-level action, that is, its results are made permanent when it commits and will not be undone if any of the actions within which it was originally nested abort.</para>
+            
+            <mediaobject id="figure_5">
+                <imageobject>
+                    <imagedata align="center" fileref="images/Independent_Top-Level.png" />
+                </imageobject>
+                <caption> Independent Top-Level Action</caption>
+            </mediaobject>
+            
+            <para><xref linkend="figure_5"/> shows a typical nesting of atomic actions, where action B is nested within action A. Although atomic action C is logically nested within action B (it had its Begin operation invoked while B was active) because it is an independent top-level action, it will commit or abort independently of the other actions within the structure. Because of the nature of independent top-level actions they should be used with caution and only in situations where their use has been carefully examined.</para>
+            
+            <para>Top-level actions can be used within an application by declaring and using instances of the class <classname>TopLevelTransaction</classname>. They are used in exactly the same way as other transactions.</para>
+           
+        </section>
+        
+        <section>
+            <title>Transactions within save_state and restore_state</title>
+            
+            <para>Caution must be exercised when writing the <command>save_state</command> and <command>restore_state</command> operations to ensure that no atomic actions are started (either explicitly in the operation or implicitly through use of some other operation). This restriction arises due to the fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as part of its commit processing resulting in the attempt to execute an atomic action during the commit or abort phase of another action. This might violate the atomicity properties of the action being committed (aborted) and is thus discouraged.</para>
+            
+        </section>
+        
+        <section>
+            <title>Example</title>
+            
+            <para>If we consider the Array example given previously, the set and get operations could be implemented as shown below.</para>
+            
+            <note><para>This is a simplification of the code, ignoring error conditions and exceptions.</para></note>
+            
+            <programlisting>public boolean set (int index, int value)
+{
+    boolean result = false;
+    AtomicAction A = new AtomicAction();
+
+    A.begin();
+
+    // We need to set a WRITE lock as we want to modify the state.
+
+    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)
+    {
+        elements[index] = value;
+        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))
+            highestIndex = index;
+        A.commit(true);
+        result = true;
+    }
+    else
+        A.rollback();
+
+    return result;
+}
+
+public int get (int index)  // assume -1 means error
+{
+    AtomicAction A = new AtomicAction();
+
+    A.begin();
+
+    // We only need a READ lock as the state is unchanged.
+
+    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)
+    {
+        A.commit(true);
+
+        return elements[index];
+    }
+    else
+        A.rollback();
+
+    return -1;
+}</programlisting>
+            
+        </section>
+        
+        <section>
+            <title>Garbage collecting objects</title>
+            
+            <para>Java objects are deleted when the garbage collector determines that they are no longer required. Deleting an object that is currently under the control of a transaction must be approached with caution since if the object is being manipulated within a transaction its fate is effectively determined by the transaction. Therefore, regardless of the references to a transactional object maintained by an application, <emphasis>TxCore</emphasis> will always retain its own references to ensure that the object is not garbage collected until after any transaction has terminated.</para>
+            
+        </section>
+        
+        <section>
+            <title>Transaction timeouts</title>
+            
+            <para>By default transactions live until they are terminated by the application that created them or a failure occurs. However, it is possible to set a timeout (in seconds) on a per transaction basis such that if the transaction has not terminated before the timeout expires it will be automatically rolled back.</para>
+            
+            <para>In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter to the <classname>AtomicAction</classname> constructor. If a value of <literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then the transaction will not be automatically timed out. Any other positive value is assumed to the timeout for the transaction (in seconds). A value of zero is taken to be a global default timeout, which can be provided by the property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal>. Unless changed the default value is 60 seconds.</para>
+            
+            <para>When a top-level transaction is created with a non-zero timeout, it is subject to being rolled back if it has not completed within the specified number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper thread which monitors all locally created transactions, and forces them to roll back if their timeouts elapse. To prevent this thread from consuming application time, it only runs periodically. The default checking period is 120000 milliseconds, but can be overridden by setting the  <literal>com.arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to another valid value, in microseconds. Alternatively, if the <literal>com.arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to <literal>DYNAMIC</literal>, the transaction reaper will wake whenever a transaction times out. This has the advantage of terminating transactions early, but may suffer from continually rescheduling the reaper thread.</para>
+            
+            <para>If a value of 0 is specified for the timeout of a top-level transaction (or no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose any timeout on the transaction, i.e., it will be allowed to run indefinitely. This default timeout can be overridden by setting the <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using <emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds.</para>
+            
+            
+        </section>
+        
+        
+    </section>
+    
+    
+</chapter>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_03.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_04.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_04.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,92 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+    <title>Hints and tips</title>
+    
+    <section>
+        <title>General</title>
+        
+        <section>
+            <title>Using transactions in constructors</title>
+            
+            <para>Examples throughout this manual have used transactions in the implementation of constructors for new persistent objects. This is deliberate because it guarantees correct propagation of the state of the object to the object store. Recall that the state of a modified persistent object is only written to the object store when the top-level transaction commits. Thus, if the constructor transaction is top-level and it commits, then the newly created object is written to the store and becomes available immediately. If however, the constructor transaction commits but is nested because some other transaction started prior to object creation is running, then the state will be written only if all of the parent transactions commit. </para>
+            
+            <para>On the other hand, if the constructor does not use transactions then it is possible for inconsistencies in the system to arise. For example, if no transaction is active when the object is created then its state will not be saved to the store until the next time the object is modified under the control of some transaction.</para>
+            
+            <para>Consider this simple example:</para>
+            
+            <programlisting>AtomicAction A = new AtomicAction();
+Object obj1;
+Object obj2;
+
+obj1 = new Object();			// create new object
+obj2 = new Object("old");		// existing object
+
+A.begin(0);
+obj2.remember(obj1.get_uid());	// obj2 now contains reference to obj1
+A.commit(true);				// obj2 saved but obj1 is not</programlisting>
+            
+            <para>Here the two objects are created outside of the control of the top-level action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> an old existing object. When the remember operation of <literal>obj2</literal> is invoked the object will be activated and the Uid of <literal>obj1</literal> remembered. Since this action commits the persistent state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</literal>. However, the state of <literal>obj1</literal> itself has not been saved since it has not been manipulated under the control of any action. In fact, unless it is modified under the control of some action later in the application it will never be saved. If, however, the constructor had used an atomic action the state of <literal>obj1</literal> would have automatically been saved at the time it was constructed and this inconsistency could not arise.</para>
+        </section>
+        
+        <section>
+            <title>More on save_state and restore_state</title>
+            
+            <para><emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</command> operation of an object effectively at any time during the lifetime of an object including during the execution of the body of the object’s constructor (particularly if it uses atomic actions). It is important, therefore, that all of the variables saved by save_state are correctly initialised.</para>
+            
+            <para>Caution must be also exercised when writing the <command>save_state</command> and <command>restore_state</command> operations to ensure that no transactions are started (either explicitly in the operation or implicitly through use of some other operation). This restriction arises due to the fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as part of its commit processing resulting in the attempt to execute an atomic transaction during the commit or abort phase of another transaction. This might violate the atomicity properties of the transaction being committed (aborted) and is thus discouraged.</para>
+            
+            <para>In order to support crash recovery for persistent objects it is necessary for all <literal>save_state</literal> and <literal>restore_state</literal> methods of user objects to call <command>super.save_state</command> and <command>super.restore_state</command>.</para>
+            
+        </section>
+        
+        <section>
+            <title>Packing Objects</title>
+            
+            <para>All of the basic types of Java (int, long, etc.) can be saved and restored from an <classname>Input/OutputObjectState</classname> instance by using the pack (and unpack) routines provided by <classname>Input/OutputObjectState</classname>. However packing and unpacking objects should be handled differently. This is because packing objects brings in the additional problems of aliasing. That is two different object references may in actual fact point at the same item. For example:</para>
+            
+            <programlisting>public class Test
+{
+    public Test (String s);
+    ...
+    private String s1;
+    private String s2;
+};
+
+public Test (String s)
+{
+    s1 = s;
+    s2 = s;
+}</programlisting>
+            
+            <para>Here, both s1 and s2 point at the same string and a naive implementation of <command>save_state</command> could end up by copying the string twice. From a <command>save_state</command> perspective this is simply inefficient. However, it makes <command>restore_state</command> incorrect since it would unpack the two strings into different areas of memory destroying the original aliasing information. The current version of TxCore will pack and unpack separate object references.</para>
+         
+         </section>
+    </section>
+    
+    <section>
+        <title>Direct use of StateManager</title>
+        
+        <para>The examples throughout this manual have always derived user classes from <classname>LockManager</classname>. The reasons for this are twofold. Firstly, and most importantly, the serialisability constraints of atomic actions require it, and secondly it reduces the need for programmer intervention. However, if only access to <emphasis>TxCore</emphasis>'s persistence and recovery mechanisms is required, direct derivation of a user class from <classname>StateManager</classname> is possible.</para>
+        
+        <para>Classes derived directly from <classname>StateManager</classname> must make use of its state management mechanisms explicitly (these interactions are normally undertaken by <classname>LockManager</classname>). From a programmer's point of view this amounts to making appropriate use of the operations activate, deactivate and modified, since <classname>StateManager</classname>'s constructors are effectively identical to those of <classname>LockManager</classname>.</para>
+        
+        <programlisting>boolean activate ()
+boolean activate (String storeRoot)</programlisting>
+        
+        <para><command>Activate</command> loads an object from the object store. The object’s UID must already have been set via the constructor and the object must exist in the store. If the object is successfully read then <command>restore_state</command> is called to build the object in memory. <command>Activate</command> is idempotent so that once an object has been activated further calls are ignored. The parameter represents the root name of the object store to search for the object. A value of null means use the default store.</para>
+        
+        <programlisting>boolean deactivate ()
+boolean deactivate (String storeRoot)</programlisting>
+        
+        <para>The inverse of activate. First calls <command>save_state</command> to build the compacted image of the object which is then saved in the object store. Objects are only saved if they have been modified since they were activated. The parameter represents the root name of the object store into which the object should be saved. A value of null means use the default store.</para>
+        
+        <programlisting>void modified ()</programlisting>
+        
+        <para><emphasis>Must</emphasis> be called prior to modifying the object in memory. If it is not called the object will not be saved in the object store by deactivate.</para>
+    </section>
+    
+    
+</chapter>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_04.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_05.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_05.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_05.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,514 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+    <title>Tools</title>
+    
+    <section>
+        <title>Introduction</title>
+    
+        <para>This chapter explains how to start and use the tools framework and what tools are available.</para>
+    
+    </section>
+    
+    <section>
+        <title>Starting the Transaction Service tools</title>
+        
+        <para>The way to start the transaction service tools differs on the operating system being used:</para>
+        
+        <formalpara>
+            <title>Windows</title>
+            
+            <para>Double click on the ‘Start Tools’ link in the JBoss Transaction Service program group in the start menu.</para>
+        </formalpara>
+        
+        <formalpara>
+            <title>Unix</title>
+            
+            <para>
+                Start a bash shell and type:
+                </para>
+        </formalpara>
+        
+        <programlisting>cd &lt;JBossTS INSTALL DIRECTORY&gt;
+./run-tools.sh</programlisting>
+    
+        <para>Once you have done this the tools window will appear. This is the launch area for all of the tools shipped with the <emphasis>JBoss Transaction Service</emphasis>.  At the top of the window you will notice a menu bar. This menu bar has four items:</para>
+        
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Menu.png" format="PNG"/>
+		</imageobject>
+		<caption>Menu bar</caption>
+	</mediaobject>
+	
+        <formalpara>
+            <title>The <menuchoice><guimenu>File</guimenu></menuchoice> Menu</title>
+	    <para>&nbsp;
+	    </para>
+   	 </formalpara>
+	    <mediaobject>
+		    <imageobject>
+			    <imagedata fileref="images/File_Menu.png" format="PNG"/>
+		    </imageobject>
+	    </mediaobject>
+            <para>
+                <variablelist>
+                    <varlistentry>
+                        <term>Open JMX Browser</term>
+                        <listitem><para>This displays the JMX browser window (see ***Using the JMX Browser for more information on how to use the JMX browser).</para></listitem>
+                    </varlistentry>
+                    
+                    <varlistentry>
+                        <term>Open Object Store Browser </term>
+                        <listitem><para>This displays the JBossTS Object Store browser window (see ***Using the Object Store Browser for more information on how to use the Object Store browser).</para></listitem>
+                    </varlistentry>
+                    
+                    <varlistentry>
+                        <term>Settings</term>
+                        <listitem><para>This option opens the settings dialog which lets you configure the different tools available.</para></listitem>
+                    </varlistentry>
+                    
+                    <varlistentry><term>Exit</term>
+                        <listitem><para>This closes the tools window and exits the application, any unsaved/unconfirmed changes will be lost.</para></listitem></varlistentry>
+                    
+                    
+                </variablelist>
+                
+            </para>
+        
+        <formalpara>
+            <title>The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu</title>
+	    <para>&nbsp; 
+	    </para>
+   	 </formalpara>
+	    <mediaobject>
+		    <imageobject>
+			    <imagedata fileref="images/Performance_Menu.png" format="PNG"/>
+		    </imageobject>
+	    </mediaobject>
+            <para>
+                <variablelist>
+                    <varlistentry>
+                        <term>Open</term>
+                        <listitem><para>This opens a performance window – see <xref linkend="Performance_Tool"/> for more information on the performance tool.</para></listitem>
+                    </varlistentry>
+                    
+                    <varlistentry>
+                        <term>Close All</term>
+                        <listitem><para>this closes all of the currently open performance windows – see <xref linkend="Performance_Tool"/> for more information on the performance tool.</para></listitem>
+                    </varlistentry>
+                    
+                </variablelist>
+                
+            </para>
+        
+        <formalpara>
+            <title>The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu</title>
+	    <para> &nbsp;
+	    </para>
+   	 </formalpara>
+	    <mediaobject>
+		    <imageobject>
+			    <imagedata fileref="images/Window_Menu.png" format="PNG"/>
+		    </imageobject>
+	    </mediaobject>
+            <para><variablelist>
+                <varlistentry>
+                    <term>Cascade Windows</term>
+                    <listitem><para>This arranges the windows in a diagonal line to you find a specific window.</para></listitem>
+                </varlistentry>
+                
+                <varlistentry>
+                    <term>1. XXXXXXX</term>
+                    <listitem><para>For each window currently visible an extra menu option will be available here.  Selecting this menu option will bring the associated window to the front of the desktop.</para></listitem>
+                </varlistentry>
+                
+            </variablelist>
+            </para>
+        
+        <formalpara>
+            <title>The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu</title>
+	    <para>&nbsp;
+	    </para>
+   	 </formalpara>
+	    <mediaobject>
+		    <imageobject>
+			    <imagedata fileref="images/Help_Menu.png" format="PNG"/>
+		    </imageobject>
+	    </mediaobject>
+            <para><variablelist>
+                <varlistentry>
+                    <term>About</term>
+                    <listitem><para>This displays the about window containing the product information.</para></listitem>
+                </varlistentry>
+            </variablelist>
+            </para>
+        
+        
+        
+    </section>
+    
+    <section id="Performance_Tool">
+        <title>Using the Performance Tool</title>
+        
+        <para>The performance tool can be used to display performance information about the transaction service.  This information is gathered using the Performance JMX bean which means that the transaction service needs to be integrated into an Application Server to give any performance information.</para>
+        
+        <para>The performance information is displayed via a multi-series graph.  To view this graph simply open a performance window by selecting <menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; <menuchoice><guimenuitem>Open</guimenuitem></menuchoice></para>
+	
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Performance_Window.png" format="PNG"/>
+		</imageobject>
+	    </mediaobject>
+	
+	<para>
+		The window now on screen contains a multi-serise graph which can display the following information:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Number of transactions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Number of committed transactions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Number of aborted transactions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Number of nested transactions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Number of heuristics raised.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		To turn these series on and off simply select the menu option from the series menu. 
+	</para>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Series_Menu.png" format="PNG"/>
+		</imageobject>
+	    </mediaobject>
+	<para>
+		When series are turned on they appear in the legend at the bottom of the graph. The colour next to the series name (for example, Transactions Created) is the colour of the line representing that data.
+	</para>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Series_Colour.png" format="PNG"/>
+		</imageobject>
+	    </mediaobject>
+	<para>
+		The data shown is graphed against time. The Y-axis represents the number of transactions and the X-axis represents time.
+	</para>
+	<para>
+		At any point the sampling of data can be stopped and restarted using the <menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data currently visible in the graph can be saved to a Comma Separate Values  (CSV) file for importing the data into a spreadsheet application using the <menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from the <menuchoice><guimenu>Data</guimenu></menuchoice> menu.
+	</para>
+    </section>
+    <section id="JMX_Browser">
+    	<title>Using the JMX Browser</title>
+	<para>
+		To open the JMX browser window click on the <menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX Browser</guimenu></menuchoice> option.  The JMX browser window will then be displayed.
+	</para>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/JMX_Browser.png" format="PNG"/>
+		</imageobject>
+	</mediaobject>
+	<para>
+		The window is made up of two main sections:the details panel and the MBean panel. The MBean panel displays the MBeans exposed by the MBean server. These are grouped by domain name.  The details panel displays information about the currently selected MBean.  To select an MBean just left-click it with the mouse and it will become highlighted. The information displayed in the details panel is as follows:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The total number of MBeans registered on this server.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The number of constructors exposed by this MBean.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The number of attributes exposed by this MBean.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The number of operations exposed by this MBean.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The number of notifications exposed by this MBean.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				A brief description of the MBean.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which when clicked displays the attributes and operations exposed by this MBean.  From there you can view readable attributes, alter writeable attributes and invoke operations.
+	</para>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Details_Panel.png" format="PNG"/>
+		</imageobject>
+		<caption>An example of what the details panel displays</caption>
+	</mediaobject>
+	<section id="Using_Attributes_and_Operations">
+		<title>Using Attributes and Operations</title>
+		<para>
+			When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked the View JMX Attributes and Operations window is displayed.  From here you can view all readable attributes exposed by the selected MBean.  You can also alter writeable attributes.  If an attribute is read-only then you will not be able to alter an attributes value.  To alter an attributes value just double click on the current value and enter the new value.  If the <guibutton>...</guibutton> button is enabled then you can click this to view a more suitable editing method.  If the attribute type is a JMX object name then clicking this button will display the JMX attributes and operations for that object.
+		</para>
+		<para>
+			At any point you can click the <guibutton>Refresh</guibutton> button to refresh the attribute values.  If an exception occurs while retrieving the value of an attribute the exception will be displayed in place of the attributes value.
+		</para>
+		<para>
+			You can also invoke operations upon an MBean.  A list of operations exposed by an MBean is displayed below the attributes list.  To invoke an operation simply select it from the list and click the <guibutton>Invoke</guibutton> button.  If the operation requires parameters a further window will be displayed, from this window you must specify values for each of the parameters required.  You specify parameter values in the same way as you specify JMX attribute values.  Once you have specified a value for each of the parameters click the <guibutton>Invoke</guibutton> button to perform the invocation.
+		</para>
+		<para>
+			Once the method invocation has completed its return value will be displayed.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/JMX_Attributes_Operations.png" format="PNG"/>
+			</imageobject>
+			<caption>View JMX Attributes and Operations window</caption>
+	    </mediaobject>
+	    <mediaobject>
+		    <imageobject>
+			    <imagedata fileref="images/Invoke_Operation_Parameters.png" format="PNG"/>
+		    </imageobject>
+		    <caption>Invoke Operation Parameters</caption>
+	    </mediaobject>
+	</section>
+	<section id="Using_the_Object_Store_Browser">
+		<title>Using the Object Store Browser</title>
+		<para>
+			To open the Object Store browser window click on the <menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> option. The Object Store browser window will then be displayed.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Object_Store.png" format="PNG"/>
+			</imageobject>
+	    </mediaobject>
+		<para>
+			The object store browser window is split into four sections:
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Object_Store_Split.png" format="PNG"/>
+			</imageobject>
+	    </mediaobject>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Object Store Roots - this is a pull down of the currently avaliable object store roots. Selecting an option from the list will repopulate the hierachy view with the contents of the selected root.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Object Store Hierarchy – this is a tree which shows the current object store hierarchy.  Selecting a node from this tree will display the objects stored in that location.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Objects – this is a list of icons which represent the objects stored in the selected location.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Object Details – this shows information about the currently selected object (only if the object’s type is known to the state viewer repository see Writing an OSV for information on how to write a object state viewers).
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	<section id="Object_State_Viewers">
+		<title>Object State Viewers (OSV)</title>
+		<para>
+			When an object is selected in the objects pane of the main window the registered Object State Viewer (or OSV) for that object type is invoked. An OSV’s job is to make information available via the user interface to the user to show information about the selected object. Distributed with the standard tools is an OSV for Atomic Actions, the OSV displays information on the Abstract Records in it’s various lists (e.g. heuristic, failed, read-only, etc). It is also possible to write your own OSVs which can be used to display information about object types you have defined.  This subject is covered next.
+		</para>
+		<formalpara>
+			<title>Writing an OSV</title>
+			<para>
+				Writing an OSV plugin allows you to extend the capabilities of the Object Store browser to show the state of user defined abstract records.  An OSV plug-in is simply a class which implements the interface:
+			</para>
+		</formalpara>
+		<para>
+		 <code>com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface</code>
+	 	</para>	
+		<para>
+			It must be packaged in a JAR within the plugins directory. This example shows how to create an OSV plugin for an abstract record subclass which looks as follows:
+		</para>
+<screen>
+public class SimpleRecord extends AbstractRecord
+{
+	private int _value = 0;
+	
+	.....
+	
+	public void increase()
+	{
+		_value++;
+	}
+	
+	public int get()
+	{
+		return _value;
+	}
+	
+	public String type()
+	{
+		return “/StateManager/AbstractRecord/SimpleRecord”;
+	}
+	
+	public boolean restore_state(InputObjectState os, int i)
+	{
+		boolean returnValue = true;
+	
+		try
+		{
+			_value = os.unpackInt();
+		}
+		catch (java.io.IOException e)
+		{
+			returnValue = false;
+		}
+	
+		return returnValue;
+	}
+	
+	public boolean save_state(OutputObjectState os, int i)
+	{
+		boolean returnValue = true;
+	
+		try
+		{
+			os.packInt(_value);
+		}
+		catch (java.io.IOException e)
+		{
+			returnValue = false;
+		}
+	
+		return returnValue;
+	}
+}
+</screen>
+		<para>
+			When this abstract record is viewed in the object store browser it would be nice to see the current value. This is easy to do as we can read the state into an instance of our abstract record and call <methodname>getValue()</methodname>. The following is the object store browser plug-in source code:
+		</para>
+<screen>
+public class SimpleRecordOSVPlugin implements StateViewerInterface
+{
+	/**
+	* A uid node of the type this viewer is registered against has been expanded.
+	* @param os
+	* @param type
+	* @param manipulator
+	* @param node
+	* @throws ObjectStoreException
+	*/
+	public void uidNodeExpanded(ObjectStore os,
+	String type,
+	ObjectStoreBrowserTreeManipulationInterface 
+	manipulator,
+	UidNode node,
+	StatePanel infoPanel)
+	throws ObjectStoreException
+	{
+		// Do nothing
+	}
+	
+	/**
+	* An entry has been selected of the type this viewer is registered against.
+	*
+	* @param os
+	* @param type
+	* @param uid
+	* @param entry
+	* @param statePanel
+	* @throws ObjectStoreException
+	*/
+	public void entrySelected(ObjectStore os,
+	String type,
+	Uid uid,
+	ObjectStoreViewEntry entry,
+	StatePanel statePanel) 
+	throws ObjectStoreException
+	{
+		SimpleRecord rec = new SimpleRecord();
+	
+		if ( rec.restore_state( os.read_committed(uid, type), ObjectType.ANDPERSISTENT ) )
+		{
+			statePanel.setData( “Value”, rec.getValue() );
+		}
+	}
+	
+	/**
+	* Get the type this state viewer is intended to be registered against.
+	* @return
+	*/
+	public String getType()
+	{
+		return “/StateManager/AbstractRecord/SimpleRecord”;
+	}
+}
+</screen>
+		<para>
+			The method <methodname>uidNodeExpanded</methodname> is invoked when a UID (Unique Identification) representing the given type is expanded in the object store hierarchy tree. This is not required by this plugin as this abstract record is not visible in the object store directly it is only viewable via one of the lists in an atomic action.  The method <methodname>entrySelected</methodname> is invoked when an entry is selected from the object view which represents an object with the given type. In both methods the StatePanel is used to display information regarding the state of the object. The state panel has the following methods that assist in display this information:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<methodname>setInfo(String info)</methodname>: This method can be used to show general information.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<methodname>setData(String name, String value)</methodname>: This method is used to put information into the table which is displayed by the object store browser tool.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<methodname>enableDetailsButton(DetailsButtonListener listener)</methodname>: This method is used to enable the details button.  The listener interface allows a plug-in to be informed when the button is pressed.  It is up to the plug-in developer to decide how to display this further information.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			In this example we read the state from the object store and use the value returned by getValue() to put an entry into the state panel table.  The getType() method returns the type this plug-in is to be registered against.
+		</para>
+		<para>
+			To add this plug-in to the object store browser it is necessary to package it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. The JAR file must contain certain information within the manifest file so that the object store browser knows which classes are plug-ins.  All of this can be performed using an <ulink url="http://ant.apache.org">Apache ANT</ulink> script, as follows:
+		</para>
+<screen>
+&lt;jar jarfile="osbv-simplerecord.jar"&gt;
+	&lt;fileset dir="build" includes="*.class”/&gt;
+	&lt;manifest&gt;
+		&lt;section name="arjuna-tools-objectstorebrowser"&gt;
+			&lt;attribute name="plugin-classname-1" value=" SimpleRecordOSVPlugin "/&gt;
+		&lt;/section&gt;
+	&lt;/manifest&gt;
+&lt;/jar&gt;
+</screen>
+		<para>
+			Once the JAR has been created with the correct information in the manifest file it just needs to be placed in the <emphasis>bin/tools/plugins</emphasis> directory.
+		</para>
+	</section>
+    </section>
+</chapter>


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_05.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_06.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_06.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_06.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,379 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+    <title>Constructing a Transactional objects for Java application</title>
+    
+    <section>
+        <title>Application construction</title>
+		<para>
+			There are two distinct phases to the development of a TxCore application:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Developing new classes with certain characteristics (for example, Persistent, Recoverable, Concurrency Controlled).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Developing the application(s) that make use of the new classes of objects.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Although these two phases may be performed in parallel and by a single person, we shall refer to the first step as the job of the class developer and the second as the job of the applications developer. The class developer will be concerned about defining appropriate <code>save_state</code> and <code>restore_state</code> operations for the class, setting appropriate locks in operations, and invoking the appropriate TxCore class constructors. The applications developer will be more concerned with defining the general structure of the application, particularly with regard to the use of atomic actions.
+		</para>
+		<para>
+			This chapter illustrates the points made in previous sections by outlining a simple application: in this case a simple FIFO Queue class for integer values will be developed. The implementation of the Queue will be with a doubly linked list structure, and it will be implemented as a single object. We shall be using this example throughout the rest of this manual to help illustrate the various mechanisms provided by TxCore. While this is an unrealistic example application it enables all of the TxCore modifications to be described without requiring in depth knowledge of the application code.
+		</para>
+		<para>
+			In the rest of this chapter we shall assume that the application is not distributed. If this is not the case, then context information must be propagated either implicitly or explicitly.
+		</para>
+		<formalpara>
+			<title>Queue description</title>
+			<para>
+				The queue is a traditional FIFO queue, where elements are added to the front and removed from the back. The operations provided by the queue class allow the values to be placed on to the queue (enqueue) and to be removed from it (dequeue), and it is also possible to change or inspect the values of elements in the queue. In this example implementation, an array is used to represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been imposed for this example.
+			</para>
+		</formalpara>
+			<para>
+				The Java interface definition of this simple queue class is given below:
+			</para>
+<screen>
+public class TransactionalQueue extends LockManager
+{
+	public TransactionalQueue (Uid uid);
+	public TransactionalQueue ();
+	public void finalize ();
+	
+	public void enqueue (int v) throws OverFlow, UnderFlow,
+	QueueError, Conflict;
+	public int dequeue  () throws OverFlow, UnderFlow,
+	QueueError, Conflict;
+	
+	public int queueSize ();
+	public int inspectValue (int i) throws OverFlow,
+	UnderFlow, QueueError, Conflict;
+	public void setValue (int i, int v) throws OverFlow,
+	UnderFlow, QueueError, Conflict;
+	
+	public boolean save_state (OutputObjectState os, int ObjectType);
+	public boolean restore_state (InputObjectState os, int ObjectType);
+	public String type ();
+	
+	public static final int QUEUE_SIZE = 40; // maximum size of the queue
+	
+	private int[QUEUE_SIZE] elements;
+	private int numberOfElements;
+};			
+</screen>
+		<formalpara>
+			<title>Constructors and deconstructors</title>
+			<para>
+				As stated in the previous section, to use an existing persistent object requires the use of a special constructor that is required to take the Uid of the persistent object; the implementation of such a constructor is given below:
+			</para>
+		</formalpara>
+<screen>
+public TransactionalQueue (Uid u)
+{
+	super(u);
+	
+	numberOfElements = 0;
+}		
+</screen>
+			<para>
+				The constructor that creates a new persistent object is similar:
+			</para>
+<screen>
+public TransactionalQueue ()
+{
+	super(ObjectType.ANDPERSISTENT);
+	
+	numberOfElements = 0;
+	
+	try
+	{
+		AtomicAction A = new AtomicAction();
+	
+		A.begin(0);	// Try to start atomic action
+	
+		// Try to set lock
+	
+			if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)
+			{
+				A.commit(true);	// Commit
+			}
+			else 	// Lock refused so abort the atomic action
+				A.rollback();
+			}
+	catch (Exception e)
+	{
+		System.err.println(“Object construction error: “+e);
+		System.exit(1);
+	}
+}			
+</screen>
+			<para>
+				The use of an atomic action within the constructor for a new object follows the guidelines outlined earlier and ensures that the object’s state will be written to the object store when the appropriate top level atomic action commits (which will either be the action A or some enclosing action active when the <code>TransactionalQueue</code> was constructed). The use of atomic actions in a constructor is simple: an action must first be declared and its begin operation invoked; the operation must then set an appropriate lock on the object (in this case a <code>WRITE</code> lock must be acquired), then the main body of the constructor is executed. If this is successful the atomic action can be committed, otherwise it is aborted.
+			</para>
+			<para>
+				The destructor of the queue class is only required to call the terminate operation of <methodname>LockManager</methodname>
+			</para>
+<screen>
+public void finalize ()
+{
+	super.terminate();
+}
+</screen>
+		<formalpara>
+			<title>save_state, resotre_state and type</title>
+			<para>
+				The implementations of save_state and restore_state are relatively simple for this example:
+			</para>
+		</formalpara>
+<screen>
+public boolean save_state (OutputObjectState os, int ObjectType)
+{
+	if (!super.save_state(os, ObjectType))
+	return false;
+	
+	try
+	{
+		os.packInt(numberOfElements);
+	
+		if (numberOfElements &gt; 0)
+		{
+			for (int i = 0; i &lt; numberOfElements; i++)
+			    os.packInt(elements[i]);
+		}
+			    
+		return true;
+	}
+	catch (IOException e)
+	{
+		return false;
+	}
+}
+
+public boolean restore_state (InputObjectState os, int ObjectType)
+{
+	if (!super.restore_state(os, ObjectType))
+		return false;
+		    
+	try
+	{
+		numberOfElements = os.unpackInt();
+		    
+		if (numberOfElements &gt; 0)
+		{
+			for (int i = 0; i &lt; numberOfElements; i++)
+				    elements[i] = os.unpackInt();
+		}
+		    
+		return true;
+	}
+	catch (IOException e)
+	{
+		return false;
+	}
+}			
+</screen>
+		<para>
+			Because the Queue class is derived from the <classname>LockManager</classname> class, the operation type should be:
+		</para>
+<screen>
+public String type ()
+{
+	return "/StateManager/LockManager/TransactionalQueue";
+}
+</screen>
+		<formalpara>
+			<title>enqueue/dequeue operations</title>
+				<para>
+					If the operations of the queue class are to be coded as atomic actions, then the enqueue operation could have the structure given below (the dequeue operation would be similarly structured):
+				</para>
+		</formalpara>
+<screen>
+public void enqueue (int v) throws OverFlow, UnderFlow, QueueError
+{
+	AtomicAction A = new AtomicAction();
+	boolean res = false;
+	
+	try
+	{
+		A.begin(0);
+	
+		if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)
+		{
+			if (numberOfElements &lt; QUEUE_SIZE)
+			       {
+			       		elements[numberOfElements] = v;
+			       		numberOfElements++;
+			       		res = true;
+			       }
+			       else
+			       {
+			       		A.rollback();
+			      		throw new UnderFlow();
+			       }
+		}
+			       
+		if (res)
+			 A.commit(true);
+		else
+		{
+			 A.rollback();
+			       		throw new Conflict();
+		}
+	}
+	catch (Exception e1)
+	{
+		throw new QueueError();
+	}
+}
+</screen>
+		<formalpara>
+			<title>queueSize</title>
+			<para>The implementation of <methodname>queueSize</methodname> is shown below:</para>
+		</formalpara>
+<screen>
+public int queueSize () throws QueueError, Conflict
+{
+	AtomicAction A = new AtomicAction();
+	int size = -1;
+	
+	try
+	{
+		A.begin(0);
+	
+		if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)
+			size = numberOfElements;
+	
+		if (size != -1)
+			A.commit(true);
+		else
+		{
+			A.rollback();
+	
+			throw new Conflict();
+		}
+	}
+	catch (Exception e1)
+	{
+		throw new QueueError();
+	}
+	
+	return size;
+}
+</screen>
+		<formalpara>
+			<title>inspectValue/setValue operations</title>
+				<para>
+					The implementation of <methodname>inspectValue</methodname> is shown below. <methodname>setValue</methodname> is similar, and not shown.
+				</para>
+		</formalpara>
+<screen>
+public int inspectValue (int index) throws UnderFlow,
+	OverFlow, Conflict, QueueError
+{
+	AtomicAction A = new AtomicAction();
+	boolean res = false;
+	int val = -1;
+	
+	try
+	{
+		A.begin();
+	
+		if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)
+		{
+			if (index &lt; 0)
+		   	 {
+		   		 A.rollback();
+		    		throw new UnderFlow();
+		    	}
+		else
+		{
+		    // array is 0 - numberOfElements -1
+		    
+		    if (index &gt; numberOfElements -1)
+		{
+			A.rollback();
+			throw new OverFlow();
+		}
+		else
+		{
+			val = elements[index];
+			res = true;
+		}
+		}
+		}
+		
+		if (res)
+			A.commit(true);
+		else
+		{
+			A.rollback();
+			throw new Conflict();
+		}
+	}
+	catch (Exception e1)
+	{
+		throw new QueueError();
+	}
+		
+	return val;
+}
+</screen>
+		<formalpara>
+			<title>The client</title>
+				<para>
+					Rather than show all of the code for the client, we shall concentrate on a representative portion. Before invoking operations on the object, the client must obviously first bind to it. In the local case this simply requires the client to create an instance of the object.
+				</para>
+		</formalpara>
+<screen>
+public static void main (String[] args)
+{
+TransactionalQueue myQueue = new TransactionalQueue();
+</screen>
+				<para>
+					Before invoking one of the queue’s operations, the client starts a transaction. The <methodname>queueSize</methodname> operation is shown below:
+				</para>
+<screen>
+AtomicAction A = new AtomicAction();
+int size = 0;
+	
+try
+{
+	A.begin(0);
+s
+	try
+	{
+		size = queue.queueSize();
+	}
+	catch (Exception e)
+	{
+	}
+	
+	if (size &gt;= 0)
+	{
+		A.commit(true);
+	
+		System.out.println(“Size of queue: “+size);
+	}
+	else
+		A.rollback();
+}
+catch (Exception e)
+{
+	System.err.println(“Caught unexpected exception!”);
+}
+</screen>
+		<formalpara>
+			<title>Comments</title>
+				<para>
+					Since the queue object is persistent, then the state of the object will survive any failures of the node on which it is located. The state of the object that will survive is that produced by the last top-level committed atomic action performed on the object. If it is the intention of an application to perform two enqueue operations atomically, for example, then this can be done by nesting the enqueue operations in another enclosing atomic action. In addition, concurrent operations on such a persistent object will be serialised, thereby preventing inconsistencies in the state of the object. However, since the elements of the queue objects are not individually concurrency controlled, certain combinations of concurrent operation invocations will be executed serially, whereas logically they could be executed concurrently. For example, modifying the states of two different elements in the queue. In the next section we address some of these issues.
+				</para>
+		</formalpara>
+    </section>
+</chapter>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_06.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,235 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter>
+    <title>Configuration options</title>
+    
+    <section>
+        <title>Options</title>
+		<para>
+			The following table shows the configuration features, with default values shown in italics. More details about each option can be found in the relevant sections of this document.
+		</para>
+		<table>
+			<title>TxCore configuration options.</title>
+			<tgroup cols="3">
+				<thead>
+					<row>
+						<entry>
+							Configuration Name
+						</entry>
+						<entry>
+							Possible Values
+						</entry>
+						<entry>
+							Description
+						</entry>
+					</row>
+				</thead>
+				<tbody>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.storeSync
+						</entry>
+						<entry>
+							ON/OFF
+						</entry>
+						<entry>
+							Turns synchronization of the object store on or off. Use with caution.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.storeType
+						</entry>
+						<entry>
+							ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore
+						</entry>
+						<entry>
+							Specify the type of object store implementation to use.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.hashedDirectories
+						</entry>
+						<entry>
+							255/any integer value
+						</entry>
+						<entry>
+							Set the number of directories to hash object states over for the HashedStore object store implementation.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.txoj.lockstore.lockStoreType
+						</entry>
+						<entry>
+							BasicLockStore/BasicPersistentLockStore
+						</entry>
+						<entry>
+							Specify the type of the lock store implementation to use.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.txoj.lockstore.lockStoreDir
+						</entry>
+						<entry>
+							Windows: .\LockStore
+							Unix: ./LockStore
+						</entry>
+						<entry>
+							Specify the location of the lock store.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.objectStoreDir
+						</entry>
+						<entry>
+							Any location the application can write to.
+						</entry>
+						<entry>
+							Specify the location of the object store.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.localOSRoot
+						</entry>
+						<entry>
+							defaultStore
+						</entry>
+						<entry>
+							Specify the name of the object store root.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.actionStore
+						</entry>
+						<entry>
+							ActionStore/HashedActionStore/JDBCActionStore
+						</entry>
+						<entry>
+							The transaction log implementation to use.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.asyncCommit
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+							Turns on or off (default) asynchronous commit.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.asyncPrepare
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+							Turns on or off (default) asynchronous prepare.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.transactionSync
+						</entry>
+						<entry>
+							ON/OFF
+						</entry>
+						<entry>
+							Turns synchronization of the object store on or off. Use with caution.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess
+						</entry>
+						<entry>
+							JDBCAccess class name
+						</entry>
+						<entry>
+							The JDBCAccess implementation to use for user-level object stores.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess
+						</entry>
+						<entry>
+							JDBCAccess class name
+						</entry>
+						<entry>
+							The JDBCAccess implementation to use for transaction object stores.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.commitOnePhase
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+							Enable or disable the one-phase commit optimization.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.readonlyOptimisation
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+							Enable or disable read-only optimization for the second phase abort.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.enableStatistics
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+							Start/stop collecting transaction statistic information.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.startDisabled
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+							Start with the transaction system enabled or disabled. Toggle via the com.arjuna.ats.arjuna.coordinator.TxControl class.
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.arjuna.coordinator.defaultTimeout
+						</entry>
+						<entry>
+							Integer
+						</entry>
+						<entry>
+							Timeout in milliseconds
+						</entry>
+					</row>
+				</tbody>
+			</tgroup>
+			
+
+		</table>
+    </section>
+</chapter>
\ No newline at end of file


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Chapter_07.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.ent
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<!--	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+	<xi:include href="Chapter.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Chapter_02.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Chapter_03.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Chapter_04.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Chapter_05.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Chapter_06.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> 
+	<xi:include href="Chapter_07.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Appendix_A.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Appendix_B.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<!--	<xi:include href="Appendix.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP07.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Details_Panel.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Details_Panel.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/File_Menu.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/File_Menu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Help_Menu.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Help_Menu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Independent_Top-Level.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Independent_Top-Level.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Invoke_Operation_Parameters.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Invoke_Operation_Parameters.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/JMX_Attributes_Operations.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/JMX_Attributes_Operations.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/JMX_Browser.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/JMX_Browser.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Menu.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Menu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Multiple_Object.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Multiple_Object.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Object_Store.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Object_Store.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Object_Store_Split.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Object_Store_Split.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Performance_Menu.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Performance_Menu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Performance_Window.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Performance_Window.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Persistent_Object_Lifecycle.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Persistent_Object_Lifecycle.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Series_Colour.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Series_Colour.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Series_Menu.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Series_Menu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Single_Object.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Single_Object.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/TXCore_class_hierarchy.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/TXCore_class_hierarchy.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Window_Menu.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/en-US/images/Window_Menu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_A.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_A.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,695 @@
+# translation of Appendix_A.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_A\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-07 08:56+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr "Implementaciones de almacenamiento de objetos "
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr "El ObjectStore"
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr "En este apéndice vamos a examinar las variadas implementaciones del almacenamiento de objetos TxCore y vamos a brindar las directrices de cómo se pueden crear otras implementaciones y conectarlas a una aplicación. "
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+"Este lanzamiento de JBossTS contiene varias implementaciones diferentes de un almacenamiento básico de objetos. Cada una de ellas sirve un propósito particular y generalmente se optimiza para ese propósito. Todas las implementaciones se derivan de la interfaz <interface>ObjectStore</interface>. Esta define las operaciones mínimas que se deben proveer para que JBossTS utilice una implementación de un almacenamiento de objetos. La implementación predeterminada del almacenamiento de objetos se puede sobreescribir en tiempo de ejecución configurando la variable de la propiedad <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> con uno de los tipos que se describen a continuación. "
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr "Los programadores de JBossTS usualmente no necesitan interactuar directamente con ninguna de las implementaciones del almacenamiento de objetos sólo posiblemente para crearlas en primer lugar (incluso esto no es necesario si el tipo predeterminado del almacenamiento se utiliza mientras JBossTS crea almacenamientos cuando sea necesario). Todos los almacenamientos manipulan instancias de la clase <classname>ObjectState</classname>, las cuales se nombran utilizando un tipo (por medio de la operación de tipo() del objeto) y un Uid. Para los propósitos de las acciones atómicas, los estados de objeto en el almacenamiento se pueden encontrar principalmente en dos estados diferentes: OS_COMMITTED y OS_UNCOMMITTED. El estado de un objeto inicia en el estado OS_COMMITTED pero cuando se modififca bajo el control de una acción atómica puede que se escriba un segundo y nuevo estado del objeto es decir en el estado OS_UNCOMMITTED. Si la acción guarda este segundo objeto re!
 emplaza el original y se convierte en OS_COMMITTED. Si la acción aborta, este segundo estado del objeto simplemente se descarta. Todas las implementaciones que se proporcionan con este lanzamiento manejan estas transiciones de estado utilizando copias sombra de estados de objetos, sin embargo, cualquier otra implementación que mantiene esta abstracción es permisible. Los estados de objetos se pueden convertir en ocultos (y por lo tanto inaccesibles) bajo el control del sistema de recuperación de fallos. "
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+"El navegar el contenido de un almacenamiento es posible por medio de las operaciones <methodname>allTypes</methodname> y <methodname>allObjUids</methodname>. <methodname>allTypes</methodname> retorna un "
+"<type>InputObjectState</type> que contiene todos los nombres de tipos de todos los objetos en un almacenamiento, que terminan con un nombre nulo. <methodname>allObjUids</"
+"methodname> retorna un <type>InputObjectState</type> que contiene todos los Uids de todos los objetos de un tipo dado terminado por el <methodname>Uid.nullUid()</methodname> especial."
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr "Almacenamientos de objetos persistentes"
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr "Esta sección describe brevemente las características y optimizaciones para cada una de las implementaciones proporcionadas del almacenamiento de objetos persistentes. Los estados de objetos persistentes se mapean a la estructura del sistema de archivos soportado por el sistema operativo anfitrión. "
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr "Funcionalidades comunes"
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr "Además de las funcionalidades mencionadas anteriormente todos los almacenamientos de objetos persistentes que se proveen siguen las siguientes reglas:"
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr "Cada estado de objeto se almacena en su propio archivo que se nombra utilizando el <code>Uid</code> del objeto."
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr "El tipo de un objeto (tal como es dado por la operación <methodname>type()</methodname>) determina el directorio en el cual se pone el objeto. "
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr "Todos los almacenamientos tienen un directorio raíz común que es determinado cuando se configura JBossTS. El nombre del directorio es añadido automáticamente al principio de cualquier información raíz especifica del almacenamiento. "
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr "Todos los almacenamientos tienen la noción de un directorio raíz localizado que automáticamente se añade al principio al tipo del objeto para determinar el nombre final del directorio. El nombre raíz localizado se especifica cuando se crea el almacenamiento. Por defecto el nombre raíz localizado es <code>defaultStore</code>. "
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr "El almacenmiento de sombras"
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr ""
+"Esta es la versión original del almacenamiento de objetos tal como se proveía en lanzamientos anteriores y es implementada por la clase <classname>ShadowingStore</"
+"classname>. Es simple pero despaciosa. Utilice archivos en parejas para representar objetos (la versión sombra y la versión guardada) y los archivos se abren, se bloquean, se desbloquean y se cierran en cada interacción con el almacenamiento de objetos. Por lo tanto se puede perder bastante tiempo en el sistema con tan sólo abrir, cerrar o renombrar archivos, operaciones que son bastante caras. "
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr "Si sobreescribe la implementación del almacenamiento de objetos entonces el tipo de este almacenamiento es <type>ShadowingStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr "No bloqueo a nivel de archivos "
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr "Ya que los objetos transacionales se controlan concurrentemente por medio de <methodname>LockManager</methodname>, no es necesario imponer bloqueo adicional a nivel de archivos, como lo hace la implementación básica de ShadowingStore. Por lo tanto, la implementación predeterminada del almacenamiento de objetos para JBossTS, <methodname>ShadowNoFileLockStore</methodname>, depende del bloqueo a nivel del usuario. Esto lo habilita para proporcionar un mejor rendimiento que la implementación <methodname>ShadowingStore</methodname>. "
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr "Si sobreescribe la implementación del almacenamiento de objetos, el tipo de este almacenamiento de objetos es <type>ShadowNoFileLockStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr "El almacenamiento hash"
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "El <code>HashedStore</code> tiene la misma estructura para los estados de objetos que los almacenamientos de sombras pero tiene una estructura de directorio alterna que funciona mejor para almacenar grandes números de objetos del mismo tipo. El utilizar este almacenamiento los objetos son dispersos entre un grupo de directorios al aplicar una función hash al Uid del objeto. Por defecto se utilizan 255 sub-directorios. Sin embargo, esto se puede sobreescribir configurando la variable de entorno <code>HASHED_DIRECTORIES</code> adecuadamente."
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr "Si se sobreescribe la implementación del almacenamiento de objetos, el tipo de este almacenamiento de objetos es <type>HashedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+"Ya que los objetos transaccionales son controlados concurrentemente por medio de "
+"<methodname>LockManager</methodname>, no es necesario imponer bloqueo adicional a nivel de archivos, ya que la implementación básica "
+"<methodname>ShadowingStore</methodname> lo hace. Por lo tanto, la implementación predeterminada del almacenamiento de objetos para JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, depende del bloqueo a nivel del usuario. Esto lo habilita para proporcionar mejor rendimiento que la implementación "
+"<methodname>ShadowingStore</methodname>."
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "El <methodname>HashedStore</methodname> tiene la misma estructura para los estados de objetos que los almacenamientos sombras pero tiene una estructura de directorio alterna que funciona mejor para almacenar grandes número de objetos del mismo tipo. Al utilizar este almacenamiento los objetos son dispersados a través de un grupo de directorio aplicando una función hash al Uid del objeto. Por defecto se utilizan 255 sub-directorios. Sin embargo, esto se puede sobreescribir configurando la variable de entorno <code>HASHED_DIRECTORIES</code> de acuerdo con esto."
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr "El almacenamiento JDBC"
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr ""
+"El <methodname>JDBCStore</methodname> utiliza una base de datos JDBC para guardar estados de objetos persistentes; cuando se utiliza junto con los objetos transaccionales para transacciones anidadas Java API hay sopporte disponible. En la implementación actual, todos los estados de los objetos se almacenan como objetos binarios grandes (BLOBs del inglés Binary Large Objects) "
+"dentro de la misma tabla. La limitación en el tamaño del estado del objeto se impone utilizando BLOBs de 64k; si se intenta almacenar un estado de objeto que excede este "
+"límite se presentará un error en la salida y el estado no se almacenará. Posteriormente se forzará a que la transacción se deshaga."
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+"Al utilizar el almacenamiento de objetos JDBC, la aplicación debe proporcionar una implementación de la siguiente interfaz ubicada en el paquete <code>com.arjuna."
+"ats.arjuna.objectstore</code>:"
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr "La implementación de esta clase es la responsable de proporcionar la <emphasis>Connection</emphasis> que será utilizada por el JDBC ObjectStore para guardar y reestablecer los estados de objetos:"
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr ""
+"<methodname>getConnection</methodname>: retorna la conexión a utilizar. Este método se llamará cuando se requiera una conexión y la "
+"implementación debe utilizar la política que sea necesaria para determinar que conexión retornar. Este método no necesita retornar la misma instancia de conexión más de una vez."
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr "<methodname>putConnection</methodname>: este método se llamará para retornar una de las conexiones adquiridas del getConnection. Las conexiones se retornan si ocurre algún error al utilizarlas."
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr "<methodname>initialise</methodname>: este se puede utilizar para pasar información arbitraria adicional a la implementación."
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+"El almacenamiento de objetos JDBC inicialmente pedirá el número de conexiones definidas en la propiedad <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> y no utilizará más de las que están definidas en la propiedad "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property>."
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr ""
+"La implementation de la interfaz <interfacename>JDBCAccess</interfacename> "
+"a utilizar se debe configurar en la variable de la propiedad <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property>."
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr "Si sobreescribe la implementación del almacenamiento de objetos, el tipo de este almacenamiento de objetos es <type>JDBCStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+"Se puede utilizar un almacenamiento de objetos JDBC para administrar el registro de transacciones. En este caso, la implementación del registro de transacciones se debe configurar como <property>JDBCActionStore</property> y la implementación <methodname>JDBCAccess</"
+"methodname> se debe propocionar a través de la variable de la propiedad <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property>. En este caso, el nombre predeterminado de la tabla es JBossTSTxTable."
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr "Es posible utilizar la misma implementación JDBCAccess para el almacenamiento de objetos del usuario y el registro de transacciones. "
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr "El almacenamiento en caché"
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr "Este almacenamiento de objetos utilizó el almacenamiento de objetos con hash pero no lee ni escribe estados en el almacenamiento persistente de copias de seguridad de manera inmediata. Mantiene los estados en un caché de memoria volátil y vacia el caché de manera periódica o cuando está lleno. La semántica de fallos asociada con este almacenamiento de objetos es diferente de los almacenamientos normales de objetos persistentes ya que una falla podría hacer que se pierdan estados que se encuentran en el caché."
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr "Si sobreescribe la implementación del almacenamiento de objetos, el tipo de este almacenamiento de objetos es <type>CachedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr "El almacenamiento se puede configurar con las siguientes propiedades:"
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> establece el número de almacenamientos internos sobre los cuales realizar hash en los estados. El valor predeterminado es 128."
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> es el tamaño máximo al que puede llegar el caché antes de que el vaciado tenga lugar. Por defecto es 10240 bytes."
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> es el número máximo de objetos removidos que el caché puede contener antes de que se dispare el vaciado. Por defecto, las llamadas para remover un estado que se encuentra en el caché simplemente removerán el estado del caché, pero dejarán una entrada en blanco (en vez de remover la entrada inmediatamente, lo cual afectaría el rendimiento del caché). Cuando se dispara, estas entradas se remueven del caché. El valor predeterminado es dos veces el tamaño del hash."
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> es el número máximo de objetos que se permiten construir en el caché antes de que se vacie. El valor predeterminado es 100."
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> configura el tiempo en milisegundos para vaciar el caché periódicamente. Por defecto es 120 segundos."
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determina si vaciado del caché se debe sincronizar con el disco. Por defecto es OFF. Para habilitarlo configúrelo como ON."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_B.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Appendix_B.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,502 @@
+# translation of Appendix_B.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_B\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-25 13:19+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr "Definiciones de clase"
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr "Este apéndice contiene una sinopsis de esas clases que el programador de aplicaciones utiliza usualmente. El objetivo de este apéndice es brindar un referencia rápida sobre estas clases para utilizarse al escribir aplicaciones en TxCore. Para mayor claridad sólo se darán las interfaces públicas y protegidas de las clases. "
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr "Biblioteca de clases "
+
+#. Tag: title
+#: Appendix_B.xml:17
+#, no-c-format
+msgid "Lock Manager"
+msgstr "Administrador de bloqueos"
+
+#. Tag: screen
+#: Appendix_B.xml:20
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:22
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: screen
+#: Appendix_B.xml:25
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:27
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr "Input/OutputObjectState"
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:32
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr "Input/OutputBuffer"
+
+#. Tag: screen
+#: Appendix_B.xml:35
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr "<title>Uid</title>"
+
+#. Tag: screen
+#: Appendix_B.xml:40
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:42
+#, no-c-format
+msgid "AtomicAction"
+msgstr "AtomicAction"
+
+#. Tag: screen
+#: Appendix_B.xml:45
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,23 @@
+# translation of Author_Group.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-25 13:20+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr "Grupo de documentación de Red Hat"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,43 @@
+# translation of Book_Info.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-25 13:23+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss TS Programmers Guide"
+msgstr "Manual para programadores JBoss TS "
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise SOA Platform"
+msgstr "JBoss Enterprise SOA Platform"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr "Este libro es la edición de la plataforma de aplicaciones empresariales del manual para programadores de JBoss TS "
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1030 @@
+# translation of Chapter.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 10:30+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr "Sinopsis"
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr ""
+"Este capítulo contiene una descripción del uso de la máquina de transacciones <classname>TxCore</"
+"classname> y las clases y funcionalidades de los <firstterm>objetos transaccionales para "
+"Java</firstterm>. Las clases mencionadas en este capítulo son la clave para escribir aplicaciones tolerantes a fallas utilizando "
+"transacciones. Por lo tanto, después de describirlas las vamos a aplicar en la construcción de una aplicación simple. Las clases que vamos a describir en este capítulo se pueden encontrar en los paquetes <classname>com.arjuna.ats.txoj</classname> y "
+"<classname>com.arjuna.ats.arjuna</classname>."
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr "TxCore – la máquina de transacciones"
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr ""
+"Con el fin de mantenerse en línea con la perspectiva orientada a objetos, los mecanismos que se necesitan para construir aplicaciones confiables se presentan a los porgramadores de una manera orientada a los objetos. Algunos mecanismos deben ser heredados, por ejemplo, el control de concurrencia y la administración de estado, mientras que otros mecanismos tal como el almacenamiento de objetos y de transacciones se implementan como objetos <classname>TxCore</"
+"classname> que se crean y se manipulan como cualquier otro objeto. "
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+"Cuando el manual habla sobre el uso de funcionalidades como el control de concurrencia y de persistencia asume que se están utilizando las clases de <emphasis>Objetos transaccionales para Java</"
+"emphasis> (TXOJ del inglés Transactional Objects for Java). Si este no es el caso entonces el programador es el responsable de todos estos asuntos. "
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr ""
+"<classname>TxCore</classname> explota las técnicas orientadas a objetos para presentarle a los "
+"programadores un grupo de herramientas de clases Java desde donde las clases de la aplicación pueden heredar para obtener las propiedades deseadas tal como persistencia y control de concurrencia. Estas clases forman una jerarquía, parte de la cual se muestra a continuación y que también se describirá más adelante en este documento."
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr "Jerarquía de clases Txcore "
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr ""
+"Aparte de especificar los ámbitos de las transacciones y de configurar los bloqueos apropiados dentro de los objetos, el programador de aplicaciones no tiene ninguna otra responsabilidad: <classname>TxCore</classname> y <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) garantizan que los objetos transaccionales sean registrados y dirigidos por la transacciones apropiadas y que los mecanismos de recuperación de fallos se invoquen de manera automática en el evento de una falla."
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr "Guardar el estado de objetos"
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+"<classname>TxCore</classname> necesita poder recordar el estado de un objeto debido a varios propósitos, incluyendo la recuperación (el estado representa algun estado pasado del objeto) y la persistencia (el estado representa el estado final "
+"de un objeto al terminar la aplicación). Ya que estos requerimientos tiene funcionalidades comúnes todas se implementan utilizando el mismo mecanismo: las clases <classname>InputObjectState</classname> y "
+"<classname>OutputObjectState</classname>. Las clases mantienen una lista interna en las cuales las instancias de los tipos estándares se pueden empacar contiguamente "
+"(desempacadas) utilizando operaciones <command>pack</command> (<command>unpack</"
+"command>) de manera apropiada. Este buffer se modifica de tamaño automáticamente tal como se necesite en caso de que no tenga suficiente espacio. Las instancias se almacenan en el buffer en una forma estándar (también llamada network byte order) para hacerlas independientes de la máquina. Cualquier otro formato independiente de la arquitectura (tal como XDR "
+"o ASN.1) se puede implementar con simplemente reemplazar las operaciones con las que sean apropiadas para la codificación requerida."
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr "El almacenamiento de objetos"
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr "Las implementaciones de persistencia pueden ser afectadas por restricciones impuestas por el Java SecurityManager. Por lo tanto, el almacenamiento de objetos que viene junto con <classname>TxCore</classname> se implementa utilizando técnicas de interfaz/implementación. La distribución actual tiene implementaciones las cuales escriben estados de objetos en el sistema de archivos locales o en la base de datos y las implementaciones remotas, en donde la interfaz utiliza un stub cliente (proxy) para servicios remotos. "
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr "A los objetos persistentes se les asignan identificadores únicos (instancias de la clase Uid) cuando se crean y esto se utiliza para identificarlos dentro del almacenamiento de objetos. Los estados se leen utilizando la operación <literal>read_committed</literal> y las operaciones <literal>write_(un)committed</literal> las escriben. "
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr "Recuperación y persistencia "
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+"En la raíz de la jerarquía de las clases se encuentra la clase <classname>StateManager</"
+"classname>. Esta clase es la responsable de la activación y desactivación de objetos y la recuperación de objetos. La firma simplificada de la clase es: "
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr "Se asume que los objetos pueden ser de tres sabores. Pueden ser simplemente recuperables, en cuyo caso <classname>StateManager</classname> tratará de generar y mantener información de recuperación apropiada para el objeto. Dichos objetos tienen tiempos de vida que no exceden el programa de la aplicación que los crea. Los objetos pueden ser recuperables y persistentes, en cuyo caso se asume que el tiempo de vida del objeto es mayor que el de crear o acceder a una aplicación de manera que además de mantener información de recuperación <classname>StateManager</classname> tratará de cargar automáticamente (descargar) cualquier estado persistente existente para el objeto llamando la operación de activación (desactivación) en el momento apropiado. Finalmente, puede que los objetos no posean ninguna de estas capacidades, en cuyo caso no se mantiene ninguna información de recuperación y tampoco se intenta activar/desactivar objetos."
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Si un objeto es recuperable o recuperable y persistente entonces el "
+"<classname>StateManager</classname> invocará las operaciones "
+"<command>save_state</command> (al realizar <command>deactivate</"
+"command>), y <command>restore_state</command> (al realizar activate) "
+"en varios puntos durante la ejecución de la aplicación. Estas operaciones las debe implementar el programador ya que el <classname>StateManager</"
+"classname> no puede detectar cambios de estado a nivel de usuario, (estamos examinando la generación "
+"automática de las operaciones predeterminadas <command>save_state</command> y "
+"<command>restore_state</command> permitiéndole al programador sobreescribir esto cuando el conocimiento especifico de la aplicación se puede utilizar para mejorar la eficiencia). Esto le da la habilidad al programador de decidir que partes del estado de un objecto se deben hacer persistentes. Por ejemplo, para una hoja de cálculo puede que no sea necesario el guardar todas las entradas si algunos valores simplemente se pueden volver a calcular. La implementación <command>save_state</command> para una clase "
+"<classname>Example</classname> que tiene variables de miembros enteros llamadas A, B "
+"y C podrían ser simplemente:"
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr ""
+"Se asume que los objetos pueden tener tres sabores posibles. Pueden ser simplemente <emphasis>recoverable</emphasis>, en cuyo caso <classname>StateManager</"
+"classname> tratará de generar y mantener información de recuperación apropiada para el objeto. Tales objetos tienen tiempos de vida que no excenden el programa de la aplicación que los creó. Los objetos también pueden ser <emphasis>recuperables y persistentes</emphasis>, en cuyo caso se asume que el tiempo de vida del objeto es mayor que el de la aplicación creadora o de la aplicación accediendo de manera que además de mantener la información de recuperación <classname>StateManager</classname> intentará cargar de manera automática (descargar) cualquier estado persitente existente para el objeto llamando la operación <classname>activate</classname> (<classname>deactivate</"
+"classname>) en momentos apropiados. Finalmente, puede que los objetos no posean ninguna de estas habilidades, en cuyo caso nunca se mantiene información de recuperación y tampoco se intenta la activación/desactivación de manera automática. "
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Si un objeto es <emphasis>recuperable</emphasis> o <emphasis>recuperable "
+"y persistente</emphasis> entonces el <classname>StateManager</classname> invocará las operaciones <command>save_state</command> (al realizar "
+"<command>deactivate</command>) y <command>restore_state</command> (al realizar <command>activate</command>) en varios puntos durante la ejecución de la aplicación. Estas operaciones deben ser implementadas por el programador ya que el <classname>StateManager</classname> no puede detectar cambios en el estado a nivel de usuario, (estamos examinando la generación automática de las operaciones "
+"<classname>save_state</classname> y <classname>restore_state</classname>, permitiéndole al programador sobreescribir esto cuando el conocimiento especifico de la applicación se puede utilizar para mejorar la eficiencia). Esto le da la habilidad al programador de decidir las partes del estado de un objeto que se deben hacer persistentes. Por ejemplo, puede que para una hoja de cálculo no sea necesario el guardar todas las entradas si algunos valores se pueden volver a calcular. La implementación "
+"<classname>save_state</classname> para una clase "
+"<classname>Example</classname> que tiene variables con números enteros llamadas A, B y C pueden ser simplemente:"
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+"Es necesario para todos los métodos <command>save_state</command> y "
+"<command>restore_state</command> el llamar a <classname>super.save_state "
+"</classname> y a <classname>super.restore_state</classname>. Esto es para atender las mejoras en los mecanismos de recuperación de fallos."
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr "El ciclo de vida de un objeto transaccional para Java"
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+"Se asume que un objeto persistente no en uso se debe mantener en un estado <emphasis>pasivo</"
+"emphasis> con su estado residiendo en un almacenamiento de objetos y <emphasis>activado</emphasis> en demanda. El ciclo de vida fundamental de un objeto persistente en <emphasis>TXOJ</emphasis> se puede ver en <xref linkend="
+"\"figure_2\"/>."
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr "El ciclo de vida de un objeto persistente. "
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr "El objeto es inicialmente pasivo y es almacenado en el almacenamiento de objetos como una instancia de la clase <classname>OutputObjectState</classname>."
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr ""
+"Cuando la aplicación lo requiere el objeto es activado automáticamente al leerlo desde el almacenamiento utilizando una operación <command>read_committed</command> y luego es convertido de una instancia <classname>InputObjectState</"
+"classname> a un objeto completamente desarrollado por la operación "
+"<command>restore_state</command> del objeto."
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr "Cuando la aplicación ha terminado con el objeto, este es desactivado convirtiéndolo en una instancia <classname>OutputObjectState</classname> usando la operación <command>save_state</command> y luego se restaura de regreso al almacenamiento de objetos como una copia sombra utilizando write_uncommitted. Esta copia sombra se puede guardar, sobreescribiendo la versión previa utilizando la operación <command>commit_state</command>. Normalmente el sistema de transacciones oculta la existencia de copias sombras del programador. La desactivación del objeto normalmente sólamente ocurre cuando la transacción a nivel superior dentro de la cual el objeto fue activado realiza la operación de guardar."
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr "Durante su tiempo de vida, un objeto persistente se puede hacer activo y luego pasivo muchas veces."
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr "El controlador de concurrencia"
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr "El controlador de concurrencia es implementado por la clase <classname>LockManager</classname>, la cual proporciona un comportamiento predeterminado sensible que al mismo tiempo le permite al programador sobreescribir si la semántica particular de la clase que se está programando lo considera necesario. Así como con el <classname>StateManager</classname> y la persistencia, las implementaciones del control de concurrencia se acceden por medio de interfaces. Así como proporciona acceso a servicios remotos, las implementaciones actuales de control de concurrencia que se encuentran disponibles para las interfaces incluyen: "
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr "la implementación local disk/database, en donde se hacen persistentes los bloqueos al ser escrito en el sistema de archivos local o en la base de datos."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr "una implementación puramente local, en donde los bloqueos se mantienen dentro de la memoria de la máquina virtual que los creó; esta implementación tiene un mejor rendimiento que el escribir bloques en el disco local, pero los objetos no se pueden compartir entre máquinas virtuales. Un punto importante a notar es que es un objeto Java básico sin requerimientos lo cual puede ser afectado por el SecurityManager"
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr "La interfaz primaria del programador hacia el controlador de concurrencia es por medio de la operación setlock. Por defecto, el sistema en tiempo de ejecución refuerza el bloqueo estricto de dos fases siguiendo una política de múltiples lectores, un sólo escritor objeto por objeto. Sin embargo, como se puede ver en la <xref linkend=\"figure_1\"/>, al heredar de la clase <classname>Lock</classname> es posible para los proveedores el brindar sus propias implementaciones de bloqueo con diferentes reglas de conflicto de bloqueos para habilitar el <firstterm>control de concurrencia especifico del tipo</firstterm>."
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "La adquisición de bloqueos está bajo el control del programdor (por necesidad) ya que el <classname>StateManager</classname> no puede determinar si una operación modifica un objeto , <classname>LockManager</classname> no puede determinar si una operación requiere un bloqueo de escritura o de lectura. Sin embargo, la liberación del bloqueo se encuentra bajo el control del sistema y no requiere más intervención por parte del programador. Esto asegura que la propiedad de dos fases se pueda mantener de manera correcta. "
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+"La clase <classname>LockManager</classname> es la principal responsable de administrar peticiones para establecer un bloqueo en un objeto o liberar el bloqueo cuando sea apropiado. Sin embargo, debido a que se deriva del <classname>StateManager</"
+"classname>, también puede controlar cuando algunas de las funcionalidades heredadas se invocan. Por ejemplo, <classname>LockManager</classname> asume que el establecer un bloqueo de escritura implica que la operación de invocación debe estar a punto de modificar el objeto. Esto al mismo tiempo debe hacer que la información de recuperación se guarde si el objeto es recuperable. De manera similar, la adquisición exitosa de bloqueos causa que se invoque activate."
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid "The code below shows how we may try to obtain a write lock on an object:"
+msgstr "El código a continuación muestra la manera en que podemos tratar de obtener un bloqueo de escritura en un objeto: "
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr "La máquina de protocolo de transacciones"
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr "La máquina del protocolo de transacciones está representada por la clase <classname>AtomicAction</classname>, la cual utiliza <classname>StateManager</classname> con el fin de registrar suficiente información para mecanismos de recuperación de fallos para completar la transacción en el evento de fallos. Tiene métodos para iniciar y terminar la transacción y para aquellas situaciones en donde los programadores requieren el implementar sus propios recursos, métodos para registrarlos con la transacción actual. Ya que <emphasis>TxCore</emphasis> soporta subtransacciones, si una transacción se incia dentro del ámbito de una transacción que ya se encuentra ejecutando entonces será anidada de manera automática. "
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr "<emphasis>TxCore</emphasis> es conciente de multi-hilos, lo cual le permite a cada hilo dentro de una aplicación el compartir una transacción o ejecutar dentro de su propia transacción. Por lo tanto, todas las clases <emphasis>TxCore</emphasis> también tienen seguridad de hilos."
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr "Ejemplo"
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr "El ejemplo simple que mostramos a continuación ilustra la relación entre activación, terminación y el guardar los cambios: "
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr "La ejecución del código anterior implica la siguiente secuencia de actividades: "
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr ""
+"Creación de vinculaciones a objetos persistentes; esto puede implicar la creación de objetos stub y una llamada a objetos remotos. En el ejemplo anterior, volvemos a vincular a un objeto persistente ya existente identificado por <literal>Name-A</"
+"literal> y un nuevo objeto persistente. Un sistema de nombres para objetos remotos mantiene el mapeo entre nombres de objetos y ubicaciones y se describe en un capítulo posterior. "
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr "Inicio de la transacción atómica."
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr "Invocaciones de operaciones: como parte de una invocación dada la implementación del objeto es la responsable de asegurarse que está bloqueada en modo de escritura o de lectura (asumiendo que no hay conflicto de bloqueos) y se inicializa, si es necesario, con el último estado que se ha guardado en el almacenamiento de objetos. La primera vez que se adquiere un bloqueo en un objeto dentro de una transacción el estado del objeto se adquiere del almacenamiento de objetos, si es posible."
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr "Guardar los cambios de la acción a nivel superior. Esto incluye el actualizar el estado de cualquiera de los objetos modificados en el almacenamiento de objetos. "
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr "Rompimiento de las vinculaciones creadas anteriormente. "
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr "La jerarquía de clases "
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr ""
+"Las clases principales que componen la jerarquía de clases de <emphasis>TxCore</"
+"emphasis> se ilustran a continuación."
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+"Los programadores de aplicaciones tolerantes a fallas estarán preocupados principalmente con las clases <classname>LockManager</classname>, <classname>Lock</classname> "
+"y <classname>AtomicAction</classname>. Otras de las clases que pueden ser importantes para un programador son <classname>Uid</classname> y <classname>ObjectState</"
+"classname>. La mayoría de las clases <emphasis>TxCore</emphasis> se derivan de la clase base <classname>StateManager</classname>, la cual proporciona funcionalidades primitivas necesarias para administrar objetos persistentes y recuperables. Estas funcionalidades incluyen soporte para la activación y des-activación de objetos, "
+"y recuperación de objetos con base en estado. La clase <classname>LockManager</"
+"classname> utiliza las funcionalidades de <classname>StateManager</classname> y "
+"<classname>Lock</classname> para proporcionar el control de concurrencia (bloqueo de dos fases en la implementación actual) requerida para implementar la propiedad de seriabilidad para acciones atómicas. La implementación de funciones de acciones atómicas está soportado por <classname>AtomicAction</classname> y "
+"<classname>TopLevelTransaction</classname>."
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr ""
+"La mayoria de las clases del sistema <emphasis>TxCore</emphasis> se derivan de la clase base <classname>StateManager</classname>, la cual proporciona funcionalidades primitivas necesarias para administrar objetos persistentes y recuperables. Estas funcionalidades incluyen el soporte para la activación y des-activación de objetos,y recuperación de objetos con base en el estado. La clase <classname>LockManager</"
+"classname> utiliza las funcionalidades de <classname>StateManager</classname> y brinda el control de concurrencia requerido para implementar la propiedad de "
+"seriabilidad de las acciones atómicas."
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+"Considere un ejemplo simple. Asuma que <classname>Example</classname> es una clase persistente definido por el usuario derivada apropiadamente del <classname>LockManager</classname>. Una aplicación que contiene una transacción atómica Trans accede un objeto (llamado O) de tipo <classname>Example</"
+"classname> invocando la operación op1 la cual involucra los cambios de estado a O. La propiedad de seriabilidad requiere que se debe adquirir un bloqueo de escritura en O antes de modificarlo; por lo tanto el cuerpo de op1 debe contener una llamada a la operación <literal>setlock</literal> del controlador de concurrencia:"
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr ""
+"La operación <literal>setlock</literal>, que la clase <classname>LockManager</classname> proporciona, realiza las siguientes funciones "
+"en este caso:"
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid "Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr "Verifique la compatibilidad de bloqueos de escritura con los bloqueos actuales y si lo permite: "
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+"Llame el activador de la operación <classname>StateManager</classname> que se cargará, si todavía no lo ha hecho, el último estado persistente de O del almacenamiento de objetos. Después llame al modificador de la operación <classname>StateManager</classname>, el cual tiene el efecto de crear una instancia de "
+"<classname>RecoveryRecord</classname> o <classname>PersistenceRecord</"
+"classname> para O dependiendo de si O era persistente o no (el bloqueo es un bloqueo <literal>WRITE</literal> (de escritura) así que el estado viejo del objeto se debe retener antes de su modificación) e insertarlo en el <classname>RecordList</classname> de <classname>Trans</classname>."
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr "Cree e inserte una instancia LockRecord en la the RecordList de transacciones."
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+"Ahora suponga que la acción <literal>Trans</literal> se aborta un poco después de que se ha adquirido el bloqueo. Entonces la operación para deshacer de <classname>AtomicAction</classname> procesará la instancia <classname>RecordList</"
+"classname> asociada con <literal>Trans</literal> invocando una operación <literal>Abort</literal> apropiada en los varios records. La "
+"implementación de esta operación por la clase <classname>LockRecord</classname> "
+"liberará el bloqueo <literal>WRITE</literal> mientras que el de <classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> restaurará el estado anterior de O."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr "Es importante darse cuenta de que todo el trabajo realizado antes lo hace de manera automática <emphasis>TxCore</emphasis> en nombre del programador de la aplicación. El programador sólo necesita iniciar la transacción y establecer un bloqueo apropiado; <emphasis>TxCore</emphasis> y los <emphasis>objetos transaccionales para Java</emphasis> se preocupan del registro de los participantes, la persistencia, el control de concurrencia y la recuperación. "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_02.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_02.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1802 @@
+# translation of Chapter_02.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_02\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 11:53+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr "Uso de TxCore"
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr ""
+"En esta sección vamos a describir <emphasis>TxCore</emphasis> y los "
+"<emphasis>objetos transaccional para Java</emphasis> en más detalle y vamos a ver cómo se puede utilizar para construir aplicaciones transaccionales."
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr "Administración de estado"
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr "Estados de objetos"
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+"<emphasis>TxCore</emphasis> necesita poder recordar el estado de un objeto por varias razones, incluyendo la recuperación (el estado representa algún estado pasado del objeto) y la persistencia (el estado representa el estado "
+"final de un objeto al terminar una aplicación). Debido a que todos estos requerimientos necesitan funcionalidades comunes, todas se implementan utilizando el mismo mecanismo - las clases <classname>Input/OutputObjectState</classname> y <classname>Input/OutputBuffer</classname>."
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr "OutputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr "InputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr ""
+"La clase <classname>Input/OutputBuffer</classname> mantiene una lista interna de las instancias en las que se pueden empacar (desempacar) contiguamente los tipos estándares Java utilizando las operaciones de empaque (desempaque). El tamaño de este buffer se modifica cuando se necesita en caso de que no tenga suficiente espacio. Todas las "
+"instancias se almacenan en el buffer en una forma estándard (también se llama network "
+"byte order) para hacerla independientes de la máquina."
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr "OutputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr "InputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr ""
+"La clase <classname>Input/OutputObjectState</classname> proporciona todas las funcionalidades de <classname>Input/OutputBuffer</classname> (por medio de herencia) pero añade dos variables de instancias adicionales que significan el Uid y el tipo del objeto para el cual la instancia <classname>Input/OutputObjectState</"
+"classname> es una imagen comprimida. Estas se utilizan al acceder el almacenamiento de objetos durante el almacenamiento y recuperación del estado del objeto."
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr "El almacenamiento de objetos"
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr "El almacenamiento de objetos que viene junto con <emphasis>TxCore</emphasis> tiene deliberadamente una interfaz más bien restringida para que se pueda implementar de varias maneras. Por ejemplo, los almacenamientos de objetos se implementan en una memoria compartida; en el sistema de archivos Unix (en varias formas diferentes); y como un almacenamiento accesible de manera remota. Puede encontrar más información completa sobre los almacenamientos de objetos en <emphasis>TxCore</emphasis> en el apéndice. "
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr "Como con todas las clases <emphasis>TxCore</emphasis> los almacenamientos de objetos predeterminados son implementaciones puras de Java; para acceder la memoria compartida y otras implementaciones de almacenamiento de objetos más complejas es necesario utilizar métodos nativos."
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+"Todos los almacenamientos de objetos mantienen y recuperan instancias de la clase "
+"<classname>Input/OutputObjectState</classname>. Estas instancias son nombradas por el Uid y el tipo del objeto que representan. Los estados se leen usando la operación <command>read_committed</command> y el sistema los escribe utilizando la operación <command>write_uncommitted</command>. Bajo operación normal los nuevos estados de objetos no sobreescriben los estados antiguos de objetos si no que los escriben como copias sombras. Estas sombras reemplazan el original sólamente cuando se invoca la operación <command>commit_state</command>. Normalmente toda interacción con el almacenamiento de objetos es realizada por los componentes del sistema <emphasis>TxCore</"
+"emphasis> en tanto sea apropiado y por lo tanto la existencia de cualquier versión sombra de los objetos en el almacenamiento se encuentra escondida del programador."
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+"Cuando un objeto transacción está guardando cambios es necesario que haga persistentes ciertos cambios de estado con el fin de que pueda recuperar en el evento de una falla o que pueda continuar guardando los cambios o que deshaga la transacción. Cuando utiliza los <emphasis>objetos transaccionales para Java</emphasis>, <emphasis>TxCore</"
+"emphasis> se ocupa de esto de manera automáticamente. Para garantizar propiedades ACID, estos cambios de estados deben ser vaciados en la implementación del almacenamiento de persistencia antes de que la transacción pueda proceder a guardar los cambios; si no se vacían, la aplicación puede asumir que la transacción ha guardado los cambios cuando en realidad los cambios del estado puede que aún se encuentren dentro de un caché del sistema en operación y es posible que se pierda en caso de una falla subsecuente de la máquina. Por defecto, <emphasis>TxCore</emphasis> se asegura de que tales cambios en el estado sean vaciados. Sin embargo, el hacer esto puede imponer una penalización importante en el rendimiento de la aplicación. Para prevenir el vaciado de estados de objetos transaccionales configure la variable <literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> como OFF. "
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr "Selección de una implementación de almacenamiento de objetos"
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+"<emphasis>TxCore</emphasis> viene con soporte para varias implementaciones diferentes de almacenamiento de objetos. El apéndice describe estas implementaciones, la manera de seleccionar y configurar una implementación dada (utilizando la variable de la propiedad <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal>) objeto por objeto e indica la manera en que se pueden proveer implementaciones adicionales."
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr ""
+"La clase <emphasis>TxCore</emphasis> <classname>StateManager</classname> "
+"administra el estado de un objeto y proporciona todos los mecanismos de soporte básicos requeridos por un objeto para propósitos de administración de estado. "
+"<classname>StateManager</classname> es el responsable de crear y registrar recursos apropiados relacionados con la persistencia y la recuperación del objeto transaccional. Si una transacción es anidada entonces <classname>StateManager</classname> también propagará estos recursos entre transacciones hijos y sus padres en el momento de guardar los cambios."
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr ""
+"Se asume que los objetos en <emphasis>TxCore</emphasis> pueden tener tres sabores posibles. Pueden ser simplemente recuperables, en cuyo caso "
+"<classname>StateManager</classname> tratará de generar y mantener información de recuperación "
+"apropiada para el objeto (como instancias de la clase "
+"<classname>Input/OutputObjectState</classname>) . Tales objetos tienen tiempos de vida que no exceden el programa de la aplicación que los crea. Los objetos pueden ser recuperables y persistentes, en cuyo caso se asume que el tiempo de vida del objeto es mayor que el de la aplicación creadora o la aplicación que está accediendo para que además de mantener la información de recuperación el <classname>StateManager</classname> tratará de cargar (descargar) de manera automática cualquier estado persistente existente para el objeto llamando la operación <command>activate</command> (<command>deactivate</command>) en el momento apropiado. Finalmente, puede que los objetos no posean ninguna de estas habilidades, en cuyo caso no se mantienen ninguna información de recuperación y tampoco se intenta la activación/"
+"desactivación del objeto de manera automática. Esta propiedad del objeto se selecciona en el momento de construcción del objeto y no se puede cambiar después. Por lo tanto un objeto no puede ganar (o perder) habilidades de recuperación en un momento arbitrario durante su tiempo de vida."
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+"Si un objeto es recuperable (o persistente) entonces <classname>StateManager</"
+"classname> invocará las operaciones <command>save_state</command> (al realizar <command>deactivation</command>), <command>restore_state</"
+"command> (al relaizar activate) y tipo en varios puntos durante la ejecución de la aplicación. Estas operaciones se deben implementar por el programador ya que el <classname>StateManager</classname> no tiene acceso a una descripción en tiempo de ejecución del diseño de un objeto Java arbitrario en la memoria y por lo tanto no puede implementar una política predeterminada para convertir la versión en memoria del objeto a su forma pasiva. Sin embargo, las capacidades que el <classname>Input/OutputObjectState</classname> proporciona hacen que la escritura de estas rutinas sea más bien simple. Por ejemplo, la implementación <command>save_state</"
+"command> para una clase <classname>Example</classname> que tenía las variables llamadas A, B y C podría ser simplemente:"
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr "Con el fin de soportar la recuperación en caso de fallos para objetos persistentes es necesario que todos los métodos <command>save_state</command> y <command>restore_state</command> llamen a <command>save_state</command> y a <command>restore_state</command>"
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr "El método type se utiliza para determinar la ubicación en el almacenamiento de objetos en donde el estado de las instancias de esa clase se guardarán y ultimadamente se resstablecerán. De hecho este puede ser cualquier cadena válida. Sin embargo, debe evitar el utilizar el caracter  (#) ya que está reservado para directorios especiales que <emphasis>TxCore</emphasis> requiere."
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr ""
+"La operación <command>get_uid</command> de <classname>StateManager</"
+"classname> proporciona acceso de sólo lectura al nombre del sistema interno de un objeto para cualquiera que sea el propósito que el programador requiera (tal como la registración del nombre "
+"en un servidor de nombres). El valor del nombre del sistema interno sólo se puede configurar cuando un objeto es inicialmente construido - ya sea por la provisión de un parámetro explícito o generando un nuevo identificador cuando se crea el objeto."
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr ""
+"El método <command>destroy</command> se puede utilizar para remover el estado de un objeto "
+"del almacenamiento de objetos. Esta es una operación atómica y por lo tanto sólo removerá el estado si la transacción a nivel superior dentro de la cual se invoca eventualmente guarda los cambios. El programador debe obtener acceso exclusivo al objeto antes de invocar esta operación."
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr "Debido a que la recuperación y la persistencia tienen esencialmente requerimientos que se complementan (la única diferencia es donde almacena la información del estado y su propósito) <classname>StateManager</classname> effectivamente combina la administración de estas dos propiedades en un sólo mecanismo. Es decir, utiliza instancias de la clase Input/OutputObjectState para propósitos de recuperación y persistencia. Un argumento adicional que se le pasa a las operaciones <command>save_state</command> y <command>restore_state</command> le permite al programador determinar el propósito para el cual cualquier invocación dada se está realizando y por lo tanto permite guardar información diferente para propósitos de recuperación y persistencia. "
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr "Modelos de objetos "
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr "<emphasis>TxCore</emphasis> soporta dos modelos para objetos, los cuales como lo vamos a mostrar afectan la manera en que se implementa el estado de un objeto y el control de concurrencia:"
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr "<termdef>SINGLE</termdef>: sólo existe una copia del objeto dentro de la aplicación; esta residirá dentro de una MVJ y todos los clientes deben dirigir sus invocaciones a este servidor. Este modelo proporciona mejor rendimiento, pero representa un sólo punto de falla y en entornos multi-hilos puede que no proteja el objetode daño si un sólo hilo falla."
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr "Modelo de objeto single"
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr "MULTIPLE: lógicamente existe una sóla instancia del objeto, pero hay copias distribuidas en diferentes MVJ; el rendimiento de este modelo es peor que el modelo SINGLE, pero proporciona mejor aislamiento de fallas."
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr "Modelo de objetos múltiples "
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr ""
+"El modelo predeterminado es SINGLE. El programador puede sobreescribir esto objeto por objeto proporcionando una instancia apropiada de la clase <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> en la construcción del objeto. "
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr "El modelo se puede cambiar entre cada instanciación sucesiva del objeto, por ejemplo, es necesario que no sea la misma durante el tiempo de vida del objeto. "
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr ""
+"Para brindar una clase <classname>ObjectName</classname> apropiada, es "
+"necesario realizar los siguientes pasos:"
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr "cree una nueva instancia de <classname>ObjectName</classname>."
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+"configure el atributo del modelo del objeto usando el nombre <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal>."
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr "Por ejemplo:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr "Resumen "
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+"En resumen, la clase <emphasis>TxCore</emphasis> <classname>StateManager</"
+"classname> administra el estado de un objeto y proporciona todos los mecanismos básicos de "
+"soporte requeridos por un objeto para propósitos de administración de estado. Algunas operaciones deben ser definidas por el desarrollador de la clase. Estas operaciones son: "
+"<command>save_state</command>, <command>restore_state</command> y "
+"<command>type</command>."
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr "boolean save_state (OutputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+"Se invoca cuando sea necesario guardar el estado de un objeto para uso futuro - principalmente para propósitos de recuperación o persistencia. El parámetro "
+"<literal>ObjectType</literal> indica la razón por la cual <emphasis>TxCore</emphasis> invocó "
+"<command>save_state</command>. Esto habilita al programador a guardar diferentes partes de la información en el <classname>OutputObjectState</classname> proporcionado como el primer parámetro "
+"dependiendo de si el estado se necesita para propósitos de recuperación o persistencia. Por ejemplo, los apuntadores a otros objetos <emphasis>TxCore</emphasis> se pueden guardar simplemente como apuntadores para propósitos de recuperación pero como Uid para propósitos de persistencia. Como se mostró anteriormente, la clase <classname>OutputObjectState</"
+"classname> proporciona operaciones convenientes para permitir el guardar las instancias de todos los tipos básicos en Java. Con el fin de soportar la recuperación de fallas para objetos persistentes es necesario que todos los métodos <command>save_state</"
+"command> llamen al <command>super.save_state</command>."
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr "<command>save_state</command> asume que un objeto es consistente internamente y que todas las variables guardadas tienen valores válidos. Es la responsabilidad del programador asegurarse de que este es el caso."
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr "boolean restore_state (InputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr "Se invoca cuando el estado de un objeto necesita reestablecerse a uno proveido. Una vez más el segundo parámetro permite diferentes interpretaciones del estado proporcionado. Con el fin de soportar la recuperación de fallos para objetos persistentes es necesario que todos los métodos <command>restore_state</command> llamen al <command>super.restore_state</command>."
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr "Tipo de cadena ()"
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+"El mecanismo de persistencia <emphasis>TxCore</emphasis> requiere una manera de determinar el tipo de un objeto como cadena de manera que pueda guardar/reestablecer el estado del objeto a/desde el almacenamiento de objetos. Por convención esta "
+"información indica la posición de la clase en la jerarquía. Por "
+"ejemplo, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr "Ejemplo"
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr "Considere la siguiente clase básica <classname>Array</classname> derivada de la clase <classname>StateManager</classname> (en este ejemplo, para ilustrar la manera de guardar y restaurar el estado de un objeto, la variable highestIndex se utiliza para rastrear el elemento más alto de la lista que tienen un valor que no es cero):"
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr ""
+"Las operaciones <command>save_state</command>, <command>restore_state</command> y "
+"<command>type</command> se pueden definir así:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr "Control de concurrencia y administración de bloqueos"
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr ""
+"La información de control de concurrencia dentro de <emphasis>TxCore</emphasis> se mantiene por medio de bloqueos. Los bloqueos que se requiere que se compartan entre objetos en diferentes procesos se pueden mantener dentro de un almacenamiento de bloqueos, similar a la función de almacenamiento de objetos presentada anteriormente. El almacenamiento de bloqueos que viene junto con "
+"<emphasis>TxCore</emphasis> de manera deliberada tiene una interfaz más bien restringida para que se pueda implementar de varias formas. Por ejemplo, los almacenamientos de bloqueos se implementan el la memoria compartida; en el sistema de archivos Unix (en varias formas diferentes); y como un almacenamiento accesible de manera remota. En el apéndice encontrará más información en relación con los almacenamientos de objetos disponibles en <emphasis>TxCore</emphasis>."
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr "Como con todas las clases <emphasis>TxCore</emphasis> los almacenamientos de bloqueos predeterminados son puras implementaciones Java; para acceder la memoria compartida y otras implementaciones de almacenamiento de bloqueos más complejos es necesario utilizar métodos nativos."
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr "Selección de una implementación de almacenamiento de bloqueos"
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+"<emphasis>TxCore</emphasis> viene con soporte para varias implementaciones de almacenamiento de objetos diferentes. Si el modelo de objeto que se utiliza es SINGLE, entonces no se requiere almacenamiento de bloqueos para mantener los bloqueos ya que la información sobre el objeto no se exporta de este. Sin embargo, si se utiliza el modelo MULTIPLE, entonces puede que diferentes entornos en tiempo de ejecución (procesos, máquinas virtuales Java)necesiten compartir información de control de concurrencia. El tipo de implementación del almacenamiento de bloqueos a utilizar se puede especificar para todos los objetos dentro de un entorno de ejecución dado utilizando la variable de la propiedad <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal>. Actualmente esto puede tener uno de los siguientes valores:"
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr "BasicLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr "Esta es una implementación en memoria, la cual no permite compartir, por defecto, información almacenada entre entornos de ejecución. El programador de la aplicación es el responsable de compartir la información almacenada."
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr "BasicPersistentLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+"Esta es la implementación predeterminada y almacena información de bloqueo dentro del sistema de archivos local. Por lo tanto, los entornos de ejecución que comparten el mismo almacenamiento de archivos puede compartir información de control de concurrencia. La raíz del sistema de archivos en la cual se escribe la información de bloqueo se escribe en el directorio <filename>LockStore</"
+"filename> dentro del directorio de instalación <emphasis>TxCore</emphasis>. Esto se puede sobreescribir en tiempo de ejecución configurando apropiadamente la variable de la propiedad <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> o poniendo la ubicación dentro de la<literal>CLASSPATH</literal>:"
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr "<para>o</para>"
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr "Si ninguno de estos enfoques se toman entonces la ubicación predeterminada será al mismo nivel que el directorio <filename>etc</filename> de la instalación. "
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr "LockManager"
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr ""
+"El controlador de concurrencia es implementado por la clase "
+"<classname>LockManager</classname>, la cual proporciona un comportamiento predeterminado sensible mientras que al mismo tiempo le permite al programador sobreescribir si se considera necesario por la semántica en particular de la clase que se está programando. La interfaz primaria del programador al controlador de concurrencia se encuentra por medio del la operación setlock. Por defecto, el sistema en tiempo de ejecución <emphasis>TxCore</emphasis> refuerza dos fases estrictas de bloqueo después de un lector múltiple, una política de escritura única objeto por objeto. La adquisición de bloqueos se encuentra bajo el control del programador ya que <classname>StateManager</classname> no puede determinar si una operación "
+"modifica un objeto, <classname>LockManager</classname> no puede determinar si una operación requiere un bloqueo de lectura o de escritura. Sin embargo el la libreación de bloqueos normalmente se encuentra bajo control del sistema y no requiere más intervención del programador. Esto asegura que la propiedad de dos fases se pueda mantener de manera correcta."
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+"La clase <classname>LockManager</classname> es la principal responsable de administrar peticiones para establecer un bloqueo en un objeto o para liberar un bloqueo apropiadamente. Sin embargo, ya que se deriva del <classname>StateManager</"
+"classname>, también puede controlar cuando algunas de las funciones heredadas se invocan. Por ejemplo, si se otorga una petición para establecer un bloqueo entonces el "
+"<classname>LockManager</classname> invoca modificado directamente asumiendo que la modificación de un bloqueo de escritura implica que la operación de invocación debe estar a punto de modificar el objeto. A su vez esto puede hacer que se guarde la información de recuperación si el objeto es recuperable. De una manera similar, la adquisición de un bloqueo exitoso hace que se invoque <command>activate</command>."
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+"Por lo tanto, <classname>LockManager</classname> es directamente el responsable de "
+"activar/desactivar los objetos persistentes y registrar "
+"<classname>Resources</classname> para administrar el control de concurrencia. Por dirigir la clase <classname>StateManager</classname>, también es la responsable de registrar <classname>Resources</classname> para la manipulación de estado persistente/recuperable y recuperación de objetos. El programador de aplicaciones "
+"simplemente establece bloqueos apropiados, inicia y para transacciones y "
+"extiende los métodos <command>save_state</command> y <command>restore_state</"
+"command> del <classname>StateManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr "La operación <command>setlock</command> debe ser parametrizada con el tipo de bloqueo requerido (<literal>READ</literal> / <literal>WRITE</literal>)y el número de reintentos para adquirir el bloqueo antes de darse por vencido. Si tiene lugar un conflicto de bloqueos, tendrá lugar uno de los siguientes escenarios:"
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+"Si el valor retry es igual al <literal>LockManager.waitTotalTimeout</"
+"literal> entonces el hilo que llamó <command>setlock</command> se bloqueará hasta que el bloqueo se libere o hasta que el tiempo de expiración especificado haya pasado, en cuyo caso se retornará <literal>REFUSED</literal>."
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr ""
+"Si el bloqueo no se puede obtener inicialmente entonces <classname>LockManager</"
+"classname> intentará con el número especificado de reintentos, en espera del valor del tiempo de expiración especificado entra cada intento fallido. Por defecto es 100 intentos, cada inetnto separado por un retraso de 0.25 segundos; el tiempo entre intentos se especifica en micro-segundos."
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr "Si tiene lugar un conflicto de bloqueos la implementación actual simplemente pone en espera las peticiones de bloqueo lo cual previene puntos muertos en vez de proporcionar un esquema de detección completo de puntos muertos. Si se obtiene el bloqueo que se ha pedido entonces la operación setlock retornará el valor <literal>GRANTED</literal>, de otra manera retorna el valor <literal>REFUSED</literal>. Es la responsabilidad del programador asegurarse de que lo que queda del código para una operación sólo sea ejecutado sólo si se otorga una petcición de bloqueo. A continuación encontrará los ejemplos del uso de la operación <command>setlock</command>. "
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr "El mecanismo de control de concurrencia está integrado en el mecanismo de acción atómica por lo cual se asegura que cuando los bloqueos se otorgan en un objeto, la información apropiada se registra con la acción atómica actualmente ejecutando para asegurarse de que los bloqueos se liberan en el momento correcto. Esto libera al programador de tener que liberar de manera explícita cualquier bloqueo adquirido si se adquirieron dentro de acciones atómicas. Sin embargo, si los bloqueos se adquieren en un objeto <emphasis>fuera</emphasis> del ámbito de una acción atómica, es la responsabilidad del programador el liberar los bloqueos cuando se necesite utilizando la operación correspondiente <command>releaselock</command>."
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr "Política de bloqueo "
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+"De manera opuesta que otros sistemas, los bloqueos en <emphasis>TxCore</emphasis> no son tipos de sistemas especiales. En su lugar son simplemente instancias de otros objetos <emphasis>TxCore</emphasis> (la clase <classname>Lock</classname>, la cual también se deriva del <classname>StateManager</classname> para que los bloqueos se puedan hacer persistentes si es necesario y también se puede nombrar de una manera simple). Además, <classname>LockManager</classname> de manera deliberada no tiene conocimiento sobre la semántica de la política actual por medio de la cual las peticiones de bloqueo se otorgan. Dicha información es mantenida por las instancias de la clase <classname>Lock</"
+"classname>, las cuales proporcionan operaciones (la operación "
+"<literal>conflictsWith</literal>) por medio de la cual <classname>LockManager</"
+"classname> puede determinar si dos bloqueos causan un conflicto o no. Esta separación es "
+"importante ya que le permite al programador derivar nuevos tipos de bloqueos de la clase <classname>Lock</classname> básica y proporcionando las definiciones de operaciones en conflicto lo cual puede dar lugar a niveles mejorados de concurrencia."
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+"La clase <classname>Lock</classname> brinda una operación <command>modifiesObject</"
+"command>, la cual <classname>LockManager</classname> utiliza para determinar si el otorgar esta petición de bloqueo requiere una llamada en modified. Esta operación se brinda para que los modos de bloqueo aparte de lectura y escritura simples se puedan soportar. La clase <classname>Lock</classname> proporcionada soporta la política tradicional de múltiples lecturas/sólo una escritura."
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr "Construcción y destrucción de objetos "
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr "Recuerde que los objetos <emphasis>TxCore</emphasis> pueden ser recuperables; recuperables y persistentes; o ninguno de los dos. Además cada objeto posee un nombre interno único. Estos atributos sólo se pueden configurar cuando se contruye ese objeto. Por lo tanto, <classname>LockManager</classname> proporciona dos constructores protegidos para uso con clases derivadas, cada una de las cuales cumple un propósito distinto:"
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr "LockManager ()"
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr "Este constructor permite la creación de nuevos objetos, es decir se asume que no existe un estado anterior. "
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr "LockManager (int ObjectType, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr ""
+"Como se mostró anteriormente, este constructor permite la creación de nuevos objetos, es decir se asume que no existe un estado anterior. El <literal>ObjectType</literal> parámetro "
+"determina si un objeto es simplemente recuperable (indicado con un "
+"<literal>RECOVERABLE</literal>); recuperable y persistente (indicado con "
+"<literal>ANDPERSISTENT</literal>) o ninguno (<literal>NEITHER</literal>). "
+"Si un objeto se marca como persistente entonces el estado del objeto se almacenará en uno de los almacenamientos de objetos. El parámetro compartido sólo tiene sentido si es <literal>RECOVERABLE</literal>; si <literal>attr</literal> no es "
+"nulo y el modelo del objeto es <literal>SINGLE</literal> (el comportamiento predeterminado) entonces el estado recuperable del objeto se mantiene dentro del objeto mismo (por ejemplo, no tiene representación externa), de otra manera se utiliza un almacenamiento de objetos en-memoria (volátil) para almacenar el estado del objeto entre acciones atómicas."
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr "Los constructores para objetos persistentes nuevos deben hacer uso de acciones atómicas dentro de ellos mismos. Esto asegura que el estado del objeto es escrito de manera automática en el almacenamiento de objetos ya sea cuando la acción en el contructor guarda los cambios o si una clase para adjuntar existe, cuando la acción a nivel superior apropiada guarda los cambios. Más adelante ilustraremos este puntos con más ejemplos. "
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr "LockManager(Uid objUid)"
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr "Este constructor permite acceso a un objeto persistente existente, cuyo nombre interno es dado por el parámetro <literal>objUid</literal>. Los objetos construidos utilizando esta operación normalmente tendrán su estado previo (identificado por <literal>objUid</literal>) cargado automáticamente de un almacenamiento de objetos por el sistema. "
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr "LockManager(Uid objUid, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr "Como lo mencionamos antes, este constructor permite acceso a un objeto persitente existente, cuyo nombre interno está dado por el parámetro <literal>objUid</literal>. Los objetos construidos utilizando esta operación normalmente tendrán su estado previo (identificado por <literal>objUid</literal>) cargado automáticamente desde un almacenamiento de objetos por el sistema. Si el parámetro attr no es nulo y el modelo del objeto es <literal>SINGLE</literal> (el comportamiento predeterminado) entonces el objeto no será reactivado al comienzo de cada transacción a nivel superior. "
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr "El destructor de una clase definida por el porgramador debe invocar la operación heredada terminate para informarle al mecanismo de administración de estado que el objeto está a punto de ser destruido de otra manera se pueden generar resultados inpredecibles. "
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""
+"Ya que <classname>LockManager</classname> hereda de "
+"<classname>StateManager</classname>, pasará cualquier instancia "
+"<classname>ObjectName</classname> proporcionada a la clase <classname>StateManager</"
+"classname>. Como tal es posible configurar el modelo del objeto <classname>StateManager</classname> como se describió anteriormente."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_03.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_03.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,708 @@
+# translation of Chapter_03.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_03\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 13:29+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr "Consideraciones sobre transacciones generales"
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr "Consideraciones sobre transacciones avanzadas con TxCore"
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr "Tanto los programadores de las aplicaciones como los desarrolladores de las clases pueden utilizar las acciones atómicas (transacciones). Por lo tanto las operaciones completas (o partes de operaciones) se pueden hacer atómicas cuando se necesite por medio de la semántica de una operación en particular. Este capítulo describirá algunos de los problemas más sutiles relacionados con el uso de transacciones en general y <emphasis>TxCore</emphasis> en particular."
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr "Verificación de transacciones "
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+"En una aplicación con multi-hilos, múltiples hilos se pueden asociar con una transacción durante su tiempo de vida, por ejemplo, los hilos comparten el contexto. Además, es posible que si un hilo termina una transacción puede que otros hilos aún se encuentren activos dentro de él. En un entorno distribuido puede ser dificil el garantizar que todos los hilos hayan terminado con una transacción esta se termina. Por defecto, <emphasis>TxCore</emphasis> emitirá una advertencia si un hilo termina una transacción cuando otros hilos aún se encuentran activos dentro de él; sin embargo, le permitirá continuar con la terminación de la transacción. Hay otras soluciones posibles para este problema, por ejemplo, bloquear el hilo que está terminando la transacción hasta que todos los otros hilos se hayan desasociado a sí mismos del contexto de la transacción. Por lo tanto, <emphasis>TxCore</emphasis> proporciona la clase <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname>, la cual permite sobreescribir la política de terminación de transacciones/hilos. Cada transacción tiene una instancia de esta clase asociada consigo y los programadores de aplicaciones pueden proporcionar sus propias implementaciones transacción por transacción."
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr "Cuando un hilo intenta terminar la transacción y aún hay hilos activos dentro de esta, el sistema invocará el método de verificación en el objeto <classname>CheckedAction</classname> de la transacción. Los parámetros para verificar el método son: "
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr "isCommit"
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr "Indica si la transacción está en proceso de guardar los cambios o de deshacerlos. "
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr "actUid"
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr "El identificador de transacciones"
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr "lista"
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr "una lista de los hilos actualmente marcados como activos dentro de esta transacción. "
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr "Cuando la verificación retorna, la terminación de la transacción continua. Obviamente el estado de la transacción en este punto puede ser diferente de cuando se realizó la verficicación, por ejemplo, puede que la transacción haya guardado los cambios posteriormente. "
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr "Estadísticas en conjunto"
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr ""
+"Por defecto, JBossTS no mantiene ningún historial sobre las transacciones. Sin embargo, al configurar variable de la propiedad <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> como YES, el servicio de transacciones mantendrá información sobre el número de transacciones creadas y sus resultados. Esta información se puede obtener durante la ejecución de una aplicación transaccional por medio de la clase <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname>:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr "Optimización para guardar los cambios del último recurso"
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr ""
+"En algunos casos es necesario listar los participantes que no están concientes de que el guardar los cambios se realiza en dos fases en una transacción de guardado en dos fases. Si sólo hay un sólo recurso entonces no es necesario guardar los cambios en dos fases. Sin embargo, ¿qué pasa si hay múltiples recursos en la transacción? En este caso, tiene lugar la optimización para guardar cambios del último recurso (LRCO del inglés Last "
+"Resource Commit optimization). Es posible que un sólo recurso que sea conciente de una fase (por ejemplo, sólo puede guardar los cambios o deshacerlos, sin un prepare) que se enliste en una transacción con recursos concientes de guardar los cambios en dos fases. El coordinador trata el recurso conciente de una fase de manera diferente en que este ejecuta la fase de preparación en todos los otros recursos primero y luego si quiere guardar la transacción entonces le pasa el control al recurso conciente de una fase. Si guarda los cambios entonces el coordinador registra la decisión para guardar los cambios y trata de guardar los cambios de los otros recursos también. "
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr ""
+"Con el fin de utilizar LRCO, su participante debe implementar la interfaz "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> y registrarse con la transacción por medio de la operación <command>BasicAction</"
+"command>.add ya que esta operación espera instancias de "
+"<classname>AbstractRecord</classname>, debe crear una instancia "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> y dar su participante como el parámetro constructor, como se muestra a continuación:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr "Transacciones anidadas"
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr "No hay construcciones especiales para anidar transacciones. Si una acción se inicia mientras que otra acción está ejecutando entonces se anida de manera automática. Esto permite una estructura modular en las aplicaciones, en donde los objetos se pueden implementar utilizando acciones atómicas dentro de sus operaciones sin que el programador de aplicaciones se tenga que preocupar de las aplicaciones que las utilizarán, por ejemplo, si las aplicaciones utilizarán o no acciones atómicas también. Por lo tanto en algunas acciones de las aplicaciones puede ser el nivel superior mientras que en otras puede se anidado. Los objetos escritos de esta manera se pueden compartir entre programadores de aplicaciones y <emphasis>TxCore</emphasis> garantizará su consistencia. "
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr "Si una acción anidada se aborta entonces se deshace todo su trabajo, aunque el bloqueo estricto de dos fases significa que cualquier bloqueo que se pudo haber obtenido se retendrá hasta que la acción a nivel superior guarde los cambios o aborte. Si una acción anidada guarda los cambios entonces el trabajo que ha realizado sólo será guardado por el sistema si la acción a nivel superior guarda los cambios, si la acción a nivel superior aborta entonces todo el trabajo se deshace. "
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr "El guardar los cambios o el abortar una acción anidada no afecta de manera automática el resultado de la acción dentro de la cual se encuentra anidado. Esta aplicación es dependiente y le permite al programador estructurar acciones atómicas para que contengan fallas, trabajos deschechos, etc. "
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr "Guardar los cambios de una transacción de manera asincrónica"
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr "Por defecto, JBossTS ejecuta el protocolo para guardar cambios de una transacción a nivel superior de una manera asincrónica, por ejemplo, se le dirá a todos los recursos registrados que se preparen en orden de un sólo hilo y luego se les dirá que guarden los cambios o que los deshagan. Esto tiene vasrias desventajas posibles: "
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr "En el caso de que haya muchos recursos registrados, el prepare se puede invocar lógicamente en paralelo en cada recurso. La desventaja es que si un recurso 'temprano' en la lista de recursos registrados fuerza el deshacer los cambios durante la fase prepare, posiblemente muchas operaciones prepare se habrán hecho de manera innecesaria. "
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr "En el casi en donde la aplicación no requiere un reporte huerístico, la segunda fase del protocolo para guardar los cambios se puede hacer de manera asincrónica ya que no tiene mayor importancia si tiene éxito o no. "
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+"Por lo tanto, <emphasis>JBossTS</emphasis> proporciona las opciones en tiempo de ejecución para habilitar posibles optimizaciones de hilos. Al configurar la variable de entorno <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> como "
+"<literal>YES</literal>, durante la fase prepare se creará un hilo separado para cada participante registrado dentro de la transacción. Al configurar "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> como "
+"<literal>YES</literal>, se creará un hilo separado para completar la segunda fase de la transacción si no se requiere el conocimiento sobre resultados heurísticos. "
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr "Transacciones independientes a nivel superior"
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr ""
+"Además de las acciones atómicas anidadas y normales a nivel superior <emphasis>TxCore</"
+"emphasis> también soporta acciones independientes a nivel superior, las cuales se pueden utilizar para relajar la seriabilidad estricta de una manera controlada. Una acción independiente a nivel superior se puede ejecutar desde cualquier lugar dentro de otra acción atómica y se comporta exactamente igual que una acción normal a nivel superior, es decir, sus resultados se hacen permanentes cuando guarda los cambios y no se deshacen si cualquiera de las acciones dentro de la cual se anidó originalmente aborta."
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr "Acción independiente a nivel superior "
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr "muestra un anidado típico de acciones atómicas, en donde la acción B se anida dentro de la acción A. Aunque la acción atómica C está anidada lógicamente dentro de la acción B (su operación Begin se invocó mientras que B estaba activo) debido a que es una acción independiente a nivel superior, guardará los cambios o abortará de manera independiente de las otras acciones dentro de la estructura. Gracias a la naturaleza de las acciones independientes a nivel superior estas se deben utilizar con mucho cuidado y sólo en situaciones en donde su uso se ha examinado de manera cuidadosa. "
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr "Las acciones a nivel superior se pueden utilizar dentro de una aplicación declarando y utilizando instancias de la clase <classname>TopLevelTransaction</classname>. Estas se utilizan exactamente de la misma manera que las otras transacciones. "
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr "Transacciones dentro de save_state y restore_state"
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+"Debe tener mucho cuidado al escribir las operaciones <command>save_state</command> y "
+"<command>restore_state</command> para asegurarse de no iniciar ninguna acción atómica (ya sea explícitamente en la operación o implícitamente por medio del uso de alguna otra operación). Esta restricción surge ya que puede que "
+"<emphasis>TxCore</emphasis> invoque <command>restore_state</command> como parte de su proceso de guardar cambios lo que resulta en un intento de ejecutar una acción atómica durante la fase para guardar cambios o de abortar de otra acción. Esto puede llegar a violar las propiedades de atomicidad de la acción que se está guardando (o abortando) y por lo tanto no se aconseja que la utilice."
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr "Ejemplo"
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr "Si consideramos el ejemplo de la lista que vimos antes, las operaciones set y get se pueden implementar como se muestra a continuación."
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr "Este es una simplificación del código que ignora errores y excepciones. "
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr "Objetos de recopilación de basura"
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr "Los objetos Java se borran cuando el recolector de basura determina que ya no se necesitan. El borrar un objeto se encuentra actualmente bajo el control de una transacción se debe realizar con mucho cuidado ya que si el objeto está siendo manipulado dentro de una transacción, su destino está determinado por la transacción. Por lo tanto, sin importar las referencias a un objeto transaccional mantenido por una aplicación, <emphasis>TxCore</emphasis> siempre retendrá sus propias referencias para asegurarse de que el objeto no sea recogido por la basura si no hasta que se haya terminado cualquier transacción. "
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr "Expiración de transacciones "
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr "Por defecto las transacciones viven hasta que la aplicación que las creó las termina o hasta que ocurra una falla. Sin embargo, es posible configurar un tiempo de expiración (en segundos) transacción por transacción de tal manera que si la transacción no ha terminado antes de que el tiempo de expiración se cumpla entonces se desharán la transacción automáticamente. "
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr ""
+"En <emphasis>TxCore</emphasis>, el valor del tiempo de expiración se proporciona como un parámetro "
+"para el constructor <classname>AtomicAction</classname>. Si se proporciona un valor de "
+"<literal>AtomicAction.NO_TIMEOUT</literal> (el predeterminado) entonces la transacción no expirará de manera automática. Cualquier otro valor positivo se asume para el tiempo de expiración de la transacción (en segundos). Un valor de cero se toma como un tiempo de expiración global predeterminado, el cual lo puede proveer la propidad <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. A menos de que se cambie el valor predeterminado es 60 segundos."
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+"Cuando se crea una transacción a nivel superior con un tiempo de expiración diferente a cero, está sujeto a ser deshecho si no se ha completado dentro del número de segundos especificado. <emphasis>JBossTS</emphasis> utiliza un reaper thread separado, el cual monitorea todas las transacciones creadas localmente y las fuerza a deshacerlas si sus tiempos de expiración se acaban. Para prevenir que este hilo consuma el tiempo de la aplicación, sólo ejecuta periódicamente. El tiempo predeterminado de verificación es 120000 millisegundos, pero se puede sobreescribir configurando la variable de la propiedad <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> con otro valor válido, en microsegundos. De manera alterna, si el <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> se configura como "
+"<literal>DYNAMIC</literal>, entonces el transaction reaper se despertará cuando una transacción expire. Esto tiene la ventaja de terminar transacción de manera temprana pero puede que tenga que reprogramar el reaper thread continuamente. "
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""
+"Si se especifica un valor de 0 para el tiempo de expiración de una transacción a nivel superior ( o no se especifica un tiempo de expiración) entonces <emphasis>JBossTS</emphasis> no impondrá ningún tiempo de expiración en la transacción, por ejemplo, se le permitirá que ejecute indefinidamente. El tiempo de expiración predeterminado se puede sobreescribir configurando la variable de la propiedad <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> al utilizar <emphasis>ArjunaCore</emphasis> o <emphasis>ArjunaJTS</"
+"emphasis>, o <literal>com.arjuna.ats.jts.defaultTimeout</literal> si usa"
+"<emphasis>ArjunaJTS</emphasis>"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_04.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_04.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,339 @@
+# translation of Chapter_04.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_04\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 14:31+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr "Consejos"
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr "General"
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr "Uso de transacciones en constructores "
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr "Los ejemplos incluidos en este manual utilizan transacciones en la implementación de constructores para nuevos objetos persistentes. Esto se hizo deliberadamente ya que garantiza la propagación correcta del estado del objeto para el almacenamiento de objetos. Recuerde que el estado de un objeto persistente modificado sólo se escribe en el almacenamiento de objetos cuando la transacción a nivel superior guarda los cambios. Por lo tanto si la transacción constructora se encuentra a nivel superior y guarda los cambios entonces el objeto recién creado se escribe en el almacenamiento y se hace disponible de manera inmediata. Sin embargo, si la transacción constructora guarda los cambios pero es anidada ya que alguna otra transacción empezó antes de ejecutar la creación del objeto entonces el estado sólo se escribirá si todas las transacciones padre guardan los cambios. "
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr "Por otro lado, si el constructor no utiliza transacciones entonces es posible que surjan inconsistencias en el sistema. Por ejemplo, si no hay transacción activa cuando el objeto se crea entonces su estado no se guardará en el almacenamiento hasta la próxima vez que el objeto sea modificado bajo el control de alguna transacción. "
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr "Considere este ejemplo simple:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+"Aquí los dos objetos se crean fuera del control de la acción superior A. <literal>obj1</literal> es un nuevo objeto; <literal>obj2</literal> es un objeto viejo ya existente. Cuando la operación remember de <literal>obj2</"
+"literal> se invoca el objeto se activará y el Uid de "
+"<literal>obj1</literal> se recordará. Ya que esta acción guarda los cambios del estado persistente de <literal>obj2</literal> ahora contiene el Uid de <literal>obj1</"
+"literal>. Sin embargo, el estado de <literal>obj1</literal> no ha sido guardado ya que no ha sido manipulado bajo el control de cualquier acción. De hecho, a menos de que se modifique bajo el control de alguna acción después en la aplicación nunca se guardará. Sin embargo, si el constructor había utilizado una acción atómica el estado de <literal>obj1</literal> se habría guardado de manera automática cuando fue construido y esta inconsistencia no podía haber surgido."
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr "Un poco más sobre save_state y restore_state"
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr ""
+"<emphasis>TxCore</emphasis> puede invocar la operación definida por el usuario <command>save_state</"
+"command> de un objeto efectivamente en cualquier momento durante el tiempo de vida de un objeto incluyendo durante la ejecución del cuerpo del constructor del objeto (particularmente si utiliza acciones atómicas). Por lo tanto es importante que todas las variables que se guarden con save_state se incialicen de manera correcta."
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+"Debe tener también mucho cuidado al escribir las operaciones <command>save_state</"
+"command> y <command>restore_state</command> y asegurarse de que no se han iniciado transacciones (ya sea de manera explícita en la operación o implicitamente por medio del uso de alguna otra operación). Esta restricción surge debido al hecho de que <emphasis>TxCore</emphasis> puede invocar <command>restore_state</"
+"command> como parte de su proceso de guardar los cambios lo que hace que se intente ejecutar una transacción atómica durante la fase de guardar los cambios o de abortar de otra transacción. Esto puede llegar a violar las propiedades de atomicidad de la transacción que se está guardando (o abortando) y por lo tanto no la sugerimos."
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"Con el fin de soportar la recuperación de fallos para objetos persistentes es necesario para todos los métodos <literal>save_state</literal> y <literal>restore_state</literal> de objetos de usuario llamar a <command>super.save_state</command> y a "
+"<command>super.restore_state</command>."
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr "Empacar objetos "
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr ""
+"Todos los tipos básicos de Java (int, long, etc) se pueden guardar y reestablecer desde una instancia <classname>Input/OutputObjectState</classname> usando las rutinas "
+"pack (y unpack) que <classname>Input/OutputObjectState</"
+"classname> proporciona. Sin embargo el empacar y desempacar objetos se debe manejar de manera diferente. Esto se debe a que el empaque de objetos trae consigo los problemas adicionales de los alias. Esto se refiere a cuando las referencias de dos objetos diferentes de hecho apuntan al mismo objeto, por ejemplo: "
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr ""
+"Aquí, tanto s1 como s2 apuntan a la misma cadena y una implementación inocente de "
+"<command>save_state</command> podría terminar en copiar la cadena dos veces. Desde una perspectiva <command>save_state</command> esto simplemente es ineficiente. "
+"Sin embargo, esto hace que <command>restore_state</command> sea incorrecto ya que desempacaría las dos cadenas en áreas diferentes de la memoria lo que destruiría la información original sobre los alias. La versión actual de TxCore empacará y desempacará referencias de objetos separados."
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr "Uso directo de StateManager"
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr ""
+"Los ejemplos en este manual siempre han derivado las clases de usuario de "
+"<classname>LockManager</classname>. La razón para esto es doble. Primero, y la razón más importante, las restricciones de seriabilidad de acciones atómicas que la requieren y segundo reduce la necesidad de intervención del programador. Sin embargo, si sólo se requiere acceso a los mecanismos de recuperación y de persistencia de <emphasis>TxCore</emphasis> entonces es posible la derivación directa de la clase de un usuario de <classname>StateManager</classname>."
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr ""
+"Las clases derivadas directamente de <classname>StateManager</classname> deben hacer uso de sus mecanismos de administración de estado de manera explícita (estas interacciones normalmente las toma el <classname>LockManager</classname>). Desde el punto de vista de un programador llega hasta hacer uso apropiado de las the "
+"operaciones activate, deactivate y modified, ya que los constructores del <classname>StateManager</"
+"classname> son efectivamente idénticos a aquellos del "
+"<classname>LockManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr ""
+"<command>Activate</command> carga un objeto desde el almacenamiento de objetos. El UID del objeto ya debe estar configurado por medio del constructor y el objeto debe existir en el almacenamiento. Si el objeto se lee de manera exitosa entonces se llama a <command>restore_state</command> para construir el objeto en memoria. "
+"<command>Activate</command> es id impotente así que una vez un objeto haya sido activado se ignoran las llamadas siguientes. El parámetro representa el nombre raíz del almacenamiento de objetos para buscar el objeto. Un valor de nulo significa utilizar el lamacenamiento predeterminado."
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr "Los inverso de activate. Primero llama a <command>save_state</command> para construir la imagen compacta del objeto, el cual luego se guarda en el almacenamiento de objetos. Los objetos sólo se guardan si han sido modificado desde que fueron activados. El parámetro representa el nombre raíz del almacenamiento de objetos en el cual se debe guardar el objeto. Un valor de nulo significa que utiliza el almacenamiento predeterminado."
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr "void modified ()"
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr "<emphasis>Tiene</emphasis> que llamarlo antes de modificar el objeto en memoria. Si no lo llama deactivate no guardará el objeto en el almacenamiento de objetos."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_05.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_05.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,954 @@
+# translation of Chapter_05.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_05\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 15:15+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr "Herramientas"
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr "Este capítulo explica cómo iniciar y utilizar el marco de trabajo de las herramientas y las herramientas que están disponibles. "
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr "Inicio de las herramientas del servicio de transacciones "
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr "La manera de iniciar las herramientas del servicio de transacciones es diferente dependiendo del sistema operativo que utilice: "
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr "Windows"
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr "Haga doble click en el enlace ‘Start Tools’ en el grupo del programa JBoss Transaction Service en el menú de inicio. "
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr "Unix "
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr "Inicie una shell bash y escriba: "
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr "Una vez que haya hecho esto aparecerá la ventana de herramientas. Este es el área de lanzamientos para todas las herramientas que se envían junto con el <emphasis>Servicio JBoss Transaction</emphasis>. En la parte superior de la ventana observará una barra de menú. Este menú tiene cuatro cosas: "
+
+#. Tag: title
+#: Chapter_05.xml:39
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr "El menú <menuchoice><guimenu>File</guimenu></menuchoice> "
+
+#. Tag: term
+#: Chapter_05.xml:44
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr "Open JMX Browser"
+
+#. Tag: para
+#: Chapter_05.xml:45
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr "Esto presenta la ventana del navegador JMX (consulte ***Using the JMX Browser para obtener mayor información sobre cómo utilizar el navegador JMX)."
+
+#. Tag: term
+#: Chapter_05.xml:49
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr "Open Object Store Browser"
+
+#. Tag: para
+#: Chapter_05.xml:50
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr ""
+"Esto presenta la ventana del navegador del almacenamiento de objetos JBossTS (consulte ***Using the "
+"Object Store Browser para obtener mayor información sobre cómo utilizar el navegador del almacenamiento de objetos). "
+
+#. Tag: term
+#: Chapter_05.xml:54
+#, no-c-format
+msgid "Settings"
+msgstr "Settings"
+
+#. Tag: para
+#: Chapter_05.xml:55
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr "Esta opción abre el diálogo de configuración que le permite modificar las diferentes herramientas disponibles. "
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Exit"
+msgstr "Exit"
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr "Esto cierra la ventana de herramientas y sale de la aplicación, cualquiera de los cambios que no se hayan guardado o que no se hayan confirmado se perderán. "
+
+#. Tag: title
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr "El menú <menuchoice><guimenu>Performance</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Open"
+msgstr "Open"
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr ""
+"Esto abre una ventana que examina el rendimiento – consulte la <xref linkend=\"Performance_Tool\"/> "
+"para obtener mayor información sobre la herramienta de rendimiento."
+
+#. Tag: term
+#: Chapter_05.xml:77
+#, no-c-format
+msgid "Close All"
+msgstr "Close All"
+
+#. Tag: para
+#: Chapter_05.xml:78
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+"Esto cierra todas las ventanas de rendimiento que se encuentran abiertas actualmente - consulte la <xref "
+"linkend=\"Performance_Tool\"/> para obtener mayor información sobre la herramienta que examina el rendimiento. "
+
+#. Tag: title
+#: Chapter_05.xml:87
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr "El menú <menuchoice><guimenu>Window</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:90
+#, no-c-format
+msgid "Cascade Windows"
+msgstr "Cascade Windows"
+
+#. Tag: para
+#: Chapter_05.xml:91
+#, no-c-format
+msgid "This arranges the windows in a diagonal line to you find a specific window."
+msgstr "Esto pone las ventanas en una línea diagonal para poder encontrar una ventana en específico. "
+
+#. Tag: term
+#: Chapter_05.xml:95
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr "1. XXXXXXX"
+
+#. Tag: para
+#: Chapter_05.xml:96
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr "Para cada ventana visible actualmente hay disponible una opción extra en el menú. El seleccionar esta opción del menú pone la ventana asociada en el primer plano. "
+
+#. Tag: title
+#: Chapter_05.xml:104
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr "El menú <menuchoice><guimenu>Help</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "About"
+msgstr "About"
+
+#. Tag: para
+#: Chapter_05.xml:108
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr "Esto muestra la ventana que contiene información sobre el producto. "
+
+#. Tag: title
+#: Chapter_05.xml:119
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr "Uso de la herramienta de rendimiento"
+
+#. Tag: para
+#: Chapter_05.xml:121
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr "La herramienta de rendimiento se puede utilizar para presentar la información sobre el rendimiento del servicio de transacciones. Esta información se recoge utilizando el bean JMX de rendimiento, lo cual significa que el servicio de transacción necesita ser integrado en un servidor de aplicaciones para poder brindar cualquier información sobre rendimiento. "
+
+#. Tag: para
+#: Chapter_05.xml:123
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+"La información de rendimiento se presenta a través de una gráfica multi-series. Para ver esta gráfica simplemente abra una ventana de rendimiento seleccionando "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+
+#. Tag: para
+#: Chapter_05.xml:125
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr "La ventana que ahora puede ver contiene una gráfica multi-series que presenta la siguiente información:"
+
+#. Tag: para
+#: Chapter_05.xml:130
+#, no-c-format
+msgid "Number of transactions."
+msgstr "Número de transacciones."
+
+#. Tag: para
+#: Chapter_05.xml:135
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr "Número de transacciones que se han guardado."
+
+#. Tag: para
+#: Chapter_05.xml:140
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr "Número de transacciones abortadas."
+
+#. Tag: para
+#: Chapter_05.xml:145
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr "Número de transacciones anidadas."
+
+#. Tag: para
+#: Chapter_05.xml:150
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr "Número de heurísticos planteados. "
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr "Para prender o apagar esta serie simplemente seleccione la opción del menú del menú series. "
+
+#. Tag: para
+#: Chapter_05.xml:158
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr "Cuando las series se prenden aparecen en una leyenda al final de la gráfica. El color al lado del nombre de la serie (por ejemplo, transacciones creadas) es el color de la línea que representa esos datos. "
+
+#. Tag: para
+#: Chapter_05.xml:161
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr "Los datos se grafican frente al tiempo. El eje 'y' representa el número de transacciones y el eje 'x' representa el tiempo. "
+
+#. Tag: para
+#: Chapter_05.xml:164
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr "En cualquier momento se puede detener la muestra de datos y se puede reiniciar utilizando el menú <menuchoice><guimenu>Sampling</guimenu></menuchoice> y los datos actualmente visibles en la gráfica se pueden guardar en un archivo CSV (del inglés Comma Separate Values) para importar los datos en una aplicación de hoja de cálculo utilizando la opción del menú <menuchoice><guimenu>Save to .csv</guimenu></menuchoice> del menú <menuchoice><guimenu>Data</guimenu></menuchoice>. "
+
+#. Tag: title
+#: Chapter_05.xml:169
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr "Uso del navegador JMX"
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+"Para abrir la ventana del navegador JMX haga click en el menú <menuchoice><guimenu>File</"
+"guimenu></menuchoice> y luego haga click en la opción <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice>. La ventana del navegador JMX se abrirá. "
+
+#. Tag: para
+#: Chapter_05.xml:173
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr "La ventana tiene dos secciones principales: el panel de detalles y el panel MBean. El panel MBean presenta los MBeans expuestos por el servidor MBean. Estos están agrupados por nombre de dominio. El panel de detalles presenta información sobre el MBean actualmente seleccionado. Para seleccionar un MBean simplemente haga click en el botón izquierdo del ratón y se seleccionará. La información que se presenta en el panel de detalles es la siguiente: "
+
+#. Tag: para
+#: Chapter_05.xml:178
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr "El número total de MBeans registrados en este servidor. "
+
+#. Tag: para
+#: Chapter_05.xml:183
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr "El número de constructores expuestos por este MBean. "
+
+#. Tag: para
+#: Chapter_05.xml:188
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr "El número de atributos expuestos por este MBean. "
+
+#. Tag: para
+#: Chapter_05.xml:193
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr "El número de operaciones expuestas por este MBean. "
+
+#. Tag: para
+#: Chapter_05.xml:198
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr "El número de notificaciones expuestas por este MBean. "
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr "Una breve descripción del MBean. "
+
+#. Tag: para
+#: Chapter_05.xml:208
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr "También hay un enlace <menuchoice><guimenu>View</guimenu></menuchoice> el cual si se hace click en él presenta los atributos y operaciones expuestas por este MBean. Desde aquí puede ver los atributos leíbles, puede alterar atributos de escritura y operaciones de invocación."
+
+#. Tag: title
+#: Chapter_05.xml:212
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr "Uso de atributos y operaciones "
+
+#. Tag: para
+#: Chapter_05.xml:213
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr ""
+"Cuando se hace click en el enlace <menuchoice><guimenu>View</guimenu></menuchoice> se presenta la ventana View JMX Attributes and Operations. Desde ahí puede ver todos los atributos leíbles que el MBean seleccionado expone. También puede "
+"alterar los atributos que se pueden escribir. Si un atributo es de sólo lectura no podrá alterar el valor de un atributo. Para alterar el valor de un atributo simplemente haga doble click en el valor actual e introduzca el nuevo valor. Si el botón "
+"<guibutton>...</guibutton> se encuentra activado entonces puede hacer click en él para poder ver un método de edición más apropiado. Si el tipo del atributo es un nombre de objeto JMX entonces el hacer click en este botón presentará los atributos y operaciones JMX para ese objeto."
+
+#. Tag: para
+#: Chapter_05.xml:216
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr "En cualquier momento puede hacer click en el botón <guibutton>Refresh</guibutton> para actualizar los valores del atributo. Si se presenta una excepción al recuperar el valor de un atributo, la excepción se presenta en el lugar del valor del atributo. "
+
+#. Tag: para
+#: Chapter_05.xml:219
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr "También puede invocar operaciones sobre un MBean. Una lista de operaciones expuestas por un MBean se presenta debajo de la lista de atributos. Para invocar una operación simplemente selecciónela de la lista y haga click en el botón <guibutton>Invoke</guibutton>. Si la operación requiere parámetros entonces aparecerá otra ventana desde donde debe especificar los valores para cada uno de los parámetros requeridos. Se especifican los valores de los parámetros de la misma manera que se especifican los valores de atributos JMX. Una vez que haya especificado el valor para cada uno de los parámetros haga click en el botón <guibutton>Invoke</guibutton> para realizar la invocación. "
+
+#. Tag: para
+#: Chapter_05.xml:222
+#, no-c-format
+msgid "Once the method invocation has completed its return value will be displayed."
+msgstr "Una vez se ha completado la invocación del método se presentará su valor de retorno. "
+
+#. Tag: title
+#: Chapter_05.xml:227
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr "Uso del navegador de almacenamiento de objetos"
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr ""
+"Para abrir la ventana del navegador de almacenamiento de objetos haga click en el menú <menuchoice><guimenu>File</guimenu></menuchoice> y luego haga click en la opción "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> y podrá verla."
+
+#. Tag: para
+#: Chapter_05.xml:231
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr "La ventana del navegador de almacenamiento de objetos se divide en cuatro secciones: "
+
+#. Tag: para
+#: Chapter_05.xml:236
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr "Raíz del almacenamiento de objetos - este es un menú desplegable de la raíz del almacenamiento de objetos actualmente disponible. El seleccionar una opción de la lista volverá a introducir la información de la vista de jerarquía con el contenido de la raíz seleccionada. "
+
+#. Tag: para
+#: Chapter_05.xml:241
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr "Jerarquía del almacenamiento de objetos - este es un árbol que muestra la jerarquía del almacenamiento de objetos actual. El seleccionar un nodo de este árbol presentará los objetos almacenados en ese lugar. "
+
+#. Tag: para
+#: Chapter_05.xml:246
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr "Objetos – es una lista de íconos que representan los objetos almacenados en el lugar seleccionado."
+
+#. Tag: para
+#: Chapter_05.xml:251
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr "Detalles del objeto - muestra información acerca del objeto seleccionado actualmente (sólo si el repositorio para ver el estado conoce el tipo de objeto; consulte la sección 'Writing an OSV' para obtener mayor información sobre cómo escribir un visor de estado de objetos (OSV - object state viewers)."
+
+#. Tag: title
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr "Visor de estado de objetos (OSV - Object State Viewers)"
+
+#. Tag: para
+#: Chapter_05.xml:259
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr "Cuando un objeto se selecciona del panel de objetos en la ventana principal, se invoca el visor de estado de objetos (OSV - object state viewers) para ese tipo de objeto. Una de las tareas de este visor es hacer que la información esté disponible a través de la interfaz del usuario al usuario para mostrar información sobre los objetos seleccionados. Distribuido con las herramientas estándares es un visor de estado de objetos para acciones atómicas, este visor presenta información sobre los registros abstractos en varias de sus listas (por ejemplo, heurístico, fallido, sólo lectura, etc). También es posible escribir sus propios visores, los cuales se pueden utilizar para presentar información sobre los tipos de objetos que haya definido. Cubriremos este tema a continuación. "
+
+#. Tag: title
+#: Chapter_05.xml:263
+#, no-c-format
+msgid "Writing an OSV"
+msgstr "Escritura de un visor de estado de objetos"
+
+#. Tag: para
+#: Chapter_05.xml:264
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr "El escrbir un visor de estado de objetos le permite extender las capacidades del navegador de almacenamiento de objetos para mostrar el estado de los registros abstractos definidor por el usuario. Un visor plug-in es simplemente una clase, la cual implementa la interfaz: "
+
+#. Tag: code
+#: Chapter_05.xml:269
+#, no-c-format
+msgid "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+
+#. Tag: para
+#: Chapter_05.xml:271
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr "Se debe empacar en una JAR dentro del directorio de plugins. Este ejemplo muestra cómo crear un plugin del visor de estado de objetos para una subclase de registros abstractos, la cual se ve así: "
+
+#. Tag: screen
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:275
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr ""
+"Cuando este registro abstracto se ve en el navegador del almacenamiento de objetos sería bueno poder ver el valor actual. Esto es fácil de hacer ya que podemos leer el estado en una instancia de nuestro registro abstracto y llamar a <methodname>getValue()</"
+"methodname>. El siguiente es el código fuente del plug-in del almacenamiento de objetos: "
+
+#. Tag: screen
+#: Chapter_05.xml:278
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:279
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr ""
+"El método <methodname>uidNodeExpanded</methodname> se invoca cuando un UID "
+"(identificación única) representando el tipo dado se expande en el árbol de jerarquías del almacenamiento de objetos. Esto no se  requiere por este plugin ya que este registro abstracto no es visible en el almacenamiento de objetos directamente, sólo se puede ver a través de una de las listas en una acción atómica. El método "
+"<methodname>entrySelected</methodname> se invoca cuando una entrada se selecciona de la vista de objetos la cual representa un objeto con el tipo dado. En ambos métodos el StatePanel se utiliza para presentar información con relación al estado del objeto. El panel de estado tiene los siguientes métodos que ayudan a presentar esta información:"
+
+#. Tag: para
+#: Chapter_05.xml:284
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr "<methodname>setInfo(String info)</methodname>: Este método se puede utilizar para mostrar información general."
+
+#. Tag: para
+#: Chapter_05.xml:289
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr "<methodname>setData(String name, String value)</methodname>: Este método se utiliza para poner información en la tabla presentada por la herramienta del navegador de almacenamiento de objetos."
+
+#. Tag: para
+#: Chapter_05.xml:294
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: Este método se utiliza para activar el botón de detalles. La interfaz de escucha permite que un plug-in sea informado cuando se pulsa el botón. Ya queda de parte del desarrollador del plug-in el decidir la manera de presentar esta "
+"información adicional."
+
+#. Tag: para
+#: Chapter_05.xml:299
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr "En este ejemplo leemos el estado del almacenamiento de objetos y utilizamos el valor retornado por getValue() para poner una entrada en la tabla del panel de estado. El método getType() retorna el tipo frente al cual está registrado este plug-in. "
+
+#. Tag: para
+#: Chapter_05.xml:302
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+"Para añadir este plug-in al navegador del almacenamiento de objetos es necesario empacarlo en un archivo JAR (Java Archive) con un nombre que tiene un prefijo 'osbv-'. El archivo JAR debe contener cierta información dentro del archivo manifiesto de manera que el navegador del almacenamiento de objetos sabe qué clases son plug-ins. Todo esto se puede realizar utilizando un script <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> así: "
+
+#. Tag: screen
+#: Chapter_05.xml:305
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+
+#. Tag: para
+#: Chapter_05.xml:306
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr ""
+"Una vez que se ha creado el JAR con la información correcta en el archivo manifiesto sólo es necesario ponerlo en el directorio <emphasis>bin/tools/plugins</"
+"emphasis>. "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_06.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_06.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,877 @@
+# translation of Chapter_06.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_06\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-01 15:06+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr "Construcción de un objeto transaccional para aplicación en Java"
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr "Construcción de aplicaciones "
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid "There are two distinct phases to the development of a TxCore application:"
+msgstr "Hay dos fases diferentes para el desarrollo de una aplicación TxCore: "
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr "Desarrollo de nuevas clases con ciertas características (por ejemplo, persistente, recuperable, control de concurrencia). "
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid "Developing the application(s) that make use of the new classes of objects."
+msgstr "Desarrollo de la(s) aplicación(es) que utiliza las nuevas clases de objetos. "
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr ""
+"Aunque estas dos faces se pueden realizar paralelamente y por una sola persona, nos vamos a referir al primer paso como la tarea del desarrollador de clases y el segundo como la tarea del desarrollador de aplicaciones. El desarrollador de clases se ocupará de definir las operaciones <code>save_state</code> y "
+"<code>restore_state</code> apropiadas para la clase, configurando los bloqueos apropiados en las operaciones e invocando los constructores de clase TxCore apropiados. El desarrollador de aplicaciones estará más involucrado con la definición de la estructura general de la aplicación, particularmente con referencia al uso de acciones atómicas. "
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr "Este capítulo ilustra los puntos que resaltamos en secciones anteriores resumiendo una aplicación simple: en este caso se desarrollará una simple clase de cola FIFO para valores enteros. La implementación de la cola se realizará con una estructura de lista enlazada doblemente y se implementará como un sólo objeto. Vamos a utilizar este ejemplo a través del resto de este manual para ayudar a ilustrar los variados mecanismos que TxCore proporciona. Mientras que este es un ejemplo poco realista de una aplicación, este nos permite describir todas las modificaciones TxCore sin necesitar un conocimiento profundo del código de la aplicación. "
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr "En el resto de este capítulo vamos a asumir que la aplicación no está distribuida. Si este no es el caso entonces la información de contexto debe propagarse ya sea implícta o explícitamente. "
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr "Descripción de cola"
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr "La cola es una cola FIFO tradicional, en donde los elementos se añaden al frente y se remueven del final. Las operaciones que la clase de cola proporciona permite poner los valores en la cola y removerlos de esta y también es posible cambiar o inspeccionar los valores de los elementos en la cola. En esta implementación de ejemplo, se utiliza una lista para representar la cola. En este ejemplo se impuso un límite de <code>QUEUE_SIZE</code> elementos. "
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid "The Java interface definition of this simple queue class is given below:"
+msgstr "La definición de la interfaz Java de esta clase de cola simple se presenta a continuación: "
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr "Constructores y deconstructores"
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr "Como lo mencionamos en la sección anterior, para utilizar un objeto persitente existente se necesita el uso de un constructor especial que se requiere para tomar el Uid del objeto persistente; la implementación de tal constructor se puede ver a continuación:"
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr "El constructor que crea un nuevo objeto persistente es similar:"
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr ""
+"El uso de una acción atómica dentro del constructor para un nuevo objeto sigue las directrices señaladas anteriormente y asegura que el estado del objeto se escribirá al almacenamiento de objetos cuando la acción atómica a nivel superior apropriada guarda los cambios (la cual será la acción A o alguna acción adjunta activa cuando se construyó el <code>TransactionalQueue</code>). El uso de acciones atómicas en un constructor es simple: una acción primero debe ser declarada y su operación begin se debe invocar; después la operación debe establecer un bloqueo apropiado en el objeto (en este caso se debe adquirir un bloqueo <code>WRITE</code>), luego se ejecuta el cuerpo principal del constructor. Si esto tiene éxito entonces las acción "
+"atómica se puede guardar de otra manera se aborta."
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr "El destructor de la clase de cola sólo se requiere para llamr a la operación terminate del <methodname>LockManager</methodname>"
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr "save_state, resotre_state y tipo"
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr "Las implementaciones de save_state y restore_state son relativamente simples para este ejemplo:"
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+"Ya que la clase de cola se deriva de la clase <classname>LockManager</"
+"classname>, el tipo de la operación debe ser: "
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr "operaciones enqueue/dequeue "
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr "Si las operaciones de la clase cola se codifican como acciones atómicas entonces la operación enqueue puede tener la estructura que presentamos a continuación (la operación dequeue se estructuraría de manera similar):"
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr "queueSize"
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid "The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr "La implementación de <methodname>queueSize</methodname> se muestra a continuación:"
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr "operaciones inspectValue/setValue"
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr ""
+"La implementación de <methodname>inspectValue</methodname> aparece a continuación. "
+"<methodname>setValue</methodname> es similar y no se muestra."
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr "El cliente"
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr "En vez de mostrar todo el código para el cliente, vamos a concentrarnos en una proción representativa. Antes de invocar las operaciones en el objeto, el cliente tiene que vincularlo a este primero obviamente. En el caso local esto simplemente requiere que el cliente cree una instancia del objeto. "
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr ""
+"Antes de invocar una de las operaciones de la cola, el cliente inicia una "
+"transacción. La operación <methodname>queueSize</methodname> se puede ver a continuación:"
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr "Comentarios"
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr "Ya que el objeto cola es persistente, el estado del objeto sobrevivirá cualquier falla del nodo en el que se encuentra ubicado. El estado del objeto que sobrevivirá es el producido por la última acción atómica guardada a nivel superior realizada en el objeto. Si es la intención de una aplicación el realizar dos operaciones enqueue atómicamente, por ejemplo, entonces esto se puede lograr anidando las operaciones enqueue en otra acción atómica adjunta. Además, las operaciones concurrentes en tal objeto persistente se serializarán, previniendo inconsistencias en el estado del objeto. Sin embargo, ya que los elementos de los objetos cola no tienen control de concurrencia de manera individual, ciertas combinaciones de invocaciones de operaciones concurrentes se ejecutarán serialmente, mientras que lógicamente se podrían ejecutar concurrentemente. Por ejemplo, el modificar los estados de dos elementos diferentes en la cola. En la próxima sección abordarem!
 os algunos de estos asuntos. "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_07.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/Chapter_07.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,345 @@
+# translation of Chapter_07.po to
+# Language es-ES translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_07\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-02 14:14+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr "Opciones de configuración "
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr "Opciones  "
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr "La siguiente tabla muestra las características de configuración y los valores predeterminados aparecen en cursiva. Encontrará más detalles sobre cada opción en las secciones relevantes de este documento. "
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr "Opciones de configuración de TxCore "
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr "Nombre de la configuración "
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr "Valores posibles "
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr "Descripción"
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeSync"
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr "ON/OFF"
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr "Prende o apaga la sincronización para el almacenamiento de objetos. Utilícelo con cuidado. "
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeType"
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr "Especifica el tipo de implementación del almacenamiento de objetos a utilizar. "
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr "255/cualquier valor entero"
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr "Configura el número de directorios sobre los cuales realizar hash en los estados de objeto para la implementación del almacenamiento de objetos HashedStore. "
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreType"
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr "BasicLockStore/BasicPersistentLockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr "Especifica el tipo de la implementación del almacenamiento de bloqueos a utilizar."
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr "Windows: .\\LockStore Unix: ./LockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr "Especifica la ubicación del almacenamiento de bloqueos."
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr "Cualquier lugar en donde la aplicación puede escribir."
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr "Especifica la ubicación del almacenamiento de objetos. "
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr "defaultStore"
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr "Especifica el nombre de la raíz del almacenamiento de objetos "
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr "com.arjuna.ats.arjuna.coordinator.actionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr "ActionStore/HashedActionStore/JDBCActionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr "La implementación del registro de transacciones a utilizar. "
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr "YES/NO"
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr "Prende o apaga (por defecto) el guardar los cambios de manera asincrónica. "
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr "Prende o apaga (por defecto) prepare asincrónico. "
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.transactionSync"
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr "Nombre de clase JDBCAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr "La implementación JDBCAccess a utilizar para uso de almacenamientos de objetos a nivel de usuario. "
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr "La implementación JDBCAccess a utilizar para uso de almacenamientos de objetos de transacciones."
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr "Activar o desactivar la optimización del guardar los cambios de una fase. "
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr "Activar o desactivar la optimización de sólo lectura para la segunda fase abort."
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr "Iniciar/parar de recoger información estadística sobre transacciones."
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr "com.arjuna.ats.arjuna.coordinator.startDisabled"
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr ""
+"Iniciar con el sistema de transacciones activado o desactivado. Conmutar a través de la clase com."
+"arjuna.ats.arjuna.coordinator.TxControl. "
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr "Entero"
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr "Tiempo de expiración en milisegundos "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/es-ES/JBoss_TS_Programmers_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_A.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_A.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,684 @@
+# translation of Appendix_A.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_A\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-08 09:40+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr "Implémentations d'ObjectStore"
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr "L'ObjectStore"
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr "Dans cette annexe, nous examinerons les différentes implémentations TxCore ObjectStore et nous vous donnerons des directives sur la manière de créer ou d'ajouter d'autres implémentations à une application."
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+"Cette mise à jour de JBossTS comprend différentes implémentations d'un ObjectStore de base. Chacune a un but précis et est généralement optimisée dans ce but. Toutes les implémentations sont dérivées de l'interface <interface>ObjectStore</interface>, qui détermine le minimum d'opérations nécessaires pour qu'une implémentation d'ObjectStore soit utilisée par JBossTS. L'implémentation ObjectStore par défaut peut être remplacée en cours d'exécution par configuration de la variable de propriété <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> avec l'un des types des données proposés ci-dessous."
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr "Les programmeurs JBossTS n'ont normalement pas besoin d'interagir avec aucune implémentation ObjectStore directement, sinon pour les créer au départ (même cela n'est pas strictement nécessaires car JBossTS pourra créer des zônes de stockage d'objets si l'option store par défaut est configurée). Toutes les zônes de stockage manipulent des instances de la classe <classname>ObjectState</classname> qui sont nommées en utilisant un type de données (par l'opération type d'objet) et un Uid. Il existe deux états d'objet pour les actions atomiques, dans le store: OS_COMMITTED, et OS_UNCOMMITTED. Un état d'objet commence par un état OS_COMMITTED, mais peut changer en OS_UNCOMMITTED s'il est modifié sous contrôle d'une action atomique. Si l'action échoue, ce second état est tout simplement ignoré. Toutes les implémentations proposées dans cette version, traitent de ces transitions d'état en utilisant des doubles de copies des états d'objet. Cependant, !
 toute autre implémentation qui maintient cette abstraction est permise. Les états d'objet sont alors cachés (et donc inaccessibles) sous le contrôle du système de récupération des données."
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+"Vous pouvez naviguer à travers le contenu d'un store grâce aux opérations <methodname>allTypes</methodname> et <methodname>allObjUids</methodname>. <methodname>allTypes</methodname> retourne un <type>InputObjectState</type> qui contient tous les types de noms des objets contenus dans le store, terminés par un nom nul. <methodname>allObjUids</"
+"methodname> retourne un <type>InputObjectState</type> qui contient tous les Uids de tous les objects attachés à un type particulier et terminés par le "
+"<methodname>Uid.nullUid()</methodname> spécial."
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr "ObjetStore persistants"
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr "Cette section décrit brièvement les caractéristiques et optimisations de chaque implémentation proposée de l'ObjectStore persistant. Les OjectStore persistants sont mappés dans la structure du système de fichiers supportés par le système d'exploitation de l'hôte."
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr "Fonctionnalité en commun"
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr "En plus des fonctions mentionnées ci-dessus, tous les ObjectStores persistants proposées suivent aux règles suivantes:"
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr "Chaque état d'objet est placé dans son propre fichier, qui est lui-même nommé par l'intermédiaire de l'<code>Uid</code> de l'objet."
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr "Le type d'un objet (donné par l'opération <methodname>type()</methodname>) détermine le répertoire dans lequel l'objet est placé."
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr "Toutes les zones de stockage ont un répertoire root qui détermine quand JBossTS est configuré. Ce nom de répertoire est ajouté comme préfixe à toute information root spécifique à la zone de stockage, automatiquement."
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr "Toutes les zones de stockage feront référence à un répertoire root qui est automatiquement ajouté comme préfixe du type d'objet pour déterminer le nom du répertoire ultime. Le nom root localisé est spécifié quand le store est créé. Par défaut, le nom root localisé est <code>defaultStore</code>."
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr "ShadowingStore"
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr ""
+"Il s'agit de la version originale d'un ObjectStore comme proposé dans les versions antérieures et implémenté par la classe <classname>ShadowingStore</"
+"classname>. C'est simple mais lent. Des paires de fichiers sont utilisée pour représenter les objets (la version shadow et la version soumise) et les fichiers sont ouverts, verrouillés, traités, déverrouillés et fermés pour chaque interaction avec l'ObjectStore. Ainsi, on peut passer énormément de temps à simplement ouvrir, fermer et renommer les fichiers, ce qui représente un coût non négligeable."
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr "Si on remplace l'implémentation de l'ObjectStore, le type de cet ObjectStore est <type>ShadowingStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr "Pas de verrouillage au niveau-fichier"
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr "Comme les objets transactionnels sont simultanément contrôlés par <methodname>LockManager</methodname>, il n'est pas nécessaire d'imposer de verrouillage supplémentaire au niveau fichier comme dans l'implémentation de base ShadowingStore. Ainsi, l'implémentation ObjetStore par défaut de JBossTS, <methodname>ShadowNoFileLockStore</methodname>, dépend du verrouillage au niveau-utilisateur. Ceci lui permet d'offrir une meilleure performance que l'implémentation <methodname>ShadowingStore</methodname>."
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr "Si elle remplace l'implémentation d'un ObjectStore, le type de cet ObjectStore est <type>ShadowNoFileLockStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr "HashedStore"
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "Le <code>HashedStore</code> a la même structure que le ShadowingStore pour les états d'objet, mais ont une structure de répertoire alternante qui est mieux adaptée pour héberger un grand nombre d'objets du même type. En utilisant ce store, les objets sont éparpillés parmi un ensemble de répertoires par l'application de la fonction Hashing (hachage) aux objets Uid. 255 sous-répertoires sont utilisés par défaut. Cependant, on peut changer cela en configurant la variable <code>HASHED_DIRECTORIES</code> d'environnement en fonction."
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr "Si on change l'implémentation d'un ObjetStore, le type de cet ObjetStore est <type>HashedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr "Comme les objet transactionnels sont contrôlés simultanément par <methodname>LockManager</methodname>, il n'est pas utile d'imposer de verrouillage supplémentaire au niveau fichier comme le fait l'implémenation de base de <methodname>ShadowingStore</methodname>. Ainsi, l'implémentation d'ObjectStore par défaut de JBossTS, <methodname>ShadowNoFileLockStore</methodname> dépend du verrouillage au niveau utilisateur. Ceci lui permet d'offrir une meilleure performance que l'implémentation de <methodname>ShadowingStore</methodname>."
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "<methodname>HashedStore</methodname> a la même structure que les ShadowingStores pour les états d'objet, mais possède une structure de répertoire différente, qui est mieux adaptée pour héberger un grand nombre d'objets du même type. En utilisant ce store, les objets sont éparpillés parmi un ensemble de répertoires en appliquant la fonction hachage aux objets Uid. 255 sous-répertoires sont utilisés par défaut. Cependant, on peut modifier cela en configurant la variable<code>HASHED_DIRECTORIES</code>d'environnement en fonction."
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr "JDBCStore"
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr "<methodname>JDBCStore</methodname> utilise une base de données JDBC pour sauvegarder les états d'objets persistants. Lorsque utilisé en conjonction avec les Objets Transactionnels pour Java API, il existe un support pour les transactions imbriquées. Dans l'implémentation courante, tous les états d'objet sont hébergés en tant que BLOBs (de l'anglais: Binary Large Objest / Grands objets binaires) dans le même tableau. La limite de la taille des objets imposée par BLOB est de 64k. Si on tente d'héberger un état d'objet dont la taille excède cette limite, il y aura une erreur de sortie et l'état ne pourra pas être hébergé. La transaction sera alors refoulée."
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+"Lorsque vous utilisez un ObjectStore JDBC, l'application doit procurer une implémentation de l'interface suivante, située dans le paquetage <code>com.arjuna."
+"ats.arjuna.objectstore</code>:"
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr "L'implémentation de cette classe est chargée de procurer la <emphasis>Connexion</emphasis> utilisée par le JDBC ObjectStore pour sauvegarder et restaurer les états d'objet."
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr "<methodname>getConnection</methodname>: retourne la connexion à utiliser. Cette méthode est utilisée quand on a besoin d'une connexion et que l'implémentation devrait utiliser n'importe quelle politique nécessaire pour déterminer la connexion à retourner. Cette méthode n'a pas besoin de retourner la même instance de connexion plus d'une fois."
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr "<methodname>putConnection</methodname>: cette méthode est utilisée pour retourner une des connexions provenant de getConnection. Les connexions sont retournées en cas d'errreur."
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr "<methodname>initialise</methodname>: peut être utilisé pour passer des informations arbitraires supplémentaires pour l'implémentation."
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+"L'ObjectStore JDBC fera tout d'abord une demande pour un nombre de connexions bien défini dans la propriété <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> et se restreindra au nombre déterminé dans la propriété <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property>."
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr ""
+"L'implémentation de l'interface <interfacename>JDBCAccess</interfacename> à utiliser, devrait être installée dans la variable de propriété <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property>."
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr "Lorsqu'on change l'implémentation d'une implémentation d'ObjectStore, le type de cet ObjectStore est <type>JDBCStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+"Un ObjetStore JDBC peut être utilisé pour gérer le journal des transactions. Dans ce cas, l'implémentation du journal de transactions devrait être configuré ainsi <property>JDBCActionStore</property> et l'implémentation <methodname>JDBCAccess</"
+"methodname> doit être fournie par la variable de propriété <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property>. Dans ce cas, le nom du tableau par défaut est JBossTSTxTable."
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr "Il est possible d'utiliser la même implémentation JDBCAccess pour l'ObjectStore de l'utilisateur et aussi pour le journal de transaction."
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr "CachedStore"
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr "Cet ObjectStore utilise le HashedObjectStore, mais ne peut ni lire, ni écrire les états dans la zone de stockage de sauvegarde persistant. Il maintient les états dans le cache mémoire volatil et vide le cache périodiquement ou bien quand il est plein. Les sémantiques d'échec associées à cet ObjectStore sont différentes des ObjectStores persistants habituels, car un échec pourrait résulter à la perte d'états dans cache."
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr "Si vous changez l'implémentation des ObjectStores, le type de cet ObjectStore est <type>CachedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr "La zone de stockage peut être configurée avec les propriétés suivantes:"
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> détermine le nombre de zones de stockage internes pour le hachage des états. La valeur par défaut est 128."
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> est la taille maximum qu'un cache peut atteindre avant de déclencher un flush. La valeur par défaut est de 10240 octets."
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> est le nombre maximum d'objets mis de coté que le cache puisse contenir avant le déclenchement du flush. Par défaut, les appels pour retirer un état qui se trouve dans le cache, aboutiront simplement à retirer l'état du cache, mais laissera une entrée vide (plutôt que de supprimer l'entrée immédiatement, ce qui affecterait la performance du cache). Lorsqu'elles sont déclenchées, ces entrées sont retirées du cache. La valeur par défaut est de deux fois celle de la taille du hachage."
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> est le nombre maximum d'objets que l'on peut accumuler dans le cache avant qu'il ne soit vidé. La valeur par défaut est de 100."
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> détermine en millesecondes le temps de vidage périodique du cache. La valeur par défaut est de 120 secondes."
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> détermine si les vidages périodiques de cache sont sync-ed avec le disque. La valeur par défaut est OFF. Pour l'activer, paramétrer sur ON."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_B.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Appendix_B.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,503 @@
+# translation of Appendix_B.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_B\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-24 08:39+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr "Définitions de classes"
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr "Cette annexe contient un aperçu de ces classes que le programmeur d'application va typiquement utiliser. Le but de cette annexe est de procurer un petit guide rapide de référence de ces classes utilisées pour écrire des applications dans TxCore. Dans un souci de clarification, on ne traitera que des interfaces publiques ou protégées des classes."
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr "Bibliothèque de classes"
+
+#. Tag: title
+#: Appendix_B.xml:17
+#, no-c-format
+msgid "Lock Manager"
+msgstr "Gestionnaire de verrouillage"
+
+#. Tag: screen
+#: Appendix_B.xml:20
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:22
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: screen
+#: Appendix_B.xml:25
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:27
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr "Entrée/SortieObjectState"
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:32
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr "Entrée/SortieTampon"
+
+#. Tag: screen
+#: Appendix_B.xml:35
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr "<title>Uid</title>"
+
+#. Tag: screen
+#: Appendix_B.xml:40
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:42
+#, no-c-format
+msgid "AtomicAction"
+msgstr "AtomicAction"
+
+#. Tag: screen
+#: Appendix_B.xml:45
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Author_Group.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-24 08:39+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr "Groupe de documentation Red Hat"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,44 @@
+# translation of Book_Info.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-07 11:55+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss TS Programmers Guide"
+msgstr "Guide des programmeurs JBoss TS"
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise SOA Platform"
+msgstr "Plate-forme SOA JBoss Enterprise"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr "Cet ouvrage est l'édition d'Enterprise Application Platform du guide des programmeurs JBoss TS Programmers Guide."
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1001 @@
+# translation of Chapter.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-07 15:08+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr "Aperçu"
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr "Ce chapitre comprend une description de l'utilisation du moteur de transactions <classname>TxCore</classname> et des classes et des possibilités de <firstterm>Transactional Objects for Java</firstterm>. Les classes mentionnées dans ce chapitre représentent une clé de voûte pour écrire des applications tolérantes-de-fautes, utilisant des transactions. Ainsi, après une brève description, nous pourrons les utiliser pour la construction d'une application simple. Les classes que nous allons décrire dans ce chapitre, peuvent être trouvées dans les paquetages <classname>com.arjuna.ats.txoj</classname> et <classname>com.arjuna.ats.arjuna</classname>."
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr "TxCore – le moteur de transactions"
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr ""
+"Dans le souci de conserver un affichage orienté-objet, les mécanismes utiles à la construction d'applications distribuées fiables, sont présentés aux programmeurs sous un angle orientation-objet. Certains mécanismes doivent être hérités, comme par exemple le contrôle de l'accès simultané et la gestion des états; alors que d'autres mécanismes, comme ObjetStorage et transactions, sont implémentés dans les objets <classname>TxCore</"
+"classname> qui sont créés et manipulés comme n'importe quel autre objet."
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+"Lorsque le manuel traite de l'utilisation des fonctions de contrôle de l'accès simultané et de la persistance, on assume que les classes <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) sont utilisées. Si ce n'est pas le cas, alors, le programmeur est responsable de tous ces problèmes."
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr "<classname>TxCore</classname> exploite des techniques orientées-objet pour proposer aux programmeurs une boîte à outils des classes Java grâce à partir desquelles les classes d'application peuvent hériter pour obtenir les propriétés voulues, comme la persistance et le contrôle à l'accès simultané. Ces classes forment une hiérarchie, montrée en partie ci-dessous et qui sera décrite plus loin dans ce document."
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr "Classe de hiérarchie Txcore"
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr ""
+"En plus de spécifier l'étendue des transactions,et de définir les verrouillages qui conviennent dans les objets, le programmeur de l'application n'a pas d'autre responsabilité: <classname>TxCore</classname> et <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) garantissent que les objets transactionnels seront enregistrés avec, et seront contrôlés par les transactions qui conviennent. Les mécanismes de recouvrement sont déclenchés automatiquement en cas d'échecs."
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr "Sauvegarder les états d'objet"
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+"<classname>TxCore</classname> a besoin de mémoriser l'état d'un objet pour différentes raisons, y compris le recouvrement (l'état représente l'état final de l'objet) et la persistance (l'état représente l'état final d'un objet en terminaison d'application). Comme ces prérequis ont une fonctionnalité en commun, ils sont implémentés en utilisant le même mécanisme: les classes <classname>InputObjectState</classname> et "
+"<classname>OutputObjectState</classname>. Les classes maintiennent un array interne dans lequel les instances de type standard peuvent être mises en paquets (ou dépaquetées) en contigu, en utilisant les opérations <command>pack</command> (<command>unpack</"
+"command>) appropriées. Le tampon est reconfiguré automatiquement suivant les besoins, s'il ne possède pas suffisamment d'espace. Les instances sont toutes hébergées dans le tampon sous une forme standard (dans l'ordre d'octet-réseau) pour les rendre dépendants de la machine. Tout autre format indépendant d'architecture (comme VDR ou ASN.1) peut être tout simplement implémenté en remplaçant les opérations avec celles qui correspondent à l'encodage qui convient."
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr "L'ObjetStore"
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr "Les implémentations de persistance peuvent être affectées par les restrictions imposées par le SecurityManager Java. Ainsi, l'ObjetStore offert dans <classname>TxCore</classname> est implémenté en utilisant les techniques d'interface/implémentation. La distribution actuelle possède des implémentations qui rédigent les états d'objet dans les bases de données ou les systèmes de fichiers locaux. La distribution actuelle possède également des implémentations distantes, pour les quelles l'interface utilise un proxy pour accéder aux services éloignés."
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr "Des identifiants uniques (instances de la classe de l'Uid) dont assignés aux objets persistants, au moment de leur création, et ils sont utilisés pour les identifier dans l'ObjectStore. Les états sont lus par l'intermédiaire de l'opération <literal>read_committed</literal> et rédigés par les opérations <literal>write_(un)committed</literal>."
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr "Recouvrement et persistance"
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+"La racine de la hiérarchie est la classe <classname>StateManager</"
+"classname>. Cette classe est responsable pour l'activation et la désactivation des objets, ainsi que pour leur recouvrement. La signature simplifiée de la classe est:"
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr "Les objets sont supposés être de trois genres possibles. Ils peuvent tout simplement être recouvrables, dans lequel cas <classname>StateManager</classname> tentera de générer et de maintenir des informations de recouvrement appropriées pour l'objet. De tels objets ont une durée de vie qui ne dépasse pas celle du programme d'application qui les a créés. Les objets peuvent être recouvrables et persistants, dans lequel cas, la durée de vie de l'objet est sensée être plus longue que la durée de création ou d'accès à l'application, ainsi, en plus de maintenir les informations de recouvrement  <classname>StateManager</classname> tentera de charger(décharger) automatiquement tout état persistant existant d'un objet en appelant l'opération d'activation (de désactivation) aux moments opportuns. Finalement, les objets ne possèdent probablement aucune de ces capacités, dans lequel cas, aucune information de recouvrement n'est gardée, et l'activation/dÃ!
 ©sactivation de l'objet n'est jamais tentée automatiquement."
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Si un objet est recouvrable ou bien recouvrable et persistant, alors <classname>StateManager</classname> déclenchera les opérations <command>save_state</command> (en exécutant <command>deactivate</"
+"command>), et <command>restore_state</command> (en exécutant activer) à plusieurs points pendant l'exécution de l'application. Ces opérations doivent être régies par le programmeur car <classname>StateManager</classname> ne peut pas détecter les changements d'état au niveau utilisateur. (Nous examinons la génération automatique par défaut des opérations <command>save_state</command> et <command>restore_state</command>, qui permettent au programmeur de le remplacer quand on peut utiliser des connaissances spécifiques à l'application pour améliorer l'efficacité). Cela donne au programmeur la capacité de décider quelles parties de l'état de l'objet doivent être persistantes. Ainsi, dans le cas d'une feuille de calcul électronique, il n'est peut-être pas nécessaire de sauvegarder toutes les saisies s'il est tout simplement possible de recalculer certaines valeurs. L'implémentation <command>save_state</command> pour une classe "
+"<classname>Example</classname> qui comprend des entiers relatifs variables A, B, et C pourrait simplement être:"
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr "Les objets sont supposés être de trois genres possibles. Ils peuvent tout simplement être recouvrables, dans lequel cas <classname>StateManager</classname> tentera de générer et de maintenir des informations de recouvrement appropriées pour l'objet. De tels objets ont une durée de vie qui ne dépasse pas celle du programme d'application qui les a créés. Les objets peuvent être recouvrables et persistants, dans lequel cas, la durée de vie de l'objet est sensée être plus longue que la durée de création ou d'accès à l'application, ainsi en plus de maintenir les informations de recouvrement  <classname>StateManager</classname> tentera de charger(décharger) automatiquement tout état persistant existant d'un objet en appelant l'opération d'activation (de désactivation) aux moments opportuns. Finalement, les objets ne possèdent surement aucune de ces capacités, dans lequel cas, aucune information de recouvrement n'est gardée, et l'activation/désact!
 ivation de l'objet n'est jamais tentée automatiquement."
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Si un objet est recouvrable ou bien recouvrable et persistant, alors <classname>StateManager</classname> déclenchera les opérations <command>save_state</command> (en exécutant <command>deactivate</"
+"command>), et <command>restore_state</command> (en exécutant activer) à plusieurs points pendant l'exécution de l'application. Ces opérations doivent être régies par le programmeur car <classname>StateManager</classname> ne peut pas détecter les changements d'état au niveau utilisateur. (Nous examinons la génération automatique par défaut des opérations <command>save_state</command> et <command>restore_state</command>, qui permettent au programmeur de le remplacer quand on peut utiliser des connaissances spécifiques à l'application pour améliorer l'efficacité). Cela donne au programmeur la capacité de décider quelles parties de l'état de l'objet doivent être persistantes. Ainsi, dans le cas d'une feuille de calcul électronique, il n'est peut-être pas nécessaire de sauvegarder toutes les saisies s'il est tout simplement possible de recalculer certaines valeurs. L'implémentation <command>save_state</command> pour une classe "
+"<classname>Example</classname> qui comprend des entiers relatifs variables A, B, et C pourrait simplement être:"
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+"Il faut que les méthodes <command>save_state</command> et "
+"<command>restore_state</command> appellent <classname>super.save_state "
+"</classname>et <classname>super.restore_state</classname> en vue d'améliorer les mécanismes de recouvrement en cas de crash."
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr "Cycle de vie d'un Objet Transactionnel pour Java"
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+"Un objet persistant qui n'est pas utilisé, est sensé être maintenu dans un état <emphasis>passif</"
+"emphasis> et son état doit résider dans un ObjetStore et doit être <emphasis>activé</emphasis> à la demande. Le cycle de vie fondamental d'un objet persistant dans <emphasis>TXOJ</emphasis> est présenté dans <xref linkend="
+"\"figure_2\"/>."
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr "Le cycle de vie d'un objet persistant."
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr "L'objet est tout d'abord passif, et est hébergé dans l'ObjetStore d'une instance dans la classe <classname>OutputObjectState</classname>."
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr ""
+"Lorsqu'une application l'exige, l'objet est automatiquement activé par sa lecture dans une zone de stockage par l'opération <command>read_committed</command> , puis est converti d'une instance <classname>InputObjectState</"
+"classname> en objet recouvré par l'opération <command>restore_state</command>."
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr "Quand l'application est terminée pour l'objet, il est désactivé en le reconvertissant en une instance <classname>OutputObjectState</classname> par l'opération <command>save_state</command>. Il est alors hébergé en tant que copie double par l'intermédiaire de write_uncommitted. Cette copie double peut être soumise, en remplacement de la version précédente, par l'opération <command>commit_state</command>. La présence de copies doubles est normalement cachée par le système de transactions à la vue du programmeur. La désactivation d'objets a normalement lieu quand la transaction au plus haut niveau par laquelle l'objet a été activé, est validée."
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr "Au cours de sa vie, un objet persistant peut être rendu à la fois actif ou passif et ce, à plusieurs reprises."
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr "Le contrôleur de concurrence (concurrency controller)"
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr "Le contrôleur de concurrence est implémenté par la classe <classname>LockManager</classname> qui propose un comportement raisonnable par défaut, tout en permettant au programmeur de le remplacer s'il le juge nécessaire par les sémantiques particulières de la classe programmée. Tout comme pour <classname>StateManager</classname> et persistance, les implémentations de contrôle de concurrence sont accessibles à travers les interfaces. En plus de procurer un accès aux services éloignés, les implémentations actuelles du contrôle dde concurrence disponible aux interfaces comprennent:"
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr "l'implémentation de la base de donnée/disque local, où les verrouillages sont rendus persistants en étant inscrits sur le système de fichiers local ou sur la base de données."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr "une implémentation purement locale, pour laquelle les verrouillages sont conservés dans la mémoire de la machine virtuelle qui les a créés. Cette implémentation possède une meilleure performance que lorsqu'on écrit des verrouillages sur le disque local, mais les objets ne peuvent pas être partagés entre les machines virtuelles. Il est important de savoir qu'il s'agit d'un objet de base Java sans aucune exigence, qui peut être affecté par le SecurityManager"
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr "L'interface primaire du programmeur avec le contrôleur de l'accès simultané est par l'opération setlock. Par défaut, le système d'exécution active un verrouillage stricte en deux-phases, suite à une politique à écriture simple et à lectures multiples, sur la base d'un objet à la fois. Cependant, comme le montre <xref linkend=\"figure_1\"/>, en héritant de la classe <classname>Lock</classname>, il est possible pour les programmeurs de procurer leurs propres implémentations de verrouillage, associés à des règles de conflits de verrouillage différentes pour activer  <firstterm>type specific concurrency control</firstterm>."
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "L'acquisition du verrouillage est (par nécessité) sous le contrôle du programmeur, car, tout comme <classname>StateManager</classname> ne peut pas déterminer si une opération peut modifier un objet, <classname>LockManager</classname> ne peut pas déterminer si une opération requiert un verrouillage lecture ou écriture. La mainlevée sur le verrouillage, est cependant sous le contrôle du système et ne requiert pas davantage d'intervention de la part du programmeur. Cela garantit que la propriété deux-phases peut être correctement maintenue."
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+"La classe <classname>LockManager</classname> est principalement responsable de gérer les demandes d'installation de verrous sur un objet ou pour opérer une mainlevée sur un verrou, si besoin est. Cependant, comme elle est dérivée de <classname>StateManager</"
+"classname>, elle peut également exercer son contrôle lorsque certaines des fonctions héritées sont invoquées. Pat exemple. <classname>LockManager</classname> assume que la configuration d'un verrou écriture implique que l'opération 'invoquer' s'apprête à modifier l'objet. Ceci peut entraîner la sauvegarde des informations de recouvrement si l'objet est recouvrable. De la même façon, l'acquisition d'un verrou entraîne l'invocation d' \"activer\"."
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid "The code below shows how we may try to obtain a write lock on an object:"
+msgstr "Le code ci-dessous montre comment on peut obtenir le verrou écriture d'un objet:"
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr "Le moteur du protocole de transaction"
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr "Le moteur du protocole de transaction est représenté par la classe <classname>AtomicAction</classname>, qui utilise <classname>AtomicAction</classname> pour enregistrer suffisamment d'informations pour que les mécanismes de recouvrement en cas de crash puissent terminer la transaction en cas d'échecs. Il a des méthodes pour commencer ou terminer la transaction, et, dans les situations pour lesquelles les programmeurs ont besoin d'implémenter leurs propres ressources, des méthodes pour les enregistrer dans la transaction en cours. Comme <emphasis>TxCore</emphasis> supporte des sous-transactions, si une transaction a commencé dans la limite d'une transaction en cours, elle sera automatiquement imbriquée."
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr "<emphasis>TxCore</emphasis> est multifilière, ce qui permet à chaque fil de partager une transaction dans une application ou bien d'exécuter au sein de cette même transaction. Ainsi, les classes <emphasis>TxCore</emphasis> sont également thread-safe."
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr "Exemple"
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr "Le simple exemple ci-dessous illustre les relations qui existent entre activation, terminaison et validation:"
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr "L'exécution des codes ci-dessus implique la séquence d'activités suivante:"
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr "La création de liaisons aux objets persistants peut entraîner la création d'objets stub et d'un appel aux objets distants. Dans l'exemple ci-dessus, nous nous relions à un objet persistant existant identifié par <literal>Name-A</literal>, et à un nouvel objet persistant. Un système de nommage des objets distants entretient le mapping entre les noms d'objets et les emplacements. Ce système est décrit dans le chapitre suivant."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr "Début d'une transaction atomique."
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr "Invocations d'opérations: en tant qu'invocation donnée, l'implémentation de l'objet doit garantir qu'il est verrouillé en mode lecture ou écriture (en assumant qu'il n'y ait aucun conflit de verrouillage), et initialisé, si nécessaire, par le dernier état validé de l'ObjetStore. La première fois qu'un verrou est acquis sur un objet au sein d'une transaction, l'état de l'objet est acquis, si possible, à partir de l'ObjetStore."
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr "Valide au niveau d'action le plus élevé. Ceci comprend la mise à jour de l'état de n'importe quels objets modifiés dans l'ObjetStore."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr "Rupture des liaisons créées précédemment."
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr "La hiérarchie des classes"
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr ""
+"Les classes principales qui constituent la hiérarchie de <emphasis>TxCore</"
+"emphasis> sont décrites ci-dessous."
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+"Les programmeurs d'applications tolérantes de fautes seront principalement concernés par les classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"et <classname>AtomicAction</classname>. Les autres classes qui importent les programmeurs sont <classname>Uid</classname>, et <classname>ObjectState</"
+"classname>. La plupart des classes <emphasis>TxCore</emphasis> sont dérivées de la classe de base <classname>StateManager</classname>, qui procure des fonctions primitives utiles pour gérer des objets recouvrables et persistants. Ces fonctions incluent le support pour l'activation et la désactivation des objets, and le recouvrement d'objet basé-état. La classe <classname>LockManager</"
+"classname> utilise <classname>StateManager</classname> et "
+"<classname>Lock</classname> pour procurer le contrôle d'accès simultané (verrouillage en deux phases dans l'implémentation actuelle) requis pour implémenter la propriété de sérialisation des actions atomiques. L'implémentation des facilités d'action atomique est supportée par <classname>AtomicAction</classname> et "
+"<classname>TopLevelTransaction</classname>."
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr ""
+"La plupart des classes de système <emphasis>TxCore</emphasis> sont dérivées de la classe de base <classname>StateManager</classname>, qui procure les facilités nécessaires pour gérer les objets recouvrables et persistants. Ces facilités incluent le support pour l'activation et la désactivation d'objets, et le recouvrement d'objets basés-état. La classe <classname>LockManager</"
+"classname>utilise les facilités de <classname>StateManager</classname> et procurent le contrôle d'accès simultané requis pour l'implémentation de la propriété de sérialisation des actions atomiques."
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+"Considérez un exemple simple. Assumez que <classname>Example</classname> est une classe persistante définie par l'utilisateur, convenablement dérivée de <classname>LockManager</classname>. Une application contenant une transaction atomique Trans accède à un objet (nommé 0) de type <classname>Example</"
+"classname> en invoquant l'opération op1 qui implique les changements d'état à 0. La propriété de sérialisation exige qu'un verrou écriture soit apposé sur 0 avant de le modifier, ainsi le corpus de op1 devrait contenir un appel vers l'opération <literal>setlock</literal> du contrôleur de concurrence."
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr ""
+"L'opération <literal>setlock</literal>, fournie par la classe "
+"<classname>LockManager</classname> opère les fonctions suivantes dans ce cas:"
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid "Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr "Vérifier la compatibilité verrou-écriture avec les verrous présents, et si permis:"
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+"Appeler l'opération <classname>StateManager</classname> active ce qui va charger, si ce n'est pas encore fait, le dernier état persistant de O à partir d'ObjectStore. Puis, appeler l'opération modifiée <classname>StateManager</classname> qui aura pour effet de créer une instance soit de <classname>RecoveryRecord</classname> ou de <classname>PersistenceRecord</"
+"classname> pour O suivant que O ait été persistant ou non (le verrou est un verrou <literal>WRITE</literal> (écriture) donc l'ancien état de l'objet doit être retenu avant la modification) et l'insérer dans le <classname>RecordList</classname> de <classname>Trans</classname>."
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr "Créer et insérer une instance de LockRecord dans la RecordList de Trans."
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+"Maintenant, supposez que l'action <literal>Trans</literal> échoue un peu après que le verrou ait été acquis. Alors, l'opération de retour en arrière (rollback) de <classname>AtomicAction</classname> va traiter l'instance de <classname>RecordList</"
+"classname>associée avec <literal>Trans</literal> en invoquant une opération qui convient <literal>Abort</literal>sur les enregistrements divers. L'implémentation de cette opération par la classe <classname>LockRecord</classname> va libérer le verrou de <literal>WRITE</literal> (écriture) tandis que celui de "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> va restaurer l'ancien état de O."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr "Il est important de réaliser que tout le travail ci-dessus est automatiquement exécuté par <emphasis>TxCore</emphasis> pour le compte du programmeur d'application. Le programmeur a juste besoin de démarrer la transaction et de déterminer un verrou qui convient. <emphasis>TxCore</emphasis> et <emphasis>Objets Transactionnels pour Java <emphasis> s'occupent de l'enregistrement du participant, de la persistance, du contrôle de concurrence et du recouvrement."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_02.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_02.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1763 @@
+# translation of Chapter_02.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_02\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-07 16:03+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr "Utiliser TxCore"
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr ""
+"Dans cette section, nous allons décrire <emphasis>TxCore</emphasis> et "
+"<emphasis>Objets Transactionnels pour Java</emphasis> dans les détails, et nous allons montrer comment il peut être utilisé pour construire des applications transactionelles."
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr "Gestion des états"
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr "États des objets"
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+"<emphasis>TxCore</emphasis> a besoin de pouvoir se rappeler de l'état d'un objet pour plusieurs raisons, y compris le recouvrement (l'état représente quelqu'état passé de l'objet), et la persistance (l'état représente l'état final d'un objet en fin d'application). Comme tous ces critères requièrent une fonctionnalité commune, ils sont tous implémentés par le même mécanisme - les classes <classname>Input/OutputObjectState</classname> "
+"et <classname>Input/OutputBuffer</classname>."
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr "OutputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr "InputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr "La classe <classname>Input/OutputBuffer</classname> maintient un tableau interne dans lequel des instances de types Java standard peuvent être mises en paquetage (ou dépaquetées) en contigu par le biais des opérations 'pack' (ou 'unpack'). La taille du tampon est automatiquement modifiée suivant qu'il y a suffisamment d'espace, et en fonction des besoins. Les instances sont toutes hébergées dans le tampon sous une forme standard (ordre octets réseau) pour qu'ils puissent être indépendants de la machine."
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr "OutputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr "InputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr ""
+"La classe <classname>Input/OutputObjectState</classname> procure toute la fonctionnalité de <classname>Input/OutputBuffer</classname> (à travers l'héritage) mais ajoute deux variables d'instances supplémentaires qui impliquent que l'Uid et le type de l'objet pour lequel l'instance <classname>Input/OutputObjectState</"
+"classname> est une image compressée. Elles sont utilisées au moment de l'accès à l'ObjetStore pendant le stockage et le retrait de l'état d'objet."
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr "L'ObjectStore"
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr "L'ObjectStore proposé avec <emphasis>TxCore</emphasis> possède une interface assez restreinte, et ce, délibérément, de façon à ce qu'elle puisse être implémentée de manières différentes. Par exemple, les mémoires objet sont implémentées dans une mémoire partagée, sur le système de fichiers Unix (sous plusieurs formes), et en tant que store accessible à distance. Il existe des informations plus complètes sur les objet stores qui sont disponibles dans <emphasis>TxCore</emphasis> qui peuvent être trouvés en annexe."
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr "Comme pour toutes les classes <emphasis>TxCore</emphasis>, les mémoires objet par défaut sont de pures implémentations Java. Pour accéder à la mémoire partagée et aux autres implémentations de mémoire objet plus complexes, il est important d'utiliser les méthodes natives."
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+"Toutes les instances 'garder' (hold) ou de 'retrait' (retrieve) d'ObjectStore de la classe <classname>Input/OutputObjectState</classname>. Ces instances sont nommées par l'Uid et par le Type d'objet qu'elles représentent. Les états sont lus en utilisant l'opération <command>read_committed</command> et inscrites dans le système en utilisant l'opération "
+"<command>write_uncommitted</command>. Dans le cadre d'opérations normales, les états de nouveaux objets ne remplacent pas les états d'anciens objets mais sont écrits dans la zone de stockage sous forme de copies doubles. Ces doubles remplacent les originaux quand l'opération <command>commit_state</command> est appelée. Normalement, toutes les interactions dans l'ObjetStore sont exécutées par les composants du système <emphasis>TxCore</"
+"emphasis> selon les besoins, donc toute présence de versions double d'objets dans le store sont cachées de la vue du programmeur."
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+"Quand un objet transactionnel est sauvegardé, il est utile d'effectuer certains changements d'états persistants de façon à ce qu'il puisse être recouvert en cas d'échec, puis qu'il continue, soit d'être sauvegardé, soit d'être annulé. Lorsque vous utilisez <emphasis>Objets Transactionnels pour Java</emphasis>, <emphasis>TxCore</"
+"emphasis> s'en occupera automatiquement. Pour garantir les propriétés ACID, ces changements d'état doivent être vidés de l'implémentation de la zone de stockage de persistance avant que la transaction puisse être sauvegardée. S'ils ne sont pas vidés, l'application peut assumer que la transaction n'a pas été sauvegardée alors qu'en fait, les changements d'état peuvent toujours résider dans le cache du système d'exploitation, et peuvent être perdus suite à l'échec d'une machine subséquente. Par défaut, <emphasis>TxCore</emphasis> veille à ce que chaque changement d'état soit vidé. Cependant, cette action entraîne une sérieuse diminution de performance de l'application. Pour éviter les vidages d'états d'objets, configurer la variable <literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> à OFF."
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr "Sélectionner une implémentation d'ObjectStore"
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+"<emphasis>TxCore</emphasis> est présenté avec le support de plusieurs implémentations d'ObjectStore différents. L'annexe décrit ces implémentations, comment les sélectionner et comment les configurer (en utilisant la variable de propriété <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> ) sur la base d'un objet à la fois, et indique comment des implémentations supplémentaires peuvent être offertes. "
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr ""
+"La classe <emphasis>TxCore</emphasis>  <classname>StateManager</classname> gère l'état d'un objet et procure tous les mécanismes de support de base requis par un objet dans le but de gérer les états."
+"<classname>StateManager</classname> est responsable de créer et d'enregistrer les ressources qui conviennent en rapport à la persistance et le recouvrement de l'objet transactionnel. Si la transaction est imbriquée, alors <classname>StateManager</classname> propagera également ces ressources entre les transactions enfant et leurs parents au moment de la sauvegarde."
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr "Les objets dans <emphasis>TxCore</emphasis> sont normalement de trois genres différents. Ils peuvent simplement être recouvrables, dans lequel cas, <classname>StateManager</classname> va tenter de générer et de maintenir des informations de recouvrement appropriées pour l'objet (comme les instances de la classe <classname>Input/OutputObjectState</classname>) . De tels objets ont des durées de vie qui ne dépassent pas celle du programme d'application qui les a créés. Les objets peuvent être recouvrables et persistants, dans lequel cas, la durée de vie de l'objet est sensée être plus grande que celle de l'application en train d'accéder ou de créer, de façon à ce qu'en plus de maintenir l'information de recouvrement, <classname>StateManager</classname> va tenter de charger (ou décharger) tout état persistant de l'objet en faisant appel à l'opération <command>activate</command> (<command>deactivate</command>) au moment opportun. Finalement, ces obje!
 ts peuvent ne posséder aucunes de ces capacités, dans lequel cas, aucune information de recouvrement n'est jamais conservée, et l'activation/la désactivation n'est jamais tentée automatiquement. La propriété de l'objet est sélectionnée au moment de la construction de l'objet et ne peut pas être changée par la suite. Ainsi, un objet ne peut pas gagner (ou perdre) ses capacités de recouvrement à un moment quelconque arbitraire pendant sa durée de vie."
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+"Si un objet est recouvrable (ou persistant) alors le <classname>StateManager</"
+"classname> invoquera les opérations <command>save_state</command> (en cours de <command>deactivation</command>), <command>restore_state</"
+"command> (en cours d'activation) et type à plusieurs points pendant l'exécution de l'application. Ces opérations doivent être implémentées par le programmeur puisque <classname>StateManager</classname> n'a pas accès à une description d'exécution du schéma de montage d'un objet arbitraire Java en mémoire et ne peut donc pas implémenter une politique par défaut de conversion de la version de l'objet en mémoire sous sa forme passive. Cependant, les possibilités offertes par <classname>Input/OutputObjectState</classname> rendent l'écriture de ces routines assez simples. Par exemple, l'implémentation <command>save_state</"
+"command> pour une classe <classname>Example</classname> qui possède des variables de membres A,B, et C pourraient simplement être la suivante:"
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr "Pour pouvoir supporter les recouvrements d'objets persistants, il faut que toutes les méthodes d'utilisateurs d'objets <command>save_state</command> et <command>restore_state</command> appellent <command>super.save_state</command> et <command>super.restore_state</command>."
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr "Cette méthode type est utilisée pour déterminer la location dans la mémoire objet où les états d'instances de cette classe seront sauvegardés et finalement restaurés. Il peut s'agir de toute chaîne de caractères valide. Cependant, vous devez éviter d'utiliser le caractère (#) qui est réservé à des répertoires spécifiques utilisés par <emphasis>TxCore</emphasis>."
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr ""
+"L'opération <command>get_uid</command> de <classname>StateManager</"
+"classname> procure un accès lecture-seule au nom du système interne d'un objet pour n'importe quel but du programmeur (comme par exemple l'enregistrement du nom dans un serveur de nommage). La valeur du nom du système interne, ne peut uniquement être déterminé que lorsqu'un objet vient d'être construit - soit par provision d'un paramètre explicite ou en générant un nouvel identifiant quand l'objet est créé."
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr "La méthode <command>destroy</command> peut être utilisée pour retirer des états d'objets de l'ObjectStore. Il s'agit d'une opération atomique, et donc ne supprimera l'état que si la transaction au plus haut niveau, au sein de laquelle on exécute, est finalement sauvegardée. Le programmeur doit obtenir l'accès exclusif à l'objet avant d'appeler cette opération."
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr "Comme le recouvrement de l'objet et la persistance possèdent essentiellement des prérequis d'accompagnement ( la seule différence étant l'endroit où l'information sur les états est mémorisée et dans quel but) <classname>Example</classname> combine efficacement la gestion de ces deux propriétés en un seul mécanisme. C'est à dire qu'il utilise les instances de la classe Input/OutputObjectState pour les buts de recouvrement et de persistance. Un argument supplémentaire passé aux opérations <command>save_state</command> et <command>restore_state</command> permet au programmeur de déterminer le but de chaque invocation, permettant à différentes informations d'étre sauvegardées dans des buts de recouvrement ou de persistance."
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr "Modèles d'objets"
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr "<emphasis>TxCore</emphasis> prend en charge deux modèles d'objets, qui, comme nous allons le démontrer, affectent comment l'état d'objet et le contrôle de concurrence sont implémentés:"
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr "<termdef>SINGLE</termdef>: une seule copie de l'objet existe dans l'application, qui réside dans un JVM unique, et tous les clients doivent adresser leurs invocations à ce serveur. Ce modèle propose une meilleure performance, mais représente un seul point de mise en échec, et risque de ne pas protéger l'objet d'une corruption dans un environnement multifilière quand un seul fil échoue."
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr "Modèle d'objet unique"
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr "MULTIPLE: logiquement, une seule instance d'objet existe, mais de multiples copies en sont distribuées à travers les différents JVM. La performance de ce modèle est pire que celle du modèle UNIQUE, mais propose une meilleure protection contre l'échec."
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr "Modèle d'objets multiples"
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr "Le modèle par défaut est SINGLE (simple et unique). Le programmeur peut remplacer ceci sur la base d'un objet en procurant une instance appropriée de la classe <command>save_state</command> et <command>restore_state</command> au moment de la construction de l'objet."
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr "Le modèle peut être changé entre les instanciations successives de l'objet, par ex., il n'a pas besoin d'être le même pendant toute la durée de vie de l'objet."
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr "Pour pouvoir procurer une classe qui convient à l' <classname>ObjectName</classname> , il est nécessaire de procéder aux étapes suivantes:"
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr "créer une nouvelle instance d' <classname>ObjectName</classname>."
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+"configurer l'attribut du modèle de l'objet en utilisant le nom <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal>."
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr "Par exemple:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr "Résumé"
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+"Pour récapituler, la classe <emphasis>TxCore</emphasis> <classname>StateManager</"
+"classname> gère l'état d'un objet et procure tous les mécanismes de base de prise en charge utiles à un objet dans des buts de gestion des états. Certaines opérations doivent être déterminées par le développeur de la classe. Ces opérations sont: <command>save_state</command>, <command>restore_state</command>, et "
+"<command>type</command>."
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr "boolean save_state (OutputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+"invoqué quand l'état d'un objet pourrait avoir besoin d'être sauvé en vue d'utilisation future - principalement dans des buts de recouvrement ou de persistance. Le paramètre <literal>ObjectType</literal> indique la raison pour laquelle <command>save_state</command> était invoquée par <emphasis>TxCore</emphasis>. Ceci permet au programmeur de sauvegarder divers morceaux d'informations dans le <classname>OutputObjectState</classname> fourni comme premier paramètre selon que l'état est utile au recouvrement ou à la persistance. Comme démontré ci-dessus, la classe <classname>OutputObjectState</"
+"classname> procure des opérations pratiques pour permettre la sauvegarde des instances de tous les types de base de Java. Afin de supporter le recouvrement d'objets persistants en cas de plantage, il est nécessaire que toutes les méthodes <command>save_state</"
+"command> fassent appel à <command>super.save_state</command>."
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr "<command>save_state</command> assume qu'un objet est cohérent de façon interne et que toutes les variables sauvegardées possèdent des valeurs valides. C'est la responsabilité du programmeur de veiller à ce que ce soit le cas."
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr "boolean restore_state (InputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr "Appelé quand l'état d'un objet a besoin d'être restauré dans l'état de celui qui est fourni. A nouveau, le second paramètre permet différentes interprétations de l'état fourni. Afin de prendre en charge le recouvrement d'un plantage pour les objets persistants, il faut que toutes les méthodes <command>restore_state</command> appellent <command>super.restore_state</command>."
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr "String type ()"
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+"Le mécanisme de persistance <emphasis>TxCore</emphasis> a besoin d'un moyen de déterminer le type d'un objet en tant que chaîne de caractère de façon à ce qu'il puisse sauvegarder/restaurer l'état d'un objet vers/en provenance d'une mémoire objet. Par convention, cette information indique la positions de la classe dans la hiérarchie. Par exemple, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr "Exemple"
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr "Considérer la classe de base suivante <classname>Array</classname> dérivée de la classe <classname>StateManager</classname> (dans cet exemple, afin d'illustrer la sauvegarde et la restauration d'un état d'objet, la variable du plus haut index est utilisée pour garder en mémoire l'élément d'un tableau le plus haut qui possède une valeur non-nulle):"
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr ""
+"Les opérations <command>save_state</command>, <command>restore_state</command> et "
+"<command>type</command> peuvent être définies comme suit:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr "Gestion du verrouillage ou contrôle de concurrence"
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr "L'information de contrôle de concurrence  <emphasis>TxCore</emphasis> est maintenue par des systèmes de verrouillage. Les verrous requis pour être partagés entre des objets issus de divers processus, pourraient être hébergés dans une mémoire de verrouillage, semblable à la fonctionnalité de mémoire d'objet présentée auparavant. La mémoire de verrouillage proposée par <emphasis>TxCore</emphasis> possède une interface d'accès limité, de façon à pouvoir être implémentée de façons différentes. Ainsi, les mémoires de verrouillage sont implémentées dans une mémoire partagée; sur un système de fichiers Unix (sous plusieurs formes), et sous la forme d'une mémoire accessible à distance. On peut trouver en annexe davantage d'informations sur les mémoires objet disponibles dans <emphasis>TxCore</emphasis>."
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr "Comme avec toutes les classes <emphasis>TxCore</emphasis>, les mémoires de verrouillage par défaut sont de pures implémentations Java. Pour accéder à la mémoire partagée et à d'autres implémentations, il faut utiliser les méthodes natives."
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr "Sélectionner une implémentation de mémoire de verrouillage"
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+"<emphasis>TxCore</emphasis> est proposé avec le support de plusieurs implémentations de mémoires d'objets. Si le modèle d'objet utilisé est SINGLE, alors aucune mémoire de verrouillage n'est requise pour maintenir les verrous, puisque l'information sur l'objet n'en est pas exportée. Cependant, si le modèle MULTIPLE est utilisé, alors différents environnements d'exécution (processes, machines virtuelles Java) pourraient avoir besoin de partager des informations de contrôle de concurrence. Le type d'implémentation de la mémoire de verrouillage à utiliser peut être spécifiée pour tous les objets dans le cadre d'un environnement d'exécution en utilisant la variable de propriété <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal>. Actuellement, elle peut avoir les valeurs suivantes:"
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr "BasicLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr "Il s'agit d'une implémentation en-mémoire qui ne permet pas, par défaut, d'autoriser le partage d'informations sauvegardée entre les environnements d'exécution. Le programmeur d'application est responsable du partage des informations sauvegardées."
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr "BasicPersistentLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+"Il s'agit de l'implémentation par défaut, qui stocke les informations de verrouillage à l'intérieur du système de gestion de fichiers local. Ainsi, des environnements d'exécution qui partagent la même mémoire de fichiers peuvent partager des informations de contrôle de concurrence. La racine du système de fichiers dans laquelle l'information de verrouillage est écrite est le répertoire <filename>LockStore</"
+"filename> contenu dans le répertoire d'installation <emphasis>TxCore</emphasis>. Il peut être remplacé en cours d'exécution en configurant la variable de propriété <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> en fonction, ou bien en plaçant la location dans <literal>CLASSPATH</literal>:"
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr "<para>ou</para>"
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr "Si aucunes de ces approches n'est prise, la location par défaut sera au même niveau que le répertoire de l'installation <filename>etc</filename>."
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr "LockManager"
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "Le contrôleur de concurrence est implémenté dans la classe <classname>LockManager</classname> qui propose un comportement raisonnable par défaut, tout en permettant au programmeur d'effectuer des changements de sémantique particulières de la classe qu'il est en train de programmer, s'il l'estime utile. L'interface de programmation primaire vers le contrôleur de concurrence est via l'opération setlock. Par défaut, la version modifiée de <emphasis>TxCore</emphasis> implémente un verrouillage strict en deux phases suivant une politique d'écriture unique sur la base d'un objet à la fois, à lecteurs multiples. L'acquisition de verrous est contrôlée par le programmeur, puisque de la même manière que <classname>StateManager</classname> ne peut pas déterminer si une opération modifie un objet, <classname>LockManager</classname> ne peut pas déterminer si une opération a besoin d'un verrou lecture ou écriture. La libération du verrou, cependant, est no!
 rmalement sous le contrôle du système et ne nécessite aucune intervention de la part du programmeur. Cela garantit que la propriété en deux phases puisse être correctement maintenue."
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+"La classe <classname>LockManager</classname> est surtout responsable pour la gestion des demandes de mise en place d'un verrou sur un objet ou pour libérer un verrou, selon le cas. Cependant, comme il est dérivé de <classname>StateManager</"
+"classname>, il peut également contrôler si quelque fonctionnalité héritée est appelée. Par exemple, si une demande d'installation un verrou d'écriture est accordée, alors <classname>LockManager</classname> invoque l'objet modifié directement en assumant que la configuration d'un verrou écriture implique que l'opération 'invoke' (appel) doit être en cours de modification de l'objet. Cela peut, à son tour, causer la sauvegarde de l'information de recouvrement, si toute fois l'objet est recouvrable. De la même manière, l'acquisition de verrous cause l'appel de la commande <command>activate</command>."
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+"Ainsi, <classname>LockManager</classname> est directement responsable pour activer/désactiver les objets persistants, et pour enregistrer les <classname>Resources</classname> pour gérer le contrôle de concurrence. Etant responsable de la classe du <classname>StateManager</classname>, et pour l'enregistrement de <classname>Resources</classname> en vue de la manipulation des états recouvrables/persistents et le recouvrement d'objets. Le programmeur d'applications installe tout simplement les verrous qui conviennent, démarre et termine les transactions, et prolonge des méthodes <command>save_state</command>, <command>restore_state</"
+"command><command>save_state</command> et <command>restore_state</"
+"command> de <classname>StateManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr "L'opération <command>setlock</command> doit être paramétrée avec le type de verrou qui convient (<literal>READ</literal> / <literal>WRITE</literal>), et le nombre de tentatives d'obtention du verrou avant d'abandonner. Si un conflit de verrouillage avait lieu, on assisterait à l'un des scénarios suivants:"
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+"Si la valeur de retransmission est égale à <literal>LockManager.waitTotalTimeout</"
+"literal>, alors le fil qui appelle <command>setlock</command> sera bloqué jusqu'à ce que le verrou soit libéré, ou que le délai spécifié pendant lequel <literal>REFUSED</literal> est retourné, soit échu."
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr ""
+"Si le verrou ne peut pas être obtenu au départ, alors <classname>LockManager</"
+"classname> tentera le nombre spécifié d'essais, et attendra le temps fixé par la valeur du temps d'inactivité entre chaque tentative qui échoue. La valeur par défaut est de 100 essais, chaque essai étant séparé par un délai de 0.25 secondes. Les délais entre les essais sont indiqués en micro-secondes."
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr "Si un conflit de verrouillage a lieu, l'implémentation en cours interrompt tout simplement les demandes de verrouillage, empêchant ainsi les interblocages, plutôt que de proposer un scénario de détection d'interblocages. Si le verrou demandé est obtenu, l'opération setlock retournera la valeur <literal>GRANTED</literal> (accordé), sinon elle retournera la valeur <literal>REFUSED</literal> (refusé). C'est la responsabilité du programmeur de veiller à ce que le reste du code d'une opération, ne soit seulement exécuté que si la demande de verrouillage est accordée. Voici ci-dessous des exemples d'utilisation de l'opération <command>setlock</command>."
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr "Le mécanisme de contrôle de concurrence est intégré dans le mécanisme d'action atomique, garantissant ainsi qu'au fur et à mesure que les verrous sont accordés pour un objet, la bonne information est enregistrée auprès de l'action atomique actuellement en cours d'exécution. C'est la responsabilité du programmeur de libérer les verrous quand il sont requis, par le biais de l'opération <command>releaselock</command> correspondante."
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr "Politique de verrouillage"
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+"A l'encontre de nombreux autres systèmes, les verrous de <emphasis>TxCore</emphasis> ne sont pas des types de systèmes spéciaux. Ils sont plutôt des instances d'autres objets <emphasis>TxCore</emphasis> (la classe <emphasis>TxCore</emphasis> qui est également dérivée de <emphasis>TxCore</emphasis> de façon à ce que les verrous deviennent persistants si besoin est et puissent être nommés simplement). De plus, <classname>LockManager</classname> n'a aucune connaissance de la politique par laquelle des demandes de verrous sont octroyées. De telles informations sont maintenues dans les instances de classe <classname>LockManager</classname> qui fournissent des opérations (l'opération <literal>conflictsWith</literal>) par laquelle <classname>LockManager</"
+"classname> peut déterminer si deux verrous sont en conflit ou non. Cette séparation est importante car elle permet au programmeur de dériver des types de nouveaux verrous de la classe de base <classname>Lock</classname> et en procurant des définitions qui conviennent sur les opérations en conflit, des niveaux améliorés de concurrence sont possibles."
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+"La classe <classname>Lock</classname>offre une opération<command>modifiesObject</"
+"command> qui utilise <classname>LockManager</classname> pour déterminer si l'acceptation de cette demande de verrouillage requiert un appel sur 'modifié'. Cette opération est proposée de façon à ce que les autres modes de verrouillage tels que lecture ou écriture puissent être pris en charge. La classe proposée <classname>Lock</classname> prend en charge la politique traditionelle lecteur multiple/une seule écriture."
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr "Construction et destruction d'objets"
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr "Souvenez-vous que les objets <emphasis>TxCore</emphasis> peuvent être recouvrables, recouvrables et persistants, ou ni l'un, ni l'autre. De plus, chaque objet possède un nom interne unique. Ces attributs ne peuvent être déterminés que quand l'objet est construit. Ainsi, <classname>LockManager</classname> procure deux constructeurs protégés à utiliser par les classes dérivées, qui remplissent chacun un but bien particulier:"
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr "LockManager ()"
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr "Ce constructeur autorise la création de nouveaux objets, c'est à dire qu'on assume qu'il n'existe aucun état préalable."
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr "LockManager (int ObjectType, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr "Comme ci-dessus, le constructeur autorise la création de nouveaux objets, c'est à dire qu'il n'existe aucun état préalable. Le paramètre <literal>ObjectType</literal> détermine si un objet est simplement recouvrable (indiqué par <literal>RECOVERABLE</literal>), recouvrable et persistent (indiqué par <literal>RECOVERABLE</literal>) ou bien ni l'un, ni l'autre (<literal>RECOVERABLE</literal>). Si un objet est marqué persistant, alors l'état de l'objet sera enregistré dans l'une des mémoires objet. Le paramètre partagé n'a un sens que si c'est <literal>RECOVERABLE</literal>; si <literal>attr</literal> n'est pas nul et que le modèle de l'objet est <literal>SINGLE</literal> (comportement par défaut), alors l'état de recouvrement de l'objet est maintenu à l'intérieur de l'objet lui-même (par ex. il n'a pas de représentation externe), sinon une mémoire objet (volatile) sera utilisée pour enregistrer l'état de l'objet entre les actions atomiques."
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr "Les constructeurs de nouveaux objets persistants devraient utiliser les actions atomiques entre eux. Cela assurera que l'état de l'objet soit automatiquement inscrit dans la mémoire objet, soit quand l'action est sauvegardée dans le constructeur, ou si une action de clôture (enclosing action) existe, au moment où l'action au niveau supérieur est soumise. Des exemples à venir dans ce chapitre, illustrent ce point en détails."
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr "LockManager(Uid objUid)"
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr "Ce constructeur autorise l'accès à un objet persistant existant, dont le nom interne est déterminé par le paramètre <literal>objUid</literal>. Les objets construits en utilisant cette opération verront leur état initial (identified by <literal>objUid</literal>) chargé automatiquement dans le système à partir d'une mémoire objet."
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr "LockManager(Uid objUid, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr "Comme ci-dessus, ce constructeur autorise l'accès à un objet persistant existant, dont le nom interne est déterminé par le paramètre <literal>objUid</literal>. Les objets construits en utilisant cette opération verront normalement leur état initial  (identifié par <literal>objUid</literal>) chargé automatiquement dans le système à partir d'une mémoire objet. Si le paramètre attribut n'est pas nul, et que le modèle de l'objet est  <literal>SINGLE</literal> (le comportement par défaut), alors l'objet ne sera pas réactivé au départ de chaque transaction à un niveau supérieur."
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr "Le destructeur d'une classe définie par un programmeur doit appeler l'opération héritée 'terminate' pour informer le mécanisme de gestion des états que l'objet est prêt à être détruit, sinon vous risquer d'obtenir des résultats imprédictibles."
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""
+"Comme <classname>LockManager</classname> hérite de "
+"<classname>StateManager</classname>, il passera n'importe quelle instance d'"
+"<classname>ObjectName</classname> à la classe du <classname>StateManager</"
+"classname> . Ainsi, il est possible de configurer l'objet modèle "
+"<classname>StateManager</classname> comme expliqué plus haut."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_03.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_03.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,697 @@
+# translation of Chapter_03.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_03\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-07 16:32+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr "Problèmes de transactions en général"
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr "Problèmes de transactions avancées avec TxCore"
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr "Les actions atomiques (transactions) peuvent être utilisées par les programmeurs d'application et les développeurs de classe. Ainsi des opérations entières (ou parties d'opérations) peuvent être rendues atomiques suivant les besoins sémantiques d'une opération particulière. Ce chapitre décrira certaines questions plus subtiles à propos de l'utilisation des transactions en général et de <emphasis>TxCore</emphasis> en particulier."
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr "Vérifier les transactions"
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+"Dans une application multifilière, les thread mutiples peuvent être associés à une transaction pendant sa durée de vie,c'est à dire que les threads partagent le même contexte. De plus, il est possible que si un thread termine une transaction, il est possible que d'autres threads soient toujours actifs. Dans un environnement distribué, il peut être difficile de s'assurer que tous les treads aient terminé une transaction lorsque celle-ci s'achève. Par défaut, <emphasis>TxCore</emphasis> émettra un message d'avertissement si un thread termine une transaction alors que d'autres threads sont toujours actifs, tout en permettant à la transaction de se terminer. Il existe d'autres solutions à ce problème, par ex., bloquer le thread qui termine la transaction jusqu'à ce que tous les autres threads se soient dissociés du contexte de la transaction. Ainsi, <emphasis>TxCore</emphasis> propose la classe <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname>, qui permet que la politique de terminaison de transaction/thread soit remplacée. Chaque transaction possède une instance de cette classe qui lui est associée, et les programmeurs d'application peuvent proposer leurs propres implémentations sur la base d'une transaction à la fois."
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr "Lorsqu'un thread tente de terminer la transaction et qu'il y a toujours des threads actifs, le système appellera la méthode de vérification <classname>CheckedAction</classname> sur l'objet de la transaction. Les paramètres de la méthode de vérification sont les suivants:"
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr "isCommit"
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr "Indique si une transaction est en cours de processus de soumission ou est refoulée."
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr "actUid"
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr "L'identifiant de la transaction."
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr "list"
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr "une liste de tous les fils actuellement indiqués 'actifs' dans la transaction."
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr "Quand 'vérification' retourne, la terminaison de la transaction continue. De toute évidence, à ce point, l'état de la transaction peut être différent de l'état qui correspond au moment où 'vérification' a été appelé, par ex., la transaction a pu avoir été soumise ultérieurement."
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr "Collection de statistiques"
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr ""
+"Par défaut, JBossTS ne conserve pas d'archives des transactions. Cependant, en configurant la variable de propriété <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> à OUI, le service de transaction conservera des informations sur le nombre de transactions créées, et sur leurs devenus. Cette information peut être obtenue au moment de l'exécution d'une application transactionnelle par la classe <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname>:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr "L'optimisation des soumissons de dernier ressort"
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr "Dans certains cas, il est nécessaire d'enrôler des participants qui ne sont pas à soumission à deux-phases dans le cadre de la transaction à deux phases. S'il n'y a qu'une seule ressource, alors il n'y a pas besoin d'une soumission en deux phases. Mais, que faire s'il y a plusieurs ressources dans une transaction? Dans ce cas, le LRCO (Last Resource Commit Optimization) entre en jeu. Dans le cas d'une ressource unique à une seule phase (par ex., qui peut seulement être soumise ou refoulée sans préparation), il est possible d'être listé dans une transaction à ressources de soumission en deux-phases. Le coordinateur traite la ressource à une-phase légèrement différemment, dans le sens où elle exécute la phase de préparation sur toutes les autres ressources d'abord, et si elle a l'intention de soumettre la transaction, elle passe le contrôle à une ressource à une-phase. Si elle soumet, alors le coordinateur enregistre la décision de soumettre et !
 tente de soumettre les autres ressources également."
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr ""
+"Pour pouvoir utiliser le LRCO, votre participant doit implémenter l'interface <classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> et être enregistré dans la transaction par l'opération additionelle <command>BasicAction</"
+"command>, puisque cette opération s'attend à des instances de <classname>AbstractRecord</classname>, vous devez créer une instance <classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> et proposer votre participant en tant que paramètre de constructeur, comme ci-dessous:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr "Transactions imbriquées"
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr "Il n'existe pas de constructions spéciales pour l'imbrication de transactions: si une action démarre alors qu'une autre action est en cours, alors elle est automatiquement imbriquée. Cela permet une structure modulaire des applications, par laquelle des objets peuvent être implémentés par le biais d'actions atomiques dans leurs opérations sans que le programmeur d'applications n'ait à se soucier des applications qui les utilise, c'est à dire si oui ou non les applications vont utiliser des actions atomiques également. Ainsi, dans certaines applications, les actions sont au niveau supérieur, alors que dans d'autres, elles peuvent être imbriquées. Les objets inscrits de cette manière peuvent être partagés entre les programmeurs d'application, et <emphasis>TxCore</emphasis> garantira leur cohérence."
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr "Si une action imbriquée est interrompue, alors tout son travail sera annulé, malgré que le verrouillage strict en deux-phases implique que tout verrou acquis sera retenu jusqu'à ce que l'action au niveau supérieur soit soumise ou interrompue. Si une action imbriquée est soumise, alors le travail effectué ne sera soumis par le système que si l'action au niveau supérieur est soumise. Si l'action au niveau supérieur est interrompue, alors tout le travail sera annulé."
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr "La soumission ou l'interruption d'une action imbriquée n'influence pas automatiquement le résultat d'une action dans laquelle il est imbriqué. C'est en fonction de l'application, et cela permet à un programmeur de structurer des actions atomiques pour contenir les fautes, défaire un travail, etc."
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr "Soumettre une transaction de manière asynchrone"
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr "Par défaut, JBossTS exécute le protocole de soumission d'une transaction au niveau supérieur d'une manière synchronisée, par ex., toutes les ressources enregistrées seront invitées à se préparer en ordre par un simple fil, puis seront invitées à être soumises à être repositionnées. Cela comporte plusieurs désavantages possibles:"
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr "Dans le cas de plusieurs ressources enregistrées, l'opération 'prepare' peut être logiquement appelée en parallèle sur chaque ressource. Le désavantage, c'est que si la ressource 'précédente' de la liste des ressources enregistrées force un repositionnement pendant 'prepare', il est possible que plusieurs opérations auront été effectuées pour rien."
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr "Dans le cas où l'application ne requiert pas de rapport heuristique, la seconde phase du protocole de soumission peut être fait de manière asynchrone, puisque son succès ou son échec ne sont pas importants."
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+"De ce fait,  <emphasis>JBossTS</emphasis> procure des options d'exécution pour activer des optimisations possibles des opérations d'enfilage. En configurant la variable de l'environnement <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> à <literal>OUI</literal>, au cours de la phase 'prepare', un fil distinct sera créé pour chaque participant dans la transaction. En configurant <literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> à"
+"<literal>OUI</literal>, un fil séparé sera créé pour compléter la seconde phase de la transaction si on n'a pas besoin d'information sur les résultats heuristiques."
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr "Transactions indépendantes au niveau supérieur"
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr ""
+"En plus des actions atomiques imbriquées et supérieures normales, <emphasis>TxCore</"
+"emphasis> prend en charge également des actions indépendantes au niveau supérieur, qui peuvent être utilisées pour relaxer  la sériabilité de manière contrôlée. Une action indépendante au niveau supérieur peut être exécutée à partir de n'importe où, dans une autre action atomique, et se comporte exactement comme une action normale au niveau supérieur, c'est à dire que ses résultats sont rendus permanents une fois soumis, et ne seront pas annulés rétroactivement si une des actions dans laquelle ils auraient pu être imbriqués, échoue."
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr "Action indépendante au niveau supérieur"
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr "affiche une imbrication typique des actions atomiques, où l'action B est imbriquée dans l'action A. Action C est logiquement imbriquée dans l'action B car son opération 'Begin' est appelée alors que B est active. L'action C est une action indépendante de niveau supérieur, donc C sera soumis ou échouera indépendamment des autres actions au sein de la structure. Compte tenu de la nature des actions au niveau supérieur, on doit les utiliser avec attention et seulement dans des situations qui les justifient."
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr "Les actions au niveau supérieur peuvent être utilisées au sein d'une application en déclarant et en utilisant des instances de la classe <classname>TopLevelTransaction</classname>.<classname>. Elles peuvent être utilisées de la même manière que d'autres transactions."
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr "Transactions dans save_state and restore_state"
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+"On doit prêter attention lorsqu'on écrit les opérations <command>save_state</command> et "
+"<command>restore_state</command> pour s'assurer qu'aucune action atomique n'ait débuté (soit explicitement dans l'opération, ou implicitement à travers l'utilisation d'autres opérations). Cette restriction survient du fait que <emphasis>TxCore</emphasis> peut appeler <command>restore_state</command> en tant que faisant partie de son processus de soumission, résultant dans une tentative d'exécuter une action atomique pendant les phases de soumission ou d'interruption d'une autre action. Cela peut enfreindre les propriétés d'atomicité de l'action soumise (échouée) et ce n'est donc pas recommandé."
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr "Exemple"
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr "Si on considère l'exemple du tableau donné précédemment, les opérations set and get pourraient être implémentées comme indiqué ci-dessous."
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr "Il s'agit d'une simplification du code, faisant abstraction des conditions d'erreurs et des exceptions."
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr "Poubelle ramassant des objets"
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr "Les objets Java sont effacés quand la poubelle détermine s'ils ne sont plus utiles. L'effacement d'un objet qui est actuellement sous le contrôle d'une transaction doit être abordé avec soin, car si l'objet est manipulé dans la transaction, son sort est effectivement déterminé par la transaction. Ainsi, en dépit des références à un objet transactionnel contenu dans une application, <emphasis>TxCore</emphasis> gardera ses propres références pour veiller à ce que l'objet ne soit pas considéré comme un déchet collecté en fin de transaction."
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr "Timeouts de transaction"
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr "Par défaut, les transactions survivent jusqu'à ce qu'elles soient terminées par l'application qui les a créées ou en cas d'interruption. Cependant, il est possible de déterminer un timeout (en secondes) sur la base d'une transaction, de façon à ce que si la transaction n'est pas terminée avant que le délai n'expire, elle sera automatiquement refoulée."
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr ""
+"Dans <emphasis>TxCore</emphasis>, la valeur du délai est fournie au constructeur <classname>AtomicAction</classname> par un paramètre. Si une valeur (par défaut) <literal>AtomicAction.NO_TIMEOUT</literal> est proposée, alors, la transaction sera interrompue automatiquement. Toute autre valeur positive pour le timeout est prise en secondes pour la transaction. Une valeur de zéro est considérée comme une valeur de timeout global, qui peut être fournie par la propriété <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. A moins d'effectuer un changement, la valeur est de 60 secondes."
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+"Quand une valeur est créée au niveau supérieur avec un timeout non-nul, cette valeur est susceptible d'être refoulée si la transaction n'a pas été complétée dans la limite du temps (en secondes) imparti. <emphasis>JBossTS</emphasis> utilise un 'reaper thread' (un fil) qui contrôle toutes les transactions créées localement, et les force à être refoulées quand leur délai échoue. Afin d'éviter que ce thread ne consume le temps d'application, il n'est exécuté que périodiquement. La période de contrôle par défaut est de 120000 millesecondes, mais peut être changée en configurant la variable de propriété <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> à une autre valeur valide, en microsecondes. Alternativement, si la valeur de <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> est fixée à <literal>DYNAMIC</literal>, le 'transaction reaper' sera opérationnel quand une transaction se termine. Ceci a pour avantage de terminer les transactions tôt, mais pourrait souffrir du réordonnancement continu du 'reaper thread'."
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""
+"Si une valeur 0 est spécifiée pour le timeout d'une transaction à niveau supérieur (ou qu'aucun timeout n'est spécifié), alors <emphasis>JBossTS</emphasis> n'imposera pas de timeout à la transaction, par ex., et elle sera autorisée à continuer indéfiniement. Ce timeout par défaut peut être changé en configurant la variable de propriété <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> quand vous utilisez <emphasis>ArjunaCore</emphasis>, <emphasis>ArjunaJTS</"
+"emphasis>, ou <literal>com.arjuna.ats.jts.defaultTimeout</literal> en combinaison avec <emphasis>ArjunaJTS</emphasis>, avec une valeur de timeout requise en secondes."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_04.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_04.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,321 @@
+# translation of Chapter_04.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_04\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-08 09:42+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr "Astuces et conseils"
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr "Général"
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr "Utiliser les transactions dans constructeurs"
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr "Dans ce manuel, les exemples utilisaient des transactions pour l'implémentation de constructeurs de nouveaux objets persistants. Ceci est délibéré car c'est en vue de garantir la propagation correcte de l'état de l'objet dans l'ObjectStore. Souvenez-vous bien que l'état d'un objet modifié persistant est uniquement inscrit dans l'ObjetStore que lorsqu'une transaction est soumise au niveau supérieur. Ainsi, si la transaction du constructeur est au niveau supérieur et qu'elle est soumise, alors l'objet nouvellement créé, est inscrit dans le store et devient disponible immédiatement. Si, cependant, la transaction du constructeur est soumise, mais qu'elle est imbriquée parce que d'autres transactions ont été démarrées avant que la création d'objet ne soit exécutée, l'état ne sera inscrit que si toutes les transactions parent sont soumises."
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr "D'un autre côté, si le constructeur n'utilise pas de transactions, alors, il est possible qu'on se heurte à des incohérences de système. Ainsi, si aucune transaction n'est active quand un objet est créé, alors son état ne sera pas sauvegardé dans le store avant la prochaine occasion quand l'objet sera modifié sous le contrôle de quelque transaction."
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr "Considérer le simple exemple suivant:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+"Dans cet exemple, deux objets sont créés en dehors du contrôle de l'action A du niveau supérieur. <literal>obj1</literal> est un nouvel objet; <literal>obj2</literal> un ancien objet existant. Quand l'opération 'remember' (mémoire) de <literal>obj2</"
+"literal> est invoquée, l'objet est activé et le Uid de <literal>obj1</literal> est mémorisé. Comme cette action est soumise, l'état persistant de <literal>obj2</literal> pourrait maintenant contenir l'Uid de <literal>obj1</literal>. Cependant, l'état de <literal>obj1</literal> lui-même n'a pas été sauvegardé, car il n'a pas été manipulé sous le contrôle de quelque action. En fait, à moins d'avoir été modifié sous le contrôle de quelque action par la suite dans l'application, l'état ne sera sauvegardé. Si, malgré tout, le constructeur a utilisé une action atomique, l'état de <literal>obj1</literal> aura automatiquement été sauvegardé au moment de la construction et cette incohérence n'aurait pas pu survenir."
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr "Plus d'informations sur save_state and restore_state"
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr "<emphasis>TxCore</emphasis> peut faire appel effectivement à l'opération définie-utilisateur <command>save_state</command> d'un objet à n'importe quel moment au cours de la durée de vie d'un objet, y compris pendant l'exécution du corps du constructeur de l'objet (particulièrement s'il utilise des actions atomiques). Il est important, donc, que toutes les variables sauvegardées par save_state soient correctement initialisées."
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+"On doit prendre des précautions lorsqu'on écrira les opérations <command>save_state</"
+"command> et <command>restore_state</command> pour s'assurer qu'aucune transaction n'ait démarré (que ce soit explicitement dans l'opération ou bien implicitement à travers une autre opération). Cette restriction se présente du fait que <emphasis>TxCore</emphasis> peut faire appel à <command>restore_state</command> dans le cadre de son processus de soumission, en tentant d'exécuter une transaction atomique, pendant la phase de validation ou d'abandon d'une autre transaction. Ceci peut porter atteinte aux propriétés atomiques de la transaction en cours de soumission (abandon) et n'est donc pas encouragé."
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"Dans le but de prendre en charge le recouvrement d'un plantage pour des objets persistants, il faut que faut que toutes les méthodes <literal>save_state</literal> et <literal>restore_state</literal> d'objets d'utilisateurs, fassent appel à <command>super.save_state</command> et à "
+"<command>super.restore_state</command>."
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr "Packing Objects"
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr "Tous les types de base dans Java (int, long, etc.) peuvent être sauvegardés ou restaurés à partir d'une instance <classname>Input/OutputObjectState</classname> en utilisant les routines 'pack' (et 'unpack') proposées par <classname>Input/OutputObjectState</classname>. Cependant, ces routines devraient être traitées de manière différente parce que 'packing objects' entraîne des problèmes supplémentaires de dénomination, c'est à dire que deux références distinctes peuvent en fait pointer vers le même objet. Par exemple:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr "Ici, s1 et s2 pointent tous deux vers la même chaîne de caractères et une implémentation naïve de <command>save_state</command> pourrait aboutir à la double copie de la même chaîne de caractère. De la perspective de <command>save_state</command>, c'est tout simplement inefficace. Cependant, <command>restore_state</command> est maintenant incorrect car deux fils seraient 'unpacked' dans des zones de mémoire séparées, détruisant ainsi le système de nomenclature de l'information de départ. La version actuelle de TxCore va permettre de procéder à ces routines avec des références d'objets séparées."
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr "Utilisation directe de StateManager"
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr "Les exemples présentés dans cet ouvrage, ont toujours dérivé les classes d'utilisateur de <classname>LockManager</classname> et ce pour deux raisons. Tout d'abord, et surtout, les contraintes de sérialisabilité des actions atomiques l'exigent, et deuxièmement, cela réduit le niveau d'intervention du programmeur. Malgré tout, si l'on a seulement besoin d'un accès aux mécanismes de persistance et de recouvrement <emphasis>TxCore</emphasis>, il est possible d'utiliser une dérivation directe d'une classe utilisateur de <classname>StateManager</classname>."
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr "Les classes qui dérivent directement de <classname>StateManager</classname> doivent utiliser ses mécanismes de gestion d'états explicitement (ces interactions sont normalement effectuées par <classname>LockManager</classname>). Du point de vue du programmeur, cela aboutit à utiliser correctement les opérations activer, désactiver et modifier, car les constructeurs du <classname>StateManager</classname> sont en fait identiques à celles de <classname>StateManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr "<command>Activate</command> charge un objet de l'ObjectStore. L'UID de l'objet devra déjà avoir été configuré par le constructeur and l'objet doit exister dans la zone de stockage. Si un objet est lu correctement, alors <command>restore_state</command> est appelé pour construire un objet dans la mémoire.<command>Activate</command> est idempotente, c'est à dire qu'une fois qu'un objet a été activé, les appels qui suivent sont ignorés. Le paramètre représente le nom root de l'ObjetStore qui cherche l'objet. Une valeur nulle signifie 'utiliser la zone de stockage par défaut'."
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr "L'inverse d'activer. Appelle tout d'abord <command>save_state</command> pour construire une image compacte de l'objet qui est alors sauvegardée dans l'OBjectStore. Les objets ne sont uniquement sauvegardés que s'ils ont été modifiés depuis qu'ils ont été activés. Le paramètre représente le nom root de l'ObjetStore dans lequel l'objet devrait avoir été sauvegardé. Une valeur nulle signifie 'utiliser le store par défaut'."
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr "void modified ()"
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr "<emphasis>Doit</emphasis> être appelé avant de modifier l'objet en mémoire. S'il n'est pas appelé, l'objet ne sera pas sauvegardé dans l'ObjetStore par 'désactiver'."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_05.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_05.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,941 @@
+# translation of Chapter_05.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_05\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-08 09:45+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr "Outils"
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr "Ce chapitre explique comment démarrer et utiliser la structure outils et quels outils sont disponibles."
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr "Démarrer les outils Service Transaction"
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr "La façon de démarrer les outils de service transaction change suivant les systèmes d'exploitation qu'on utilise:"
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr "Windows"
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr "Cliquer deux fois sur le lien 'Start Tools' dans le groupe de programme JBoss Transaction Service du menu de démarrage."
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr "Unix"
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr "Démarrer une shell bash et taper:"
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr ""
+"Une fois que vous avez fait cela, la fenêtre-outils apparaîtra. C'est l'aire de lancement pour tous les outils envoyés dans <emphasis>JBoss Transaction "
+"Service</emphasis>. En haut de la fenêtre, vous remarquerez une barre de menu qui comporte quatre éléments:"
+
+#. Tag: title
+#: Chapter_05.xml:39
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr "Le menu <menuchoice><guimenu>Fichiers</guimenu></menuchoice> "
+
+#. Tag: term
+#: Chapter_05.xml:44
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr "Ouvrir le navigateur JMX"
+
+#. Tag: para
+#: Chapter_05.xml:45
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr "Ceci affiche la fenêtre du navigateur JMX (voir ***Utiliser le navigateur JMX pour davantage d'informations sur la façon d'utiliser le navigateur JMX)."
+
+#. Tag: term
+#: Chapter_05.xml:49
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr "Ouvrir le navigateur ObjectStore"
+
+#. Tag: para
+#: Chapter_05.xml:50
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr "Ceci affiche la fenêtre du navigateur JBossTS Object Store (voir ***Utiliser le navigateur JBossTS Object pour davantage d'informations sur la façon d'utiliser le navigateur JBossTS Object)."
+
+#. Tag: term
+#: Chapter_05.xml:54
+#, no-c-format
+msgid "Settings"
+msgstr "Settings (Paramètres)"
+
+#. Tag: para
+#: Chapter_05.xml:55
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr "Cette option ouvre le dialogue de paramètres qui vous permet de configurer les différents outils disponibles."
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Exit"
+msgstr "Exit (Sortie)"
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr "Ceci ferme la fenêtre d'outils et fait disparaître l'application, tous changements non sauvegardés/non confirmés, seront perdus."
+
+#. Tag: title
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr "Le menu <menuchoice><guimenu>Performance</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Open"
+msgstr "Open (Ouverture)"
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr "Ceci ouvre la fenêtre de performance - voir <xref linkend=\"Performance_Tool\"/> pour davantage d'informations sur l'outil performance."
+
+#. Tag: term
+#: Chapter_05.xml:77
+#, no-c-format
+msgid "Close All"
+msgstr "Close All (Tout fermer)"
+
+#. Tag: para
+#: Chapter_05.xml:78
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+"Ceci ferme toutes les fenêtres de performance - voir <xref "
+"linkend=\"Performance_Tool\"/> pour plus d'informations sur l'outil de performance."
+
+#. Tag: title
+#: Chapter_05.xml:87
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr "Le menu <menuchoice><guimenu>Window</guimenu></menuchoice> "
+
+#. Tag: term
+#: Chapter_05.xml:90
+#, no-c-format
+msgid "Cascade Windows"
+msgstr "Cascade Windows (fenêtres en cascade)"
+
+#. Tag: para
+#: Chapter_05.xml:91
+#, no-c-format
+msgid "This arranges the windows in a diagonal line to you find a specific window."
+msgstr "Ceci organise les fenêtres sur une diagonale afin de vous permettre de trouver une fenêtre en particulier."
+
+#. Tag: term
+#: Chapter_05.xml:95
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr "1. XXXXXXX"
+
+#. Tag: para
+#: Chapter_05.xml:96
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr "Pour chaque fenêtre visible couramment, une option de menu supplémentaire sera disponible ici. Sélectionner cette option du menu positionneront les fenêtres associées à l'avant du desktop."
+
+#. Tag: title
+#: Chapter_05.xml:104
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr "Le menu <menuchoice><guimenu>Help</guimenu></menuchoice> "
+
+#. Tag: term
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "About"
+msgstr "A propos de "
+
+#. Tag: para
+#: Chapter_05.xml:108
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr "Ceci affiche la fenêtre 'A propos de' qui contient les informations produit."
+
+#. Tag: title
+#: Chapter_05.xml:119
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr "Utiliser l'outil de performance"
+
+#. Tag: para
+#: Chapter_05.xml:121
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr "L'outil de performance peut être utilisé pour afficher les informations sur la performance du service de transactions. Cette information est collectée en utilisant le Bean Performance JMX, ce qui signifie que le service de transaction a besoin d'être intégré dans un serveur d'applications pour pouvoir donner une information de performance."
+
+#. Tag: para
+#: Chapter_05.xml:123
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+"L'information sur la performance est affiché par un graphe multi-séries. Pour voir ce graphe, ouvrir tout simplement une fenêtre de performance en sélectionnant <menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+
+#. Tag: para
+#: Chapter_05.xml:125
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr "Cette fenêtre, qui apparaît maintenant sur l'écran, contient un graphe multi-séries, qui peut afficher les informations suivantes:"
+
+#. Tag: para
+#: Chapter_05.xml:130
+#, no-c-format
+msgid "Number of transactions."
+msgstr "Nombre de transactions."
+
+#. Tag: para
+#: Chapter_05.xml:135
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr "Nombre de transactions soumises"
+
+#. Tag: para
+#: Chapter_05.xml:140
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr "Nombres de transactions abandonnées."
+
+#. Tag: para
+#: Chapter_05.xml:145
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr "Nombre de transactions imbriquées."
+
+#. Tag: para
+#: Chapter_05.xml:150
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr "Nombres d'heuristiques soulevés."
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr "Pour actionner ou éteindre ces séries, sélectionnez tout simplement l'option menu du menu séries."
+
+#. Tag: para
+#: Chapter_05.xml:158
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr "Lorsque les séries sont actionnées, elles apparaissent dans la légende en bas du graphe. La couleur qui apparaît à côté de nom des séries (comme par exemple, Transactions créées) est la couleur de la ligne qui représente ces données."
+
+#. Tag: para
+#: Chapter_05.xml:161
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr "Les données qui apparaissent sont paramétrées en fonction de la durée. L'axe-Y représente le nombre de transactions et l'axe-X la durée."
+
+#. Tag: para
+#: Chapter_05.xml:164
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr "A tout point, l'échantillonnage de données peut être arrêté ou redémarré en utilisant le menu <menuchoice><guimenu>Sampling</guimenu></menuchoice> et les données qui apparaissent actuellement dans le graphe peuvent être sauvegardées dans un fichier CSV (Comma Separate Values) en vue d'importer les informations dans un tableur en utilisant l'option de menu <menuchoice><guimenu>Save to .csv</guimenu></menuchoice> du menu <menuchoice><guimenu>Data</guimenu></menuchoice>."
+
+#. Tag: title
+#: Chapter_05.xml:169
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr "Utiliser le navigateur JMX"
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+"Pour ouvrir la fenêtre du navigateur JMX, cliquer sur le menu <menuchoice><guimenu>File</"
+"guimenu></menuchoice>, puis cliquer sur l'option <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice>. La fenêtre du navigateur JMX apparaîtra."
+
+#. Tag: para
+#: Chapter_05.xml:173
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr "La fenêtre est organisée en deux sections principales: l'affichage des détails et l'affichage MBean. L'affichage MBean affiche les MBeans exposés par le serveur MBean. Ils sont groupés par nom de domaine. L'affichage des détails révèle des informations sur le MBean couramment sélectionné. Pour sélectionner un MBean, cliquer à gauche avec la souris et il sera mis en évidence. L'information apparaîtra comme suit:"
+
+#. Tag: para
+#: Chapter_05.xml:178
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr "Le nombre total de MBeans enregistrés sur ce serveur."
+
+#. Tag: para
+#: Chapter_05.xml:183
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr "Le nombre de constructeurs exposés par ce MBean."
+
+#. Tag: para
+#: Chapter_05.xml:188
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr "Le nombre d'attributs exposés par ce MBean."
+
+#. Tag: para
+#: Chapter_05.xml:193
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr "Le nombre d'opérations exposées par ce MBean."
+
+#. Tag: para
+#: Chapter_05.xml:198
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr "Le nombre de notifications exposées par ce MBean."
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr "Une brève description du MBean."
+
+#. Tag: para
+#: Chapter_05.xml:208
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr "Si vous cliquez sur le lien suivant: <menuchoice><guimenu>View</guimenu></menuchoice>, vous verrez les attributs et les opérations exposées par ce MBean. A partir de cela, vous pourrez voir les attributs lecture, modifier les attributs écriture et appeler les opérations."
+
+#. Tag: title
+#: Chapter_05.xml:212
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr "Utiliser les attributs et les opérations"
+
+#. Tag: para
+#: Chapter_05.xml:213
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr "Quand vous cliquez sur le lien <menuchoice><guimenu>View</guimenu></menuchoice>, la fenêtre Affichage des attributs et opérations JMX, apparaît. A partir de là, vous pouvez voir tous les attributs lecture exposés par le MBean sélectionné. Vous pouvez également modifier des attributs écriture. Si un attribut est lecture-seule, alors vous ne pourrez pas modifier la valeur des attributs. Pour altérer la valeur d'un attribut, effectuez un double clique sur la valeur existante et saisissez une nouvelle valeur. Si le bouton <guibutton>...</guibutton> est activé, vous pouvez cliquer dessus pour voir une méthode d'édition plus appropriée. Si le type d'attribut est un nom d'objet JMX, alors cliquez sur ce bouton pour afficher les attributs et les opérations JMX pour cet objet."
+
+#. Tag: para
+#: Chapter_05.xml:216
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr "A tout moment, vous pouvez cliquer le bouton <guibutton>Refresh</guibutton> pour rafraîchir les valeurs des attributs. En cas d'exception au moment du prélèvement de la valeur d'un attribut, l'exception sera affichée à la place de la valeur des attributs."
+
+#. Tag: para
+#: Chapter_05.xml:219
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr "Vous pouvez aussi appeler des opérations via un Mbean. Une liste des opérations exposées par un MBean appaîtra sous la liste des attributs. Pour appeler une opération, sélectionner la simplement à partir de la liste et cliquer sur le bouton <guibutton>Invoke</guibutton>. Si l'opération nécessite des paramètres, une fenêtre supplémentaire apparaîtra, à partir de laquelle, vous pourrez spécifier les valeurs requises pour chaque paramètre. Vous spécifiez les valeurs d'un paramètre de la même manière que vous spécifiez les valeurs des attributs JMX. Une fois que vous avez spécifié la valeur de chaque paramètre, cliquer sur le bouton <guibutton>Invoke</guibutton> pour l'appel."
+
+#. Tag: para
+#: Chapter_05.xml:222
+#, no-c-format
+msgid "Once the method invocation has completed its return value will be displayed."
+msgstr "Après que la méthode d'invocation (appel) est terminée, la valeur de retour s'affichera."
+
+#. Tag: title
+#: Chapter_05.xml:227
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr "Utiliser le navigateur ObjectStore"
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr "Pour ouvrir la fenêtre du navigateur ObjectStore, cliquer sur le menu <menuchoice><guimenu>File</guimenu></menuchoice>, puis cliquer sur l'option <menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice>. La fenêtre du navigateur ObjectStore s'affichera."
+
+#. Tag: para
+#: Chapter_05.xml:231
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr "La fenêtre du navigateur de l'ObjectStore est divisée en quatre sections:"
+
+#. Tag: para
+#: Chapter_05.xml:236
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr "Object Store Roots - Il s'agit d'une liste déroulante des roots de l'ObjectStore disponible actuellement. En sélectionnant une option dans la liste, vous faites apparaître la hiérarchie du root selectionné et son contenu."
+
+#. Tag: para
+#: Chapter_05.xml:241
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr "Object Store Hierarchy – Il s'agit d'un arbre qui montre la hiérarchie des ObjectStore actuels. En sélectionnant un noeud de cet arbre, les objets hébergés à cet endroit s'afficheront."
+
+#. Tag: para
+#: Chapter_05.xml:246
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr "Objects – il s'agit d'une liste d'icônes qui représente les objets hébergés dans la location sélectionnée."
+
+#. Tag: para
+#: Chapter_05.xml:251
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr "Object Details – montre des informations sur l'objet actuellement sélectionné (seulement si le type d'objet est connu dans le dépôt des états, voir Rédiger un OSV pour obtenir des informations sur la façon d'écrire un OSV)."
+
+#. Tag: title
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr "Object State Viewers (OSV)"
+
+#. Tag: para
+#: Chapter_05.xml:259
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr "Quand un objet est sélectionné dans une sous-fenêtre d'objets, l'OSV de cet objet est appelé. Le travail de l'OSV est de rendre l'information disponible à l'utilisateur, par l'intermédiaire de son interface, pour montrer les informations qui se rapportent à un objet particulier sélectionné. Distribué avec les outils standards dans un OSV pour Actions Atomiques, l'OSV affiche des informations sur les Abstract Records dans ses diverses listes (par ex. heuristique, échoué, lecture-seule, etc.). Aussi, il est possible d'écrire son propre OSV qui peut être utilisé pour afficher des informations sur les types d'objets que vous aurez définis. Nous couvrirons ce sujet par la suite."
+
+#. Tag: title
+#: Chapter_05.xml:263
+#, no-c-format
+msgid "Writing an OSV"
+msgstr "Rédiger un OSV"
+
+#. Tag: para
+#: Chapter_05.xml:264
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr "Rédiger un OSV vous permet d'étendre les capacités du navigateur ObjectStore pour l'affichage des états des enregistrements d'abstracts définis utilisateur. Un plug-in OSV est tout simplement une classe qui implémente une interface:"
+
+#. Tag: code
+#: Chapter_05.xml:269
+#, no-c-format
+msgid "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+
+#. Tag: para
+#: Chapter_05.xml:271
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr "Il doit être présenté dans un JAR dans le répertoire des plugins. Cet exemple montre comment créer un plugin OSV pour une sous-classe d'enregistrement d'abstract, qui ressemble à ce qui suit:"
+
+#. Tag: screen
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:275
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr ""
+"Quand cet enregistrement d'abstract est affiché par le navigateur de l'ObjectStore, il serait bon de pouvoir apercevoir la valeur courante. C'est facile à faire car nous pouvons lire l'état en tant qu'instance de l'enregistrement de notre abstract et appeler <methodname>getValue()</"
+"methodname>. Voici le code de source plug-in du navigateur de l'ObjectStore:"
+
+#. Tag: screen
+#: Chapter_05.xml:278
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:279
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr "On appelle la méthode <methodname>uidNodeExpanded</methodname> quand un UID (Identification unique) représentant un certain type, s'étend à l'arbre hiérarchique de l'ObjectStore. Ce n'est pas requis pour ce plugin car l'enregistrement de l'abstract n'est pas visible dans l'ObjectStore directement. On ne peut le voir qu'à partir d'une des listes de l'action atomique. La méthode <methodname>entrySelected</methodname> est invoquée quand une saisie est sélectionnée dans l'Object View qui représente un objet du type donné. Dans les deux méthodes, le StatePanel est utilisé pour afficher des informations sur l'état de l'objet. L'affichage de l'objet comprend les méthodes suivantes qui assistent l'affichage de cette information:"
+
+#. Tag: para
+#: Chapter_05.xml:284
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr "<methodname>setInfo(String info)</methodname>: Cette méthode peut être utilisée pour montrer des informations générales."
+
+#. Tag: para
+#: Chapter_05.xml:289
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr "<methodname>setData(String name, String value)</methodname>: cette méthode est utilisée pour mettre des informations dans la table qui est affichée par l'outil de navigation de l'ObjectStore."
+
+#. Tag: para
+#: Chapter_05.xml:294
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: cette méthode est utilisée pour activer le bouton détails. L'interface d'écoute permet à un plug-in d'être informé lorsqu'un bouton est pressé. C'est au développeur du plug-in de décider d'afficher cette information supplémentaire."
+
+#. Tag: para
+#: Chapter_05.xml:299
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr "Dans cet exemple, on peut lire l'état à partir de l'OBjectStore et on peut utiliser la valeur de retour de getValue() pour mettre une entrée dans la table d'affichage des états. La méthode getType() retourne le type sous-lequel ce plug-in doit être enregistré."
+
+#. Tag: para
+#: Chapter_05.xml:302
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+"Pour ajouter ce plug-in au navigateur de l'ObjectStore, il faut le présenter dans le fichier JAR (Archives Java) avec le nom qui comporte le préfixe 'osbv-'. Le fichier JAR doit comprendre certaines informations dans le fichier manifeste, qui indiquent au navigateur de l'ObjectStore quelles sont les classes de plug-ins. Pour cela, utiliser le script <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink>, comme suit:"
+
+#. Tag: screen
+#: Chapter_05.xml:305
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+
+#. Tag: para
+#: Chapter_05.xml:306
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr "Une fois que JAR est créé avec l'information qui convient dans le fichier manifeste, on a juste besoin de le placer dans le répertoire <emphasis>bin/tools/plugins</emphasis>."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_06.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_06.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,874 @@
+# translation of Chapter_06.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_06\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-08 09:18+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr "Construire des objets transactionnels pour l'application Java"
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr "Construction de l'application"
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid "There are two distinct phases to the development of a TxCore application:"
+msgstr "Il existe deux phases distinctes pour le développement d'une application TxCore:"
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr "Développer de nouvelles classes avec certaines caractéristiques (par exemple, Persistant, Recouvrable, Concurrence contrôlée)."
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid "Developing the application(s) that make use of the new classes of objects."
+msgstr "Développer la(les) application(s) qui utilisent les nouvelles classe d'objets."
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr ""
+"Malgré que ces deux phases pourraient être effectuées en parallèle et par une seule personne, nous nous référerons à la première étape comme au travail du développeur de classe et à la deuxième étape, comme au travail du développeur d'application(s). Le développeur de classe s'occupera de définir les opérations <code>save_state</code> et "
+"<code>restore_state</code> qui conviennent pour la classe, en paramétrant les verrous qui conviennent, et en appelant les constructeurs de classes TXCore qui conviennent. Le développeur d'applications(s) s'occupera surtout à définir la structure générale de l'application, surtout au niveau de l'utilisation les actions atomiques."
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr "Ce chapitre illustre les points soulignés dans les sections précédentes en créant une application simple: dans ce cas on développera une simple classe FIFO Queue for les valeurs entière relatives. Cette implémentation de la Queue apparaîtra sous la forme d'une liste doublement liée, et sera implémentée en tant qu'objet simple. Nous utiliserons cet exemple tout au long de cet ouvrage pour illustrer les divers mécanismes offerts par TxCore. Malgré qu'il s'agisse d'un exemple fictif d'application, cela permet toutes les modifications TXCore d'être décrites sans besoin de connaissances approfondies du code de l'application."
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr "Pour le reste de ce chapitre, nous assumerons que l'application n'est pas distribuée. Si ce n'est pas le cas, alors l'information contextuelle devra être propagée soit implicitement, soit explicitement."
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr "Description de la File d'attente (Queue)"
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr "Traditionnellement, il s'agit d'une liste d'attente FIFO, pour laquelle les éléments sont ajoutés en avant et extraits à l'arrière. Les opérations proposées par la classe de la file d'attente, permettent aux valeurs d'être positionnées sur la file d'attente (enqueue) ou d'en être extraites (dequeue), et il est également possible de changer ou d'inspecter les valeurs des éléments de la liste d'attente. On a imposé une limite de <code>QUEUE_SIZE</code> (taille) pour les éléments de la file d'attente de cet exemple."
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid "The Java interface definition of this simple queue class is given below:"
+msgstr "La définition dans l'interface Java de la classe de cette simple file d'attente, est donnée ci-dessous:"
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr "Constructeurs et déconstructeurs"
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr "Comme indiqué dans la section précédente, utiliser un objet persistant existant requiert l'utilisation d'un constructeur particulier qui devra prélever l'UID de l'objet persistant. L'implémentation d'un tel construteur est expliquée ci-dessous:"
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr "Le constructeur qui crée un nouvel objet persistant est similaire:"
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr "L'utilisation d'une action atomique dans le constructeur pour un nouvel objet suit les règles créées plus tôt et garantissent que l'état de l'objet soit inscrit dans l'ObjectStore quand l'action atomique au niveau supérieur qui convient, est soumise ( ce qui reviendra à l'action A ou à quelqu'action active clôturée au moment de la construction de  <code>TransactionalQueue</code>). L'utilisation des actions atomiques dans un constructeur est simple: on doit tout d'abord déclarer une action et appeler le début de son opération. L'opération doit ensuite déterminer le verrou qui convient à l'objet (dans ce cas précis, on doit acquérir un verrou <code>WRITE</code> (écriture)), puis on exécute le corps principal du constructeur. En cas de succès, l'action atomique peut être soumise, sinon, elle échoue."
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr "On n'utilise le destructeur d'une classe de queue que pour terminer l'opération de <methodname>LockManager</methodname>"
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr "save_state, resotre_state and type"
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr "Les implémentations de save_state et restore_state sont relativement simples dans cet exemple:"
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+"Comme la classe de liste d'attente (queue) est dérivée de la classe <classname>LockManager</"
+"classname>, le type d'opération devrait être:"
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr "opérations enqueue/dequeue"
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr "Si les opérations de la classe de la file d'attente doivent être codifiées en actions atomiques, alors l'opération enqueue devrait avoir la structure donnée ci-dessous (l'opération dequeue serait structurée de façon similaire):"
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr "queueSize (taille de la liste d'attente)"
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid "The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr "L'implémentation de <methodname>queueSize</methodname> est montrée ci-dessous:"
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr "opérations inspectValue/setValue"
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr ""
+"L'implémentation de <methodname>inspectValue</methodname> est indiquée ci-dessous. "
+"<methodname>setValue</methodname> est semblable, mais n'est pas montré."
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr "Le client"
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr "Au lieu de montrer tout le code client, nous nous concentrerons sur une portion représentative. Avant d'appeler des opérations sur un objet, le client devra biensûr le relier. Dans un cas local, le client a simplement besoin de créer une instance de cet objet."
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr "Avant de faire appel à l'une des opérations de la file d'attente, le client commencera une transaction. L'opération <methodname>queueSize</methodname> est montrée ci-dessous:"
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr "Commentaires"
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr "Comme l'objet est persistant, l'état de l'objet survivra tout échec du noeud sur lequel il est positionné. L'état de l'objet qui survivra, est celui qui est produit par les dernières actions atomiques sur l'objet, soumises au niveau supérieur. Si l'intention de l'objet est procéder à opérations enqueue atomiquement, par exemple, alors, on peut faire cela en imbriquant les opérations enqueue dans une autre action atomique clôturée. De plus, les opérations concurrentes effectuées sur de tels objets persistants, seront sérialisées, empêchant ainsi des incohérences dans l'état de l'objet. Malgré tout, comme les élément des objets de la file d'attente ne sont pas contrôlés individuellement au niveau de la concurrence, certaines combinaisons d'appel d'opérations concurrentes seront exécutées en série, alors que normalement, elles devraient être exécutées en concurrence, par exemple, en modifiant les états de deux éléments différents dans!
  la file d'attente. Dans la section qui suit, nous adresserons quelques uns de ces problèmes."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_07.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/Chapter_07.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,346 @@
+# translation of Chapter_07.po to French
+# Language fr-FR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Corina Roe <croe at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_07\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-08 09:57+1000\n"
+"Last-Translator: Corina Roe <croe at redhat.com>\n"
+"Language-Team: French <i18 at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr "Options de configuration"
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr "Options"
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr "La table suivante montre les options de configuration, avec les valeurs par défaut en italique. Plus d'information sur chaque option peut être trouvée dans les sections concernées dans ce document."
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr "Options de configuration TxCore."
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr "Nom de configuration"
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr "Valeurs possibles"
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr "Description"
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeSync"
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr "ON/OFF"
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr "Active/désactive la synchronisation de l'ObjectStore. A utiliser avec précaution."
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeType"
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr "Préciser le type d'implémentation d'ObjectStore à utiliser."
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr "255/toute valeur relative"
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr "Détermine le nombre de répertoires d'états d'objets à 'hacher' en vue de l'implémentation de la zone de stockage d'objets HashedStore."
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreType"
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr "BasicLockStore/BasicPersistentLockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr "Préciser le type d'implémentation de LockStore à utiliser."
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr "Windows: .\\LockStore Unix: ./LockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr "Préciser la location du LockStore."
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr "Toute location où l'application peut écrire."
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr "Spécifier la location de l'ObjectStore."
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr "defaultStore"
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr "Préciser le nom root de l'OBjectStore."
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr "com.arjuna.ats.arjuna.coordinator.actionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr "ActionStore/HashedActionStore/JDBCActionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr "L'implémentation de journal de transactions à utiliser."
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr "YES/NO"
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr "Active/désactive la soumission asynchrone (par défaut)"
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr "Active/désactive la fonction asynchrone 'prepare' (par défaut)."
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.transactionSync"
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr "Nom de la classe JDBCAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr "L'mplémentation JDBCAccess à utiliser pour les ObjectStores au niveau-utilisateur."
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr "L'implémentation JDBCAccess à utiliser pour transactions ObjectStore."
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr "Active ou désactive une optimisation de soumission en une-phase."
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr "Active ou désactive une optimisation lecture-seule pour la deuxième phase 'abandon'."
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr "Commence/arrête de collecter les informations statistiques des transactions."
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr "com.arjuna.ats.arjuna.coordinator.startDisabled"
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr ""
+"Commencer par activer ou déactiver le système de transactions. Basculer via com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr "Entier relatif"
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr "Délai d'inactivité (timeout) en millesecondes"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/fr-FR/JBoss_TS_Programmers_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_A.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_A.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,567 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr ""
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_B.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Appendix_B.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,307 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:17
+#, no-c-format
+msgid "Lock Manager"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:20
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:22
+#, no-c-format
+msgid "StateManager"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:25
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:27
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:32
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:35
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:40
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:42
+#, no-c-format
+msgid "AtomicAction"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:45
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,40 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss TS Programmers Guide"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise SOA Platform"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,820 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr ""
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid ""
+"The code below shows how we may try to obtain a write lock on an object:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid ""
+"Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_02.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_02.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1355 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr ""
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr ""
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr ""
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_03.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_03.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,573 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr ""
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr ""
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr ""
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_04.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_04.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,283 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_05.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_05.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,802 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:39
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:44
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:45
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:49
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:50
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:54
+#, no-c-format
+msgid "Settings"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:55
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Exit"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Open"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:77
+#, no-c-format
+msgid "Close All"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:78
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:87
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:90
+#, no-c-format
+msgid "Cascade Windows"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:91
+#, no-c-format
+msgid ""
+"This arranges the windows in a diagonal line to you find a specific window."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:95
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:96
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:104
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "About"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:108
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:119
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:121
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:123
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:125
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:130
+#, no-c-format
+msgid "Number of transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:135
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:140
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:145
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:150
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:158
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:161
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:164
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:169
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:173
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:178
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:183
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:188
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:193
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:198
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:208
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:212
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:213
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:216
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:219
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:222
+#, no-c-format
+msgid ""
+"Once the method invocation has completed its return value will be displayed."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:227
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:231
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:236
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:241
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:246
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:251
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:259
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:263
+#, no-c-format
+msgid "Writing an OSV"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:264
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr ""
+
+#. Tag: code
+#: Chapter_05.xml:269
+#, no-c-format
+msgid ""
+"com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:271
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:275
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_05.xml:278
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:279
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:284
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:289
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:294
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:299
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:302
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_05.xml:305
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:306
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_06.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_06.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,603 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid ""
+"There are two distinct phases to the development of a TxCore application:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid ""
+"Developing the application(s) that make use of the new classes of objects."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid ""
+"The Java interface definition of this simple queue class is given below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid ""
+"The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_07.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/Chapter_07.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,340 @@
+# Language ja-JP translations for JBoss_TS_Programmers_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBoss_TS_Programmers_Guide 1.0\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-05 22:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr ""
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr ""
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr ""
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/ja-JP/JBoss_TS_Programmers_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_A.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_A.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_A.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,568 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr ""
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr ""
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_B.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_B.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Appendix_B.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,308 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:21
+#, no-c-format
+msgid "Lock Manager"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:22
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:29
+#, no-c-format
+msgid "StateManager"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:38
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:45
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:46
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:53
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:54
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Appendix_B.xml:61
+#, no-c-format
+msgid "AtomicAction"
+msgstr ""
+
+#. Tag: screen
+#: Appendix_B.xml:62
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,42 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions Programmers Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:24
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,821 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr ""
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid ""
+"The code below shows how we may try to obtain a write lock on an object:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid ""
+"Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_02.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_02.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_02.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1356 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr ""
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr ""
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr ""
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr ""
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr ""
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_03.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_03.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_03.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,574 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr ""
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr ""
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr ""
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr ""
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_04.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_04.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_04.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,284 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr ""
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr ""
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_05.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_05.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_05.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,833 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr ""
+
+#. Tag: caption
+#: Chapter_05.xml:42
+#, no-c-format
+msgid "Menu bar"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:46
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:47 Chapter_05.xml:82 Chapter_05.xml:108 Chapter_05.xml:132
+#, no-c-format
+msgid "&nbsp;"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:63
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:64
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "Settings"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:69
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Exit"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:81
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:93
+#, no-c-format
+msgid "Open"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:94
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:98
+#, no-c-format
+msgid "Close All"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:99
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:118
+#, no-c-format
+msgid "Cascade Windows"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:119
+#, no-c-format
+msgid ""
+"This arranges the windows in a diagonal line to you find a specific window."
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:123
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:124
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:131
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr ""
+
+#. Tag: term
+#: Chapter_05.xml:142
+#, no-c-format
+msgid "About"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:143
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:153
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:157
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:165
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid "Number of transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:175
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:180
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:185
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:190
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:195
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:211
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:214
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:219
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:220
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:233
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:238
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:243
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:248
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:253
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:263
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_05.xml:270
+#, no-c-format
+msgid "An example of what the details panel displays"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:273
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:277
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:280
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:283
+#, no-c-format
+msgid ""
+"Once the method invocation has completed its return value will be displayed."
+msgstr ""
+
+#. Tag: caption
+#: Chapter_05.xml:290
+#, no-c-format
+msgid "View JMX Attributes and Operations window"
+msgstr ""
+
+#. Tag: caption
+#: Chapter_05.xml:296
+#, no-c-format
+msgid "Invoke Operation Parameters"
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:300
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:301
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:309
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:319
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:324
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:329
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:334
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:341
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:342
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr ""
+
+#. Tag: title
+#: Chapter_05.xml:346
+#, no-c-format
+msgid "Writing an OSV"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:347
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr ""
+
+#. Tag: code
+#: Chapter_05.xml:352
+#, no-c-format
+msgid ""
+"com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:354
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_05.xml:357
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:358
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_05.xml:361
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:362
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:367
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:372
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:377
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:382
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:385
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_05.xml:388
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+
+#. Tag: para
+#: Chapter_05.xml:389
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_06.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_06.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_06.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,604 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid ""
+"There are two distinct phases to the development of a TxCore application:"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid ""
+"Developing the application(s) that make use of the new classes of objects."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid ""
+"The Java interface definition of this simple queue class is given below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid ""
+"The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr ""
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr ""
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_07.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_07.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Chapter_07.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,341 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr ""
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr ""
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr ""
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr ""
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/JBoss_Transactions_Programmers_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:31+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_A.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_A.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,683 @@
+# translation of Appendix_A.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_A\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 09:35+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr "Implementações de armazenamento de objeto "
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr "O ObjectStore"
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr "Neste apêndice, examinaremos as várias implementações de armazenamento de objeto TxCore, além de fornecer embasamento de como as demais implementações podem ser criadas e ligadas a um aplicativo."
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+"Esta liberação do JBossTS contém diversas implementações diferentes de um armazenamento básico de objeto. Cada um serve um propósito particular, além de ser, geralmente, otimizado para este princípio. Todas as implementações são derivadas da interface <interface>ObjectStore</interface>. Isto define as operações mínimas que devem ser fornecidas para que uma implementação de armazenamento de objeto possa ser usada pelo JBossTS. A implementação padrão de armazenamento de objeto pode ser substituída no período de rodagem pela configuração de variável de propriedade <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property>, para um dos tipos descritos abaixo:"
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr "O programadores não precisam interagir com qualquer uma das implementações de armazenamento de objeto diretamente, a não ser que, possivelmente, criá-las em primeiro lugar (mesmo que isto não seja necessário se o tipo de armazenamento padrão for usado como JBossTS, ele criará armazenamentos conforme necessário). Todos os armazenamentos manipulam instâncias da classe <classname>ObjectState</classname>, que são nomeadas usando um tipo (através do object's type() operation) e um Uid. Já para propósitos de ações atômicas, os estados de objeto no armazenamento podem estar basicamente em dois estados distintos: OS_COMMITTED e OS_UNCOMMITTED. Um estado de objeto inicializa no estado OS_COMMITTED, porém quando modificado sob controle de uma ação atômica, um segundo estado de objeto novo poderá ser gravado como pertecente ao estado OS_UNCOMMITTED. Caso a ação seja confirmada este segundo estado do objeto substitui o original e inicializa OS_COMMITTED!
 . Caso a ação seja abortada, este segundo estado do objeto é simplesmente descartado. Todas as implementações fornecidas com esta liberação manuseiam estas transições de estado fazendo uso de cópias ocultas destes estados de objeto. No entanto, qualquer outra implementação que mantém esta abstração é permitida. Os estados de objeto poderão tornar-se ocultos (e desta forma inacessíveis), sob o controle do sistema de recuperação de travamento."
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+"A navegação através dos conteúdos de um armazenamento é possível através de <methodname>allTypes</methodname> e operações <methodname>allObjUids</methodname>. A <methodname>allTypes</methodname> retorna um <type>InputObjectState</type> contendo todos os nomes de tipos de todos os objetos, num armazenamento terminado por um nome nulo. A <methodname>allObjUids</"
+"methodname> retorna um <type>InputObjectState</type> que contém todos os Uids de todos os objetos de um dado tipo terminado pelo <methodname>Uid.nullUid()</methodname> especial."
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr "Armazenamentos de objeto persistente"
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr "Esta seção descreve brevemente as características e otimizações de cada implementação fornecida pelo armazenamento de objeto persistente. Os estados de objeto persistente são mapeados na estrutura do sistema de arquivo suportado pelo sistema de operação host. "
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr "Funcionalidade comum"
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr "Em adição aos recursos mencionados anteriormente, todos os armazenamentos de objeto de persistência fornecidos obedecem as seguintes regras:"
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr "Cada estado de objeto é armazenado no próprio arquivo nomeado usando o <code>Uid</code> do objeto."
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr "O tipo de um objeto (como dado pela operação <methodname>type()</methodname>) determina o diretório pelo qual o objeto é posicionado."
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr "Todos os armazenamentos possui um diretório de raiz comum que é determinado quando o JBossTS for configurado. O nome deste diretório é automaticamente precedido de qualquer informação de raiz específica de armazenamento."
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr "Todos os arquivos também possuem noção do diretório de raiz localizado, do qual é automaticamente precedido do tipo de objeto, para determinar o nome do diretório final. O nome da raiz localizado é especificado quando o armazenamento for criado. Por padrão, o nome de raiz localizado é <code>defaultStore</code>. "
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr "O armazenamento de ocultação"
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr ""
+"Esta é a versão original do armazenamento do objeto conforme fornecido em liberações anteriores, além de ser implementado pela classe <classname>ShadowingStore</"
+"classname>. Este procedimento é simples e lento. Ele usa pares de arquivos para representar objetos (a versão oculta e a versão comprometida) e arquivos são abertos, bloqueados, operados, desbloqueados e fechados em cada interação com o armazenamento do objeto. Desta forma, porções significantes de tempo podem ser gastas no sistema apenas abrindo, fechando e renomeando arquivos, sendo que todas estas operações são bem caras."
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr "Caso substituirmos a implementação de armazenamento de objeto, o tipo deste armazenamento de objeto será <type>ShadowingStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr "Sem bloqueamento do nível de arquivo"
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr "Uma vez que os objetos transacionais são atualmente controlados através do <methodname>LockManager</methodname>, não é necessário impor um bloqueamento adicional ao nível do arquivo, pois a implementação ShadowingStore básica o faz. Portanto, a implementação de armazenamento de objeto padrão para o JBossTS, <methodname>ShadowNoFileLockStore</methodname>, baseia-se no bloqueamento de nível do usuário. Isto o ativa para fornecer um melhor desempenho do que o da implementação <methodname>ShadowingStore</methodname>. "
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr "Caso substituindo a implementação de armazenamento de objeto, o tipo de armazenamento de objeto será <type>ShadowNoFileLockStore</type>."
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr "O armazenamento com hash"
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "O <code>HashedStore</code> possui a mesma estrutura para os estados do objeto como os armazenamentos ocultados. No entanto, ele possui uma estrutura de diretório alternativa que é melhor adaptada para o armazenamento de números maiores de objetos do mesmo tipo. O uso destes objetos de armazenamento são dispersos dentro de um conjunto de diretórios, apenas aplicando uma função de hash ao Uid do objeto. Por padrão, 255 sub-diretórios são usados. No entanto, isto pode ser substituído configurando a variável do ambiente <code>HASHED_DIRECTORIES</code> conseqüentemente."
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr "Caso substituirmos a implementação de armazenamento do objeto, o tipo deste armazenamento de objeto será <type>HashedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr "Uma vez que os objetos são regularmente controlados através do <methodname>LockManager</methodname>, não é necessário impor um bloqueamento adicional ao nível do arquivo, já que a implementação <methodname>ShadowingStore</methodname> básica o faz. Desta forma, a implementação de armazenamento do objeto padrão para JBossTS, <methodname>ShadowNoFileLockStore</methodname>, baseia-se no bloqueamento do nível do usuário. Isto o ativa para o fornecimento de um melhor desempenho que o da implementação <methodname>ShadowingStore</methodname>."
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr "O <code>HashedStore</code> possui a mesma estrutura para os estados do objeto como os armazenamentos ocultados. No entanto, ele possui uma estrutura de diretório alternativa que é melhor adaptada para o armazenamento de números maiores de objetos do mesmo tipo. O uso destes objetos de armazenamento são dispersos dentro de um conjunto de diretórios, apenas aplicando uma função de hash ao Uid do objeto. Por padrão, 255 sub-diretórios são usados. No entanto, isto pode ser substituído configurando a variável do ambiente <code>HASHED_DIRECTORIES</code> conseqüentemente."
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr "O armazenamento JDBC"
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr "O <methodname>JDBCStore</methodname> usa um banco de dados JDBC para salvar os estados de objeto persistente, quando usado em conjunção aos Objetos Transacionais, para que o suporte de transação aninhado Java API esteja disponível. Na implementação atual, todos os estados de objeto estão armazenados como Binary Large Objects (BLOBs) na mesma tabela. A limitação de tamanho de estado de objeto imposta é 64k, quando usando BLOBs. Caso uma tentativa seja feita para armazenar um estado de objeto que excede este limite, um erro será emitido e o estado não será armazenado. Desta maneira, a transação será conseqüentemente forçada a reversão."
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+"Quando utilizando o armazenamento do objeto JDBC, o aplicativo deverá fornecer uma implementação da seguinte interface, localizada no pacote <code>com.arjuna."
+"ats.arjuna.objectstore</code>:"
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr "A implementação desta classe é responsável em fornecer a <emphasis>Connection</emphasis>, da qual o JDBC ObjectStore usará para salvar e restaurar os estados do objeto:"
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr "<methodname>getConnection</methodname>: retorna a Conexão para uso. Este método irá ser chamado a qualquer instante que a conexão for solicitada e a implementação deve usar qualquer política necessária para determinar qual conexão retornar. Este método não precisa retornar a mesma instância de conexão mais de uma vez."
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr "<methodname>putConnection</methodname>: este método será chamado para retornar uma das Conexões adquiridas a partir do getConnection. As conexões serão retornadas caso qualquer erro ocorrer quando utilizando-as."
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr "<methodname>initialise</methodname>: este pode ser usado para passar informação arbitrária adicional para a implementação."
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+"O armazenamento do objeto JDBC inicializará a solicitação de números de conexões definidas na propriedade <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property>, além de não utilizar mais do que definido na propriedade <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property>."
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr ""
+"A implementação da interface <interfacename>JDBCAccess</interfacename> para uso, deve ser configurada na variável da propriedade <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property>."
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr "Caso substituirmos a implementação de armazenamento de objeto, o tipo deste armazenamento do objeto será <type>JDBCStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+"O armazenamento do objeto JDBC pode ser usado para gerenciamento do log de transação. Neste caso, a implementação do log de transação deve ser configurada para <property>JDBCActionStore</property> e a implementação <methodname>JDBCAccess</"
+"methodname> deve ser fornecida através da variável da propriedade <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property>. Neste caso, o nome da tabela padrão é JBossTSTxTable."
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr "É possível usar a mesma implementação JDBCAccess para ambos armazenamento do objeto do usuário e também o log de transação."
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr "O armazenamento com cache"
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr "Este armazenamento de objeto usa o armazenamento de objeto com hash, mas não lê ou grava os estados para o armazenamento de backup persistente imediatamente. Isto mantém os estados num cache de memória volátil e tanto limpa o cache periodicamente ou quando ele estiver cheio. As associadas semânticas de falha com este armazenamento do objeto são diferentes dos armazenamentos de objeto persistentes normais, uma vez que a falha pode resultar em estados de desaparecimento do cache."
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr "Caso substituirmos a implementação do armazenamento do objeto, o tipo deste armazenamento do objeto será <type>CachedStore</type>."
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr "O armazenamento pode ser configurado com as seguintes propriedades:"
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> configura o número de armazenamentos internos para realizar o hash aos estados. O valor padrão é 128."
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> é o valor máximo que o cache pode alcançar antes que a limpeza seja triggered. O padrão é de 10240 bytes."
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> é o número máximo de ítens removidos que o cache pode conter antes de uma limpeza ser triggered. Por padrão, as chamadas para remover um estado que está no cache irão simplesmente remover o estado do cache, mas deixar uma entrada em branco (ao invés de remover a entrada imediatamente, o que afetaria o desempenho do cache). Quando triggered, estas entradas são removidas do cache. O valor padrão é o dobro do tamanho do hash. "
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> é o número máximo de ítens que são permitidos para a construção no cache, antes do mesmo ser esvaziado. O valor do padrão é 100. "
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> configura o tempo em milhões de segundo para o esvaziamento periódico do cache. O padrão é 120 segundos."
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determina se é que os esvaziamentos do cache são sync-ed para o disco. O padrão é OFF. Apenas ajuste para ON, no caso da ativação. "
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_B.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Appendix_B.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,503 @@
+# translation of Appendix_B.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_B\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-04 09:51+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr "Definições de classes"
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr "Este apêndice contém uma visão geral daquelas classes que o programador do aplicativo usará normalmente. O objetivo deste apêndice é fornecer um guia de referência rápido para estas classes, para o uso quando gravando os aplicativos em TxCore. Para melhor clareza, serão fornecidas apenas as interfaces protegidas e públicas das classes."
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr "Biblioteca de classe"
+
+#. Tag: title
+#: Appendix_B.xml:17
+#, no-c-format
+msgid "Lock Manager"
+msgstr "Gerenciador de bloqueio"
+
+#. Tag: screen
+#: Appendix_B.xml:20
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:22
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: screen
+#: Appendix_B.xml:25
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:27
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr "Input/OutputObjectState"
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:32
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr "Input/OutputBuffer"
+
+#. Tag: screen
+#: Appendix_B.xml:35
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr "<title>Uid</title>"
+
+#. Tag: screen
+#: Appendix_B.xml:40
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:42
+#, no-c-format
+msgid "AtomicAction"
+msgstr "AtomicAction"
+
+#. Tag: screen
+#: Appendix_B.xml:45
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Author_Group.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-24 10:22+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr "Grupo de Documentação da Red Hat"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,44 @@
+# translation of Book_Info.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-02 14:09+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss TS Programmers Guide"
+msgstr "Guia de Programadores do JBoss TS"
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise SOA Platform"
+msgstr "Plataforma do JBoss Enterprise SOA"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr "Este livro é a edição da Plataforma de Aplicativo Enterprise do Guia de Programadores do JBoss TS."
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,999 @@
+# translation of Chapter.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-02 16:36+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr "Visão Geral"
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr ""
+"Este documento contém uma descrição de uso do mecanismo da transação <classname>TxCore</"
+"classname> e as classes e facilidades dos <firstterm>Objetos Transacionais para "
+"Java</firstterm>. As classes mencionadas neste capítulo são a chave principal para a gravação de aplicativos de falha tolerante usando transações. Desta maneira, após descrevê-las poderemos aplicá-las na construção de um simples aplicativo. As classes a serem descritas neste capítulo podem ser encontradas nos pacotes <classname>com.arjuna.ats.txoj</classname> e <classname>com.arjuna.ats.arjuna</classname>."
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr "TxCore – o mecanismo da transação"
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr ""
+"Para manter a visualização de objeto orientado, os mecanismos necessários para construção de aplicativos distribuídos confiáveis estão presentes a programadores numa maneira de objeto orientado. Alguns mecanismos precisam ser herdados, por exemplo: o controle de concorrência e o gerenciamento de estado; enquanto outros mecanismos, como o armazenamento de objeto e transações, são implementados como objetos <classname>TxCore</"
+"classname>, dos quais são criados e manipulados como qualquer outro objeto. "
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+"Quando o manual falar a respeito do uso de persistência e facilidades de controle de concorrência, ele estará assumindo que as classes dos <emphasis>Objetos Transacionais para Java</"
+"emphasis> (TXOJ) estão sendo utilizadas. Caso este não seja o caso, então o programador é responsável por todos estes assuntos."
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr "O <classname>TxCore</classname> ataca as técnicas de objeto orientado de programadores atuais com o equipamento de ferramentas das classes Java, a partir de cada classe de aplicativo que pode ser herdada para a obtenção das propriedades desejadas, assim como persistência e controle de concorrência. Estas classes formam uma hierarquia, parte pela qual é apresentada abaixo e que será descrita adiante neste documento."
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr "Classe hierárquica TxCore"
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr "Além da especificação dos escopos de transação e configuração de bloqueios apropriados com objetos, o programador do aplicativo não possui qualquer outra responsabilidade. O <classname>TxCore</classname> e os <emphasis>Objetos Transacionais para Java</emphasis> (TXOJ) garantem que os objetos transacionais serão registrados e dirigidos pelas transações apropriadas. Os mecanismos de recuperação de travamento são invocados automaticamente num evento de falha."
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr "Salvando os estados do objeto"
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+"O <classname>TxCore</classname> precisa estar apto a lembrar do estado de um objeto por diversos propósitos, incluindo a recuperação (o estado representa o estado antigo do objeto) e persistência (o estado representa o estado final de um objeto na finalização do aplicativo). Uma vez que estes requerimentos possuem funcionalidade comum, eles são implementados usando o mesmo mecanismo: as classes <classname>InputObjectState</classname> e "
+"<classname>OutputObjectState</classname>. As classes mantêm um array interno em instâncias de tipo padrão que podem ser continuamente empacotadas (desempacotadas) usando as operações <command>pack</command> (<command>unpack</"
+"command>) apropriadas. Este buffer é automaticamente redimensionado conforme solicitação, no caso do mesmo possuir espaço insuficiente. As instâncias estão inteiramente armazenadas no buffer de forma padrão (chamada em ordem byte da rede), para fazê-las uma máquina independente. Qualquer outro formato independente de arquitetura (como um XDR ou ASN.1) pode ser implementado simplesmente substituindo as operações com os 1 apropriados, de codificação requerida."
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr "O armazenamento do objeto"
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr "As implementações de persistência podem ser afetadas por restrições impostas pelo Java SecurityManager. Portanto, o armazenamento do objeto fornecido pelo <classname>TxCore</classname> é implementado usando as técnicas de interface/implementação. A distribuição atual possui implementações que gravam os estados do objeto ao banco de dados ou sistema de arquivo local, além de implementações remotas, onde a interface usa um cliente stub (proxy) para os serviços remotos."
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr "Os objetos persistentes são identificadores únicos determinados (instâncias de classe Uid), quando criados, e isto é usado para identificá-los com o armazenamento do objeto. Os estados são lidos usando a operação <literal>read_committed</literal> e gravados pelas operações <literal>write_(un)committed</literal>."
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr "Recuperação e persistência"
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+"A classe <classname>StateManager</"
+"classname> encontra-se na raiz da classe hierárquica. Esta classe é responsável pela ativação, desativação e recuperação do objeto. A assinatura simplificada da classe é a seguinte: "
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr "Os objetos podem ser classificados em três maneiras diferentes. Eles poderão ser simplesmente recuperáveis. Neste caso, o <classname>StateManager</classname> tentará gerar e manter a informação de recuperação apropriada para o objeto. Tais objetos possuem ciclos de vida que não excedem o programa do aplicativo que os criou. Os objetos podem ser recuperáveis e persistentes, dos quais espera-se que o ciclo de vida do objeto seja maior que o de criação ou aplicativo de acesso. Adicionado isto à sustentação de informação de recuperação do <classname>StateManager</classname>, eles tentarão carregar (descarregar) automaticamente qualquer estado de persistência existente do objeto, chamando a operação de ativação (desativação) em períodos apropriados. E por último, os objetos talvez não possuam nenhuma destas capacidades, e, neste caso, a informação de recuperação nunca será mantida e nem mesmo a tentativa de ativação/desativação auto!
 mática do objeto será realizada.  "
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"Caso um objeto seja recuperável ou recuperável e persistente, então o <classname>StateManager</classname> invocará as operações <command>save_state</command> (enquanto desempenhando <command>deactivate</"
+"command>) e <command>restore_state</command> (enquanto executando a ativação), em diversos pontos durante a execução do aplicativo. Estas operações devem ser implementadas durante a execução do aplicativo. Elas precisam ser implementadas pelo programador uma vez que o <classname>StateManager</"
+"classname> não pode detectar as mudanças de estado a nível do usuário. (Estamos examinando a geração automática das operações <command>save_state</command> e "
+"<command>restore_state</command> padrões, para permitir que o programador substitua isto quando o conhecimento específico do aplicativo possa ser usado, melhorando a eficiência.) Isto dá ao programador a habilidade de decidir quais partes de um estado do objeto deveriam ser construídas persistentes. Por exemplo: para uma planilha não será necessário salvar todas as entradas caso alguns valores possam ser simplesmente re-computados. A implementação <command>save_state</command> para um <classname>Example</classname> de classe, que possui variáveis de membros integrados chamados A, B e C, pode parecer-se com:"
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr ""
+"Os objetos podem ser classificados em três maneiras diferentes. Eles poderão ser simplesmente <emphasis>recuperáveis</emphasis>. Neste caso, o <classname>StateManager</classname> tentará gerar e manter a informação de recuperação apropriada para o objeto. Tais objetos possuem ciclos de vida que não excedem o programa do aplicativo que os criou. Os objetos podem ser <emphasis>recuperáveis e persistentes</emphasis>, dos quais espera-se que o ciclo de vida do objeto seja maior que o de criação ou aplicativo de acesso. Adicionado isto à sustentação de informação de recuperação do <classname>StateManager</classname>, eles tentarão carregar (descarregar) automaticamente qualquer estado de persistência existente do objeto, chamando a operação de <classname>ativação</classname> (<classname>desativação</"
+"classname>) em períodos apropriados. E por último, os objetos talvez não possuam nenhuma destas capacidades, e, neste caso, a informação de recuperação nunca será mantida e nem mesmo a tentativa de ativação/desativação automática do objeto será realizada. "
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr "Caso um objeto seja <emphasis>recuperável</emphasis> ou <emphasis>recuperável e persistente</emphasis>, então o <classname>StateManager</classname> invocará as operações <command>save_state</command> (enquanto executando a <command>deactivate</command>) e <command>restore_state</command> (enquanto executando <command>activate</command>), em vários pontos durante a execução do aplicativo. Estas operações devem ser implementadas pelo programador uma vez que o <classname>StateManager</classname> não pode detectar as mudanças de estado a nível do usuário. (Estamos examinando a geração automática das operações <classname>save_state</classname> e <classname>restore_state</classname> padrões, para permitir que o programador substitua isto quando o conhecimento do específico aplicativo possa ser usado, melhorando o desempenho.) Isto fornece ao programador a habilidade de decidir quais partes de um estado do objeto devem ser persistentes. Por exemplo: p!
 ara uma planilha talvez não seja necessário salvar todas as entradas, alguns valores poderão simplesmente ser re-computados. A implementação <classname>save_state</classname> para a classe <classname>Example</classname>, que possui variáveis de membros integrados chamados A, B e C, pode parecer-se com:"
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+"É necessário que todos os métodos <command>save_state</command> e <command>restore_state</command> chamem o <classname>super.save_state "
+"</classname> e <classname>super.restore_state</classname>. A intenção disto é prover melhoramentos nos mecanismos de recuperação de travamento. "
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr "O ciclo de vida de um Objeto Transacional para Java"
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+"Espera-se que o objeto de persistência, que não está em uso, mantenha um estado <emphasis>passivo</"
+"emphasis> com seu próprio estado residindo num armazenamento de objeto e <emphasis>ativado</emphasis> sob solicitação. O principal ciclo de vida deste objeto de persistência no <emphasis>TXOJ</emphasis> é demonstrado em <xref linkend="
+"\"figure_2\"/>."
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr "O ciclo de vida de um objeto de persistência."
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr "O objeto é inicialmente passivo e é armazenado no armazenamento de objeto como uma instância de classe <classname>OutputObjectState</classname>."
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr ""
+"O objeto é automaticamente ativado realizando apenas a leitura do armazenamento, quando solicitado por um aplicativo. Tudo isto, usando uma operação <command>read_committed</command> e sendo então convertido a partir de uma instância <classname>InputObjectState</"
+"classname>, dentro de um objeto completado pela operação <command>restore_state</command> do objeto."
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr "Uma vez que o aplicativo tenha finalizado com o objeto, ele será desativado convertendo-o de volta a uma instância <classname>OutputObjectState</classname>, usando a operação <command>save_state</command>. Após isto, ele é novamente armazenado no armazenamento do objeto como uma cópia sombra, usando write_uncommitted. Esta cópia sombra pode ser confirmada, substituindo a versão anterior utilizando a operação <command>commit_state</command>. A existência das cópias sombras é normalmente ocultada do programador pelo sistema de transação. Normalmente, a desativação do objeto apenas ocorre quando a transação de nível superior em que o objeto foi ativado confirmar."
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr "O objeto de persistência poderá ser ativo e então passivo muitas vezes durante o próprio ciclo de vida. "
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr "O controlador de concorrência"
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr "O controlador de concorrência é implementado pela classe <classname>LockManager</classname> que fornece um comportamento padrão sensível, enquanto permitindo que o programador substituí-la caso considerada necessária pelas semânticas específicas de classe sendo programadas. Assim como o <classname>StateManager</classname> e persistência, as implementações de controle de concorrência são acessadas através das interfaces. Adicionado ao fornecimento de acesso a serviços remotos, as implementações de controle de concorrência disponíveis a interfaces incluem:"
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr "implementação do disco local/banco de dados, onde os bloqueios tornam-se persistentes ao serem gravados ao sistema de arquivo local ou banco de dados."
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr "uma implementação puramente local, onde os bloqueios são mantidos com a memória da máquina virtual que os criou. Esta implementação possui um melhor desempenho do que quando gravando bloqueios a discos locais. No entanto, os objetos não podem ser compartilhados entre máquinas virtuais. E, o mais importante, isto é um objeto Java básico sem nenhuma solicitação que pode ser afetada pelo SecurityManager."
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr "A interface do programador primário ao controlador de concorrência é feita através da operação setlock. Por padrão, o sistema de rodagem reforça o bloqueamento bifásico seguindo uma leitura múltipla, política de gravação única baseada no objeto. No entanto, conforme demonstrado em <xref linkend=\"figure_1\"/>, é possível que programadores forneçam suas próprias implementações de bloqueio com diferentes regras de conflito de bloqueio com a finalidade de capacitar o <firstterm>controle de concorrência de tipo específico</firstterm>, por herança a partir da classe de <classname>Lock</classname>."
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "A aquisição de bloqueio está sob controle do programador, uma vez que o <classname>StateManager</classname> não pode determinar se uma operação modifica um objeto. O <classname>LockManager</classname> não pode determinar se uma operação solicita uma leitura ou bloqueio de gravação. No entanto, a liberação de bloqueio está sob o controle do sistema e não requer qualquer intervenção por parte do programador. Isto garante que a propriedade bifásica pode ser corretamente mantida."
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+"A classe <classname>LockManager</classname> é primeiramente responsável pelas solicitações de gerenciamento para determinar um bloqueio em um objeto ou para liberar um bloqueio conforme seja apropriado. No entanto, uma vez que isto deriva-se de um <classname>StateManager</"
+"classname>, ela pode também controlar quando algumas das facilidades herdadas são invocadas. Por exemplo: o <classname>LockManager</classname> assume que a configuração de um bloqueio de gravação implica que a operação de invocação deve ser referente à modificação do objeto. Isto poderá causar em retorno o salvamento da informação de recuperação, caso o objeto seja recuperável. Similarmente, a aquisição de bloqueio sucedida com êxito causa a invocação da ativação."
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid "The code below shows how we may try to obtain a write lock on an object:"
+msgstr "O código abaixo apresenta como nós tentaremos obter um bloqueio de gravação num objeto:"
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr "O mecanismo do protocolo de transação"
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr "O mecanismo de protocolo de transação é representado pela classe <classname>AtomicAction</classname>, que usa o <classname>StateManager</classname> com a finalidade de gravar informações suficientes de mecanismos de recuperação de travamento. Tudo isto, com a finalidade de completar a transação em um evento de falha. Isto possui métodos para inicialização e encerramento da transação, e para situações onde programadores solicitam a implementação dos próprios recursos, existem métodos para registrá-los com a transação atual. Caso a transação seja iniciada com o escopo de uma transação já executada, ela será automaticamente aninhada, baseando-se no fato de que o <emphasis>TxCore</emphasis> suporta sub-transações."
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr "O <emphasis>TxCore</emphasis> está ciente da multi-segmentação, permitindo que cada segmento de um aplicativo compartilhe uma transação ou execute-a em sua própria transação. Portanto, todas as classes são também segmentadas com segurança."
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr "Exemplo"
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr "O simples exemplo abaixo ilustra as relações entra a ativação, encerramento e confirmação:"
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr "A execução dos códigos acima envolve a seguinte seqüência de atividades: "
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr ""
+"A criação de bindings para objetos de persistência. Isto pode envolver a criação de objetos stub e uma chamada de objetos remotos. No exemplo acima, nós usamos novamente o binding para um objeto de persistência existente identificado pelo <literal>Name-A</"
+"literal>, além de um novo objeto de persistência. O sistema de nomeação para objetos remotos mantém o mapeamento entre nomes de objetos e localizações. Você poderá encontrar maiores informações referentes a esta questão nos capítulos seguintes."
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr "Inicialização da transação atômica."
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr "As invocações de operação. Como parte de uma invocação dada, a implementação do objeto é responsável em garantir que isto está bloqueado na leitura ou gravação do modo (assumindo que não há conflito no bloqueamento). E, se necessário inicializada com o último estado confirmado a partir de um armazenamento do objeto. A primeira vez que um bloqueio é adquirido num objeto dentro de uma transação, o estado do objeto é adquirido, se possível, a partir do armazenamento do objeto."
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr "Confirmação da ação de nível superior. Isto inclui a atualização do estado de qualquer objeto modificado num armazenamento de objeto."
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr "Quebra de bindings criadas anteriormente."
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr "A classe hierárquica"
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr ""
+"As classes principais que constituem a classe hierárquica do <emphasis>TxCore</"
+"emphasis> são descritas abaixo:"
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+"Os programadores dos aplicativos de falha de tolerância serão primeiramente concedidos com as classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"e <classname>AtomicAction</classname>. Outras classes importantes para um programador são o <classname>Uid</classname> e <classname>ObjectState</classname>. A maioria das classes são derivadas da classe base de <classname>StateManager</classname>, que fornece facilidades primitivas necessárias para o gerenciamento de objetos de recuperação e persistência. Estas facilidades incluem o suporte para a ativação e desativação dos objetos e recuperação do objeto de estado baseado. A classe <classname>LockManager</"
+"classname> usa facilidades do <classname>StateManager</classname> e "
+"<classname>Lock</classname> para fornecer o controle atual (bloqueamento bifásico na implementação atual) solicitado para a implementação da propriedade serializada de ações atômicas. A implementação de facilidades de ação atômica é suportada pela <classname>AtomicAction</classname> e "
+"<classname>TopLevelTransaction</classname>."
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr ""
+"A maioria das classes de sistema são derivadas a partir da classe de base de <classname>StateManager</classname>, da qual fornece facilidades primitivas necessárias para o gerenciamento de objetos de persistência e recuperação. Estas facilidades incluem o suporte de ativação e desativação dos objetos e recuperação do objeto de estado baseado. A classe <classname>LockManager</"
+"classname> usa as facilidades do <classname>StateManager</classname> e fornece o controle de concorrência requerido pela implementação da propriedade serializada de ações atômicas."
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+"Considere um simples exemplo. Assuma que o <classname>Example</classname> é uma classe de persistência do usuário definido derivada de um <classname>LockManager</classname>. Um aplicativo contendo um Trans de transação atômica acessa um objeto (chamado 0) de tipo de <classname>Example</"
+"classname>: Tudo isto, pela invocação da operação op1, que envolve mudanças de estado para 0. A propriedade de serialização requer que um bloqueio de gravação deve ser adquirido em 0, antes disto ser modificado. Desta forma, o corpo do op1 deverá conter uma chamada para a operação <literal>setlock</literal> de controlador de concorrência:"
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr "A operação <literal>setlock</literal> fornecida pela classe <classname>LockManager</classname> fornece as seguintes funções nesta situação:"
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid "Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr "Verifiqua a compatibilidade de bloqueio de gravação com os bloqueios retidos no momento, e se permitido:"
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+"Chama a ativação da operação <classname>StateManager</classname> que carregará, caso ainda não tenha sido carregado, o último estado de persistência 0 a partir do armazenamento do objeto. E, então chama a operação <classname>StateManager</classname> modificada que possui efeito de criação de uma instância de <classname>RecoveryRecord</classname> ou <classname>PersistenceRecord</"
+"classname> para 0, dependendo se 0 era persistente ou não (o Bloqueio é um bloqueio <literal>WRITE</literal>, então o estado antigo do objeto deve ser mantido antecipadamente à modificação). Além disso, insere isto numa <classname>RecordList</classname> de <classname>Trans</classname>."
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr "Cria e insire uma instância LockRecord no RecordList da Trans."
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+"Vamos supor que a ação <literal>Trans</literal> foi abortada em algum momento após o bloqueio ter sido adquirido. Então, a operação de reversão da <classname>AtomicAction</classname> processará a instância de <classname>RecordList</"
+"classname> associada com <literal>Trans</literal>, pela invocação numa operação <literal>Abort</literal> apropriada em várias gravações. A implementação desta operação pela classe <classname>LockRecord</classname> irá liberar o bloqueio <literal>WRITE</literal> enquanto que o <classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> restaurará o estado prévio do 0."
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr "É importante perceber que todos os trabalhos acima são automaticamente executados pelo <emphasis>TxCore</emphasis>, em nome do programador do aplicativo. O programador precisa apenas inicializar a transação e definir um bloqueio apropriado. O <emphasis>TxCore</emphasis> e os <emphasis>Objetos Transacionais para Java</emphasis> cuidam do registro do participante, persistência, controle de concorrência e recuperação."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_02.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_02.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1758 @@
+# translation of Chapter_02.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_02\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 11:22+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr "Usando TxCore "
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr "Neste seção descreveremos em mais detalhes o <emphasis>TxCore</emphasis> e os <emphasis>Objetos Transacionais para Java</emphasis>, além de demonstrar como isto pode ser utilizado para construir aplicativos transacionais."
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr "Gerenciamento de estado"
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr "Estados do Objeto"
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+"O <emphasis>TxCore</emphasis> precisa estar apto a relembrar o estado de um objeto por inúmeros propósitos, incluindo a recuperação (o estado representa algum estado passado do objeto), e para a persistência (o estado representa o estado final de um objeto no término do aplicativo). Uma vez que todos estes requerimentos solicitam funcionalidade comum, eles são implementados usando o mesmo mecanismo - as classes <classname>Input/OutputObjectState</classname> "
+"e <classname>Input/OutputBuffer</classname>. "
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr "OutputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr "InputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr ""
+"A classe <classname>Input/OutputBuffer</classname> mantém um array interno da instância de tipos de Java padrão da qual pode ser continuamente empacotada (desempacotada) usando as operações de empacotar (desempacotar). Este buffer é automaticamente remodelado em caso dele possuir espaço insuficiente. As instâncias estão todas armazenadas no buffer de forma padrão (então chamadas network "
+"byte order) com a finalidade de fazê-las trabalhar independemente. "
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr "OutputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr "InputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr ""
+"A classe <classname>Input/OutputObjectState</classname> fornece toda a funcionalidade do <classname>Input/OutputBuffer</classname> (através da herança), mas adiciona duas variáveis da instância extras, das quais significam o Uid e tipo de objeto para cada instância <classname>Input/OutputObjectState</"
+"classname>, sendo que esta é uma imagem compacta. Isto é usado quando acessando o armazenamento do objeto durante o armazenamento e recuperação do estado do objeto."
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr "O armazenamento do objeto"
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr "O armazenamento do objeto fornecido com <emphasis>TxCore</emphasis> possui deliberadamente uma interface correta restringida, da qual pode ser implementada em diversas maneiras. Por exemplo, os armazenamentos do objeto estão implementados na memória compartilhada; no sistema de arquivo Unix (em muitas maneiras diferentes) e como um armazenamento remoto acessível. Você poderá encontrar no Apêndice informações mais completas referentes à disponibilidade de armazenamentos de objetos em <emphasis>TxCore</emphasis>."
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr "Assim como todas as classes <emphasis>TxCore</emphasis>, os armazenamentos de objeto padrões são implementações Java pura. É necessário usar métodos nativos para o acesso à memória compartilhada e outras implementações de armazenamento de objeto complexo."
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+"Todos os armazenamentos do objeto retêm e recuperam instâncias das classes <classname>Input/OutputObjectState</classname>. Estas instâncias são nomeadas pela Uid e Type de Objeto que as mesmas representam. Os estados são lidos usando a operação <command>read_committed</command> e gravados pelo sistema usando a operação <command>write_uncommitted</command>. Sob operação normal, os estados de objetos novos não substituem estados de objetos antigos, mas são gravados pelo armazenamento como cópias ocultas. Estas cópias ocultas substituem as originais apenas quando a operação <command>commit_state</command> for invocada. Normalmente, toda a interação com o armazenamento do objeto é executada pelos componentes de sistema <emphasis>TxCore</"
+"emphasis> como apropriada, assim como a existência de qualquer versão oculta de objetos no armazenamento está oculta ao programador."
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+"Quando o objeto transacional for executado, é necessário que ele efetue certas mudanças do estado persistente de forma que isto possa ser recuperado num evento de uma falha e também continue a execução ou reversão. Quando usando os <emphasis>Objetos Transacionais para Java</emphasis>, o <emphasis>TxCore</"
+"emphasis>  irá cuidar disto automaticamente. Para garantir as propriedades ACID, estas mudanças de estado devem ser esvaziadas para a implementação de armazenamento persistente, antes que a transação possa proceder para a execução. Caso elas não sejam esvaziadas, o aplicativo assumirá que a transação foi executada quando de fato as mudanças de estado ainda estiverem residindo com um cache de sistema de operação, além de poder ocorrer o perdido de falha do sistema subseqüentemente. Por padrão, o <emphasis>TxCore</emphasis> garante que tais mudanças de estado foram esvaziadas. No entanto, esta tarefa pode impor uma penalidade de desempenho significante no aplicativo. Para prevenir o esvaziamento do estado do objeto transacional, configure a variável <literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> para OFF."
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr "Selecionando uma implementação de armazenamento de objeto"
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+"O <emphasis>TxCore</emphasis> vem com suporte para diversas implementações de armazenamento de objeto diferenciadas. O apêndice descreve estas implementações como selecionar e configurar uma implementação fornecida (usando a variável da propriedade <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal>) baseando-se no objeto, além de indicar como implementações adicionais podem ser fornecidas."
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr "A classe <emphasis>TxCore</emphasis> <classname>StateManager</classname> gerencia o estado de um objeto e fornece todo mecanismo de suporte básico solicitado por um objeto para o propósito de gerenciamento de estado. O <classname>StateManager</classname> é responsável por criar e registrar os recursos apropriados relacionados com a persistência e recuperação do objeto transacional. Caso a transação seja aninhada, então o <classname>StateManager</classname> irá também propagar estes recursos entre transações child e seus parents no período de execução."
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr "Os objetos em <emphasis>TxCore</emphasis> são indicados como três possíveis classificações básicas. Eles poderão ser simplesmente recuperáveis, neste caso o <classname>StateManager</classname> tentará gerar e manter a informação de recuperação apropriada para o objeto (como as instâncias da classe <classname>Input/OutputObjectState</classname>). Estes determinados objetos possuem um ciclo de vida que não excede o programa do aplicativo que os cria. Os objetos poderão ser recuperáveis e persistentes, neste caso o tempo de vida do objeto é presumido como maior do que daquele de criação ou de acesso de aplicativo. Adicionado a informação de recuperação mantida, o <classname>StateManager</classname> tentará carregar (descarregar) automaticamente qualquer estado de persistência existente para o objeto chamando a operação <command>activate</command> (<command>deactivate</command>) em períodos apropriados. Finalmente, os objetos talvez não pos!
 suam nenhuma destas capacidades. Neste caso, nenhuma informação de recuperação é mantida nem mesmo uma tentativa de ativação/desativação do objeto automaticamente. Esta propriedade do objeto é selecionada no período de construção do objeto e não pode ser modificada desde então. Dessa forma, um objeto não pode ganhar (ou perder) capacidades de recuperação em algum ponto arbitrário durante o próprio ciclo de vida. "
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+"Caso um objeto seja recuperado (ou persistente) então o <classname>StateManager</"
+"classname> invocará as operações <command>save_state</command> (enquanto executando a <command>deactivation</command>), <command>restore_state</"
+"command> (enquanto executando a ativação) e tipo em vários pontos durante a execução do aplicativo. Estas operações devem ser implementadas pelo programador uma vez que o <classname>StateManager</classname> não possui acesso a descrição de execução do layout de um objeto Java arbitrário em memória. Desta forma, ele não pode implementar a política padrão para conversão da versão de memória do objeto à sua própria forma passiva. No entanto, as capacidades fornecidas pelo <classname>Input/OutputObjectState</classname> fazem a gravação destas rotinas bastante simples. Por exemplo, a implementação <command>save_state</"
+"command> para a classe <classname>Example</classname> possuía as variáveis de membro chamadas A, B e C e poderia parecer-se com o seguinte:"
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"Com a finalidade de suportar a recuperação de travamento para objetos de persistência, é necessário que todos <command>save_state</command> e métodos <command>restore_state</command> de objetos do usuário chamem o <command>super.save_state</command> e o "
+"<command>super.restore_state</command>."
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr "O método tipo é usado para determinar a localização no armazenamento do objeto onde o estado das instâncias daquela classe serão salvas e por fim restauradas. Na realidade, isto pode ser qualquer seqüência válida. No entanto, você deverá evitar o uso do caracter (#), pois ele é reservado para diretórios especiais que solicitam o <emphasis>TxCore</emphasis>."
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr ""
+"A operação <command>get_uid</command> do <classname>StateManager</"
+"classname> fornece apenas o acesso de leitura para um nome do sistema interno do objeto para qualquer que seja o propósito que o programador pretenda solicitar (como inscrição do nome em um servidor de nome). O valor do nome de sistema interno pode apenas ser configurado quando um objeto é inicialmente construído - tanto pela provisão de um parâmetro explícito ou pela geração de um novo identificador, uma vez que o objeto for criado."
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr "O método <command>destroy</command> pode ser usado para remover o estado do objeto a partir do armazenamento do objeto. Esta é uma operação anatômica, e portanto removerá apenas o estado se a transação de nível superior com que ela foi invocada eventualmente confirmar. O programador deve obter um acesso exclusivo ao objeto prévio para a invocação desta operação."
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr "Desde que a persistência e recuperação do objeto possuam solicitações complementares (a única diferença está onde a informação de estado é armazenada e qual é sua finalidade), o <classname>StateManager</classname> efetivamente combina o gerenciamento destas duas propriedades dentro de um mecanismo único. Quer dizer, ele usa a instância de ambas as classes Input/OutputObjectState para fins de recuperação e persistência. Uma discussão adicional passada ao <command>save_state</command> e operações <command>restore_state</command> permite o programador determinar o propósito pelo qual qualquer invocação dada está sendo feita, assim como permitir que informações diferentes sejam salvas para os propósitos de recuperação e persistência."
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr "Modelos de Objeto"
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr "O <emphasis>TxCore</emphasis> suporta dois modelos para objetos, pelos quais apresentaremos de fato, como um estado de objetos e controle atual são implementados: "
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr "<termdef>SINGLE</termdef>: apenas uma única cópia de objeto existe no aplicativo. Isto irá residir com um único JVM e todos os clientes deverão endereçar suas invocações a este servidor. Este modelo fornece um melhor desempenho, mas representa um único ponto de falha. E, caso ele se encontre em um ambiente multi-segmentado, ele talvez não proteja o objeto de corromper-se, caso um segmento único falhar."
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr "Modelo do Objeto Único"
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr "MULTIPLE: logicamente uma instância única do objeto existe, porém estas cópias estão distribuídas através de diferentes JVMs. O desempenho deste modelo é pior do que um modelo único, porém isto fornece melhor isolação de falha."
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr "Modelo do Objeto Múltiplo"
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr ""
+"O modelo padrão é SINGLE. O programador pode substituí-lo baseando-se no objeto, apenas fornecendo uma instância apropriada da classe <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname>, na construção do objeto."
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr "O modelo pode ser mudado entre cada instanciação sucessiva do objeto. Por exemplo: isto não precisa ser o mesmo durante o ciclo de vida do objeto."
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr "Para fornecer uma classe <classname>ObjectName</classname> adequada, é necessário executar os seguintes passos:"
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr "criar uma nova instância do <classname>ObjectName</classname>."
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+"configurar o atributo do modelo do objeto usando o nome <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal>"
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr "Por exemplo:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr "Sumário"
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+"Em resumo, a classe <emphasis>TxCore</emphasis> gerencia o estado de um objeto e fornece os mecanismos de suporte básicos por um objeto, para fins de gerenciamento de estado. Algumas operações devem ser definidas pelo desenvolvedor de classe. Estas operações são: <command>save_state</command>, <command>restore_state</command>, e "
+"<command>type</command>."
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr "boolean save_state (OutputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+"Invocado a qualquer instante em que o estado de um objeto precisa ser salvo para um uso futuro - primeiramente para fins de recuperação e persistência. O parâmetro <literal>ObjectType</literal> indica a razão pela qual o <command>save_state</command> foi invocado pelo <emphasis>TxCore</emphasis>. Isto permite que o programador salve pedaços diferentes de informação dentro do objeto <classname>OutputObjectState</classname> fornecido como primeiro parâmetro, baseando-se na necessidade ou não do estado, para fins de recuperação e persistência. Por exemplo, os ponteiros de outros objetos <emphasis>TxCore</emphasis> poderão ser salvos para fins de recuperação, mas como Uid para fins de persistência. Conforme apresentado anteriormente, a classe <classname>OutputObjectState</"
+"classname> fornece operações convenientes para permitir que as instâncias sejam salvas em todos os tipos básicos de Java. É necessário que todos os métodos <command>save_state</"
+"command> chamem o <command>super.save_state</command>, com a finalidade de suportar a recuperação de travamento para objetos de persistência. "
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr "O <command>save_state</command> assume que um objeto é internamente consistente e que todas as variáveis salvas possuem valores válidos. Isto é responsabilidade do programador garantir que esta situação aconteça."
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr "boolean restore_state (InputObjectState state, int ObjectType) "
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr "Invocado a qualquer instante em que o estado de um objeto precisa ser restaurado para aquele fornecido. O segundo parâmetro permite interpretações diferentes do estado fornecido. É necessário que todos os métodos <command>restore_state</command> chamem <command>super.restore_state</command>, com o objetivo de suportar a recuperação de travamento para objetos de persistências."
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr "String type ()"
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+"O mecanismo de persistência <emphasis>TxCore</emphasis> solicita um meio para determinar o tipo de um objeto, assim como uma seqüência para que ele possa salvar/restaurar o estado do objeto para/do armazenamento do objeto. Por tratado, esta informação indica a posição da classe de hierarquia. Por exemplo, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr "Exemplo"
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr "Considere a seguinte classe <classname>Array</classname> básica, derivada da classe <classname>StateManager</classname> (neste exemplo, com o objetivo de ilustrar a restauração e o procedimento para salvar um estado de objeto, a variável highestIndex é usada para supervisionar o maior elemento do array, do qual possui um valor diferente de zero):"
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr "O <command>save_state</command>, <command>restore_state</command> e operações <command>type</command> podem ser definidos como segue a seguir:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr "Gerenciamento de bloqueio e controle atual"
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr "A informação de controle atual com o <emphasis>TxCore</emphasis> é mantida pelos bloqueios. Os bloqueios, que são solicitados a compartilharem-se entre objetos em processos diferentes, poderão ser mantidos com o armazenamento de bloqueio, similarmente à facilidade de armazenamento de objeto apresentada anteriormente. O armazenamento de bloqueio fornecido com o <emphasis>TxCore</emphasis> possui deliberadamente uma interface correta restringida, de maneira que isto pode ser implementada numa porção de diferentes maneiras. Por exemplo, os armazenamentos de bloqueio são implementados numa memória compartilhada, no sistema de arquivo Unix (em muitas formas diferentes) e como um armazenamento acessível remoto. Para maiores informações a respeito dos armazenamentos de objeto disponíveis no <emphasis>TxCore</emphasis>, por favor dirija-se ao Apêndice."
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr "Assim como todas as classes <emphasis>TxCore</emphasis>, os armazenamentos de bloqueio padrões são pura implementação Java. É necessário usar métodos nativos para acessar a memória compartilhada e outras mais complexas."
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr "Selecionando uma implementação de armazenamento de bloqueio"
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+"O <emphasis>TxCore</emphasis> vem acompanhado de suporte para diversas implementações de armazenamento de objeto. Caso um modelo de objeto seja usado como SINGLE, não haverá solicitação do armazenamento de bloqueio para manter os bloqueios, uma vez que o objeto não é exportado. No entanto, caso o modelo MULTIPLE seja usado, diferentes ambientes de rodagem (processo, máquinas virtuais Java) provavelmente precisarão compartilhar a informação de controle atual. O tipo de implementação do armazenamento de bloqueio para uso pode ser especificada para todos os objetos com um ambiente de execução, usando a variável de propriedade <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal>. Atualmente, isto pode ter um dos seguintes valores:"
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr "BasicLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr "Isto é uma implementação que, pelo padrão, não permite o compartilhamento de informação armazenada entre ambientes de execução. O programador do aplicativo é responsável pelo compartilhamento da informação de armazenamento."
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr "BasicPersistentLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+"Esta é a implementação padrão e armazena informação de bloqueamentos armazenados no sistema de arquivo local. Desta forma, os ambientes de execução que dividem o mesmo armazenamento de arquivo podem compartilhar a informação de controle atual. A raiz do sistema de arquivo em que a informação de bloqueamento é gravada, é o diretório <filename>LockStore</"
+"filename> com o diretório de instalação <emphasis>TxCore</emphasis>. Isto pode ser substituído no período de execução configurando a variável de propriedade <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> ou estabelecendo a localização com a <literal>CLASSPATH</literal>:"
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr "<para>ou</para>"
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr "Caso nenhuma destas abordagens sejam tomadas, a localização padrão estará no mesmo nível do diretório <filename>etc</filename> da instalação."
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr "LockManager"
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "O controlador atual é implementado pela classe <classname>LockManager</classname>, da qual fornece um comportamento padrão concreto enquanto permitindo que o programador substitua a mesma, caso isto seja considerado necessário pela semântica particular da classe sendo programada. A interface do programador primária para o controlador atual é feita através da operação setlock. Por padrão, o sistema de execução <emphasis>TxCore</emphasis> reforça o bloqueamento bifásico total seguindo uma leitura múltipla, política de leitura múltipla baseado por objeto. A aquisição do bloqueio está sob controle do programador, uma vez que o <classname>StateManager</classname> não pode determinar se uma operação modifica um objeto. O <classname>LockManager</classname> não pode determinar se uma operação solicita um bloqueio de leitura e gravação. No entanto, a liberação de bloqueio está normalmente sob controle do sistema e não requer futura intervençÃ!
 £o por parte do programador. Isto significa que a propriedade bifásica pode ser corretamente mantida."
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+"A classe <classname>LockManager</classname> é primeiramente responsável pelas solicitações gerenciadas para configurar um bloqueio ou para liberar um bloqueio conforme apropriado. No entanto, uma vez que ela é derivada de um <classname>StateManager</"
+"classname>, ela pode também controlar quando algumas das facilidades hierárquicas são invocadas. Por exemplo, caso uma solicitação de determinação de bloqueio de gravação seja concedida, o <classname>LockManager</classname> invocará a determinação diretamente modificada, da qual a configuração de um bloqueio de gravação implica que a operação de invocação deve ser referente a modificação do objeto. Isto poderá resultar no salvamento de informação de recuperação, caso o objeto seja recuperado. Num processo parecido, a aquisição de bloqueio com êxito causa a invocação do <command>activate</command>."
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+"Portanto, o <classname>LockManager</classname> é diretamente responsável pelos objetos de persistência de ativação/desativação e registro de <classname>Resources</classname> para gerenciamento de controle local. Caso conduzirmos a classe <classname>StateManager</classname>, isto será também responsável pelo registro de <classname>Resources</classname>, para manipulação de estado de recuperação/persistência e recuperação de objeto. O programador do aplicativo simplesmente determina os bloqueios apropriados e finaliza as transações. Além disso, ele estende o <command>save_state</command> e métodos <command>restore_state</"
+"command> do <classname>StateManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr "A operação <command>setlock</command> deve ser parametrizada com o tipo de bloqueamento solicitado (<literal>READ</literal> / <literal>WRITE</literal>), e o número de entradas para adquirir o bloqueamento antes da desistência. Caso um conflito de bloqueio ocorrer, um dos seguintes cenários tomarão espaço:"
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+"Caso o valor de entrada seja igual ao <literal>LockManager.waitTotalTimeout</"
+"literal>, a seqüência que chama o <command>setlock</command> será bloqueada até que o bloqueio seja liberado ou o tempo total especificado tenha sido transcorrido. Neste caso, o <literal>REFUSED</literal> será retornado."
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr ""
+"Caso o bloqueio não possa ser obtido imediatamente, o <classname>LockManager</"
+"classname> tentará um número específico de entradas, esperando pelo valor de tempo especificado entra cada tentativa de falha. O padrão é de 100 tentativas, sendo cada tentativa separada por 0.25 segundos de espera. O tempo entre entradas é especificado em micro-segundos."
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr "Caso ocorra um conflito de bloqueio, a implementação atual simplesmente concederá um intervalo às solicitações de bloqueio, prevenindo desta forma congelamentos, ao invés de fornecer um esquema completo de detenção de congelamento. Caso o bloqueio solicitado seja obtido, a operação setlock retornará o valor <literal>GRANTED</literal>. Do contrário, o valor <literal>REFUSED</literal> será retornado. É responsabilidade do programador garantir que o restante do código para uma operação seja apenas executada se uma solicitação de bloqueio for concedida. Segue abaixo exemplos do uso da operação <command>setlock</command>. "
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr "O mecanismo de controle atual é integrado ao mecanismo de ação atômica, assim como a garantia de que os bloqueios estão concedidos numa informação apropriada do objeto. Esta é registrada com a ação atômica de execução atual, da qual os bloqueios são liberados no tempo correto. Isto isenta o programador da carga de liberação explícita de quaisquer bloqueios adquiridos, caso eles fossem adquiridos com ações atômicas. No entanto, se os bloqueios forem adquiridos num objeto <emphasis>fora</emphasis> do escopo de uma ação atômica, será responsabilidade do programador liberar os bloqueios quando solicitados, usando a operação <command>releaselock</command> correspondente."
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr "Política de bloqueamento"
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+"Diferente de muitos outros sistemas, os bloqueios em <emphasis>TxCore</emphasis> não são tipos de sistemas especiais. Ao invés disso, eles são instâncias simples de outros objetos <emphasis>TxCore</emphasis> (a classe <classname>Lock</classname> que é também derivada do <classname>StateManager</classname>. Sendo assim, os bloqueios podem ser persistentes caso solicitado e podem também ser nomeados de maneira simples). Adicionado a isto, o <classname>LockManager</classname> não possui conhecimento de semânticas da política atual pelas solicitações de bloqueio que são concedidas. Tal informação é mantida pelas instâncias de classe <classname>Lock</"
+"classname> atual que fornece operações (a operação <literal>conflictsWith</literal>) pelas quais o <classname>LockManager</"
+"classname> pode determinar se dois bloqueios se conflitam ou não. Esta separação é importante uma vez que isto permite que o programador derive novos tipos de bloqueio, a partir da classe <classname>Lock</classname> básica e fornecendo definições apropriadas dos níveis de aumento das operações de conflito, que possam ser possível com a concorrência. "
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+"A classe <classname>Lock</classname> fornece uma operação <command>modifiesObject</"
+"command>, da qual o <classname>LockManager</classname> usa para determinar se a concessão desta solicitação de bloqueio requer uma chamada de modificação. Esta operação é fornecida para que os modos de bloqueamento, diferentes de simplesmente ler e escrever, possam ser suportados. A classe de <classname>Lock</classname> fornecida suporta a política de gravação única/leitura múltipla tradicional. "
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr "Construção e destruição do objeto"
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr "Lembre-se que os objetos <emphasis>TxCore</emphasis> podem ser recuperáveis, recuperáveis e persistentes, ou nenhuma destas opções. Além disso, cada objeto possui um nome interno único. Estes atributos podem ser apenas determinados quando o objeto for construído. Desta forma, o <classname>LockManager</classname> fornece dois construtores protegidos para o uso pelas classes derivadas, sendo que cada um deles cumpre um propósito distinto:"
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr "LockManager ()"
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr "Este construtor permite a criação de novos objetos, quer dizer, não há estado prévio assumido para existir."
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr "LockManager (int ObjectType, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr "Conforme visto anteriormente, este construtor permite que a criação de novos objetos, dos quais são presumidos a não possuir um estado prévio. O parâmetro <literal>ObjectType</literal> determina se é que um objeto é recuperável (indicado pelo <literal>RECOVERABLE</literal>), recuperável e persistente (indicado pelo <literal>ANDPERSISTENT</literal>) ou nenhum dos dois (<literal>NEITHER</literal>). Caso um objeto seja marcado como persistente, o estado do objeto será armazenado em um dos armazenamentos do objeto. O parâmetro compartilhado apenas possui significado se for <literal>RECOVERABLE</literal>. Caso o <literal>attr</literal> não for nulo e o modelo do objeto for <literal>SINGLE</literal> (comportamento padrão), o estado recuperável do objeto será mantido com o próprio objeto (por exemplo: ele não possui representação externa). Do contrário, um armazenamento do objeto (volátil) em memória é usado para armazenar o estado do objeto entre a!
 ções atômicas."
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr "Os construtores para objetos de persistência nova devem usar ações atômicas entre os mesmos. Isto garantirá que o estado do objeto é automaticamente gravado ao armazenamento do objeto, tanto quando a ação no construtor confirmar ou se uma ação incluída existir, quando a ação de nível superior apropriada for confirmada. Outros exemplos neste tópico irão ilustrar este ponto mais a fundo. "
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr "LockManager(Uid objUid)"
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr "Este construtor permite o acesso a um objeto persistente existente, do qual o nome é dado pelo parâmetro <literal>objUid</literal>. Os objetos construídos usando esta operação terão normalmente seus estados prévios carregados (identificados pelo <literal>objUid</literal>), a partir de um armazenamento automatizado pelo sistema."
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr "LockManager(Uid objUid, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr "Conforme visto anteriormente, este construtor permite o acesso a um objeto de persistência existente, em que o nome interno é dado pelo parâmetro <literal>objUid</literal>. Os objetos construídos usando esta operação irão normalmente possuir seus estados prévios carregados (identificados pelo <literal>objUid</literal>), a partir de um armazenamento do objeto automatizado pelo sistema. Caso o parâmetro attr não seja nulo, e o modelo do objeto for <literal>SINGLE</literal> (o comportamento padrão), então o objeto não será reativado no início de cada transação de nível superior."
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr "O destruidor de uma classe de programador definida deve invocar o término da invocação terminada para informar o mecanismo gerenciador de estado que o objeto está prestes a ser destruído, do contrário resultados imprevisíveis poderão ocorrer. "
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""
+"Uma vez que o <classname>LockManager</classname> é herdado a partir do <classname>StateManager</classname>, ele passará qualquer instância à classe <classname>StateManager</"
+"classname>. Assim como, é possível configurar o modelo do objeto <classname>StateManager</classname> como descrito anteriormente."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_03.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_03.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,698 @@
+# translation of Chapter_03.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_03\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 14:14+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr "Questões Gerais de Transação"
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr "Questões avançadas de transações com TxCore"
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr "As ações atômicas (transações) podem ser usadas por ambos programadores de aplicativo e desenvolvedores de classe. Assim como, as operações completas (ou partes das operações) podem ser atômicas, conforme solicitado pelas semânticas de uma operação particular. Este capítulo descreverá algumas das questões mais fúteis envolvidas usando transações em geral e o <emphasis>TxCore</emphasis> em particular."
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr "Transações de checagem"
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+"Num aplicativo multi-segmentado, os segmentos múltiplos podem ser associados com uma transação durante o próprio ciclo de vida, por exemplo: o compartilhamento do segmento do contexto. Além disso, é possível que um segmento encerre uma transação, enquanto outros segmentos estiverem ativos com a mesma. Num ambiente distribuído, pode ser difícil garantir que todos os segmentos tenham encerrado com uma transação, no momento em que ela for encerrada. Por padrão, o <emphasis>TxCore</emphasis> emitirá um aviso caso um segmento tentar encerrar uma transação enquanto outras transações estiverem ainda ativadas com isto. No entanto, isto permitirá que o encerramento da transação continue. Outras soluções a este problema são possíveis, por exemplo: o bloqueamento do segmento que está encerrando a transação até que outros segmentos tenham se dissociado do contexto de transação. Portanto, o <emphasis>TxCore</emphasis> fornece a classe <classname>com.arju!
 na.ats.arjuna."
+"coordinator.CheckedAction</classname> que permite que a política de finalização do segmento/transação seja substituída. Cada transação possui uma instância de classe associada com isto, e os programadores do aplicativo podem fornecer as próprias implementações por cada transação."
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr "Quando um segmento tentar encerrar a transação e houver segmentos ativos com o mesmo, o sistema invocará o método de checagem no objeto <classname>CheckedAction</classname> de transação. Os parâmetros para o método de checagem são os seguintes: "
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr "isCommit"
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr "Indica se é que a transação está no processo de confirmação ou reversão."
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr "actUid"
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr "O identificador de transação."
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr "list"
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr "Indica uma lista de todos os segmentos atuais marcados como ativos nesta transação."
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr "Quando a checagem retornar, o término da transação continuará. Certamente, o estado da transação neste ponto pode ser diferente daquele quando a checagem foi chamada. Por exemplo: a transação poderá, subseqüentemente, ter sido confirmada."
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr "Estatísticas obtidas"
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr ""
+"Por padrão, o JBossTS não mantém qualquer informação do histórico sobre as transações. No entanto, pela configuração a variável da propriedade <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> está para YES. O serviço de transação manterá informações a respeito do número de transações criadas e seus resultados. Esta informação pode ser obtida durante a execução de uma aplicativo transacional, através da classe <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname>:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr "Last resource commit optimisation"
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr ""
+"Em alguns casos pode ser necessário inscrever participantes que não estejam cientes da transação de confirmação bifásica. Caso haja apenas um único recurso, então não há necessidade para a confirmação bifásica. No entanto, e se houver recursos múltiplos na transação? Neste caso, o Last "
+"Resource Commit optimization - LRCO (Otimização de Confirmação do Último Recurso) entrará em função. É possível que um único recurso que esteja ciente da monofase (por exemplo; poderá apenas efetuar a confirmação ou reversão sem nenhuma preparação), se inscreva em uma transação com recursos cientes de confirmação bifásica. O coordenador trata os recursos cientes da monofase de maneira diferenciada, da qual executa a fase de preparação em todos os demais recursos primeiramente. E, caso isto então pretenda confirmar a transação, ele passará o controle ao recurso ciente da monofase. Se isto for confirmado, então o coordenador fará a decisão de confirmação e tentativa de confirmação em outros recursos também. "
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr ""
+"Para que se possa utilizar o LRCO, seu participante deve implementar a interface <classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> e registrar-se na transação através do <command>BasicAction</"
+"command>.add operation. Uma vez que esta operação espera por instâncias do <classname>AbstractRecord</classname>, você deve criar uma instância <classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> e ceder seu participante como parâmetro construtor, conforme apresentado abaixo:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr "Transações aninhadas"
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr "Não existem construções especiais para aninhamento das transações: caso uma ação seja iniciada enquanto outra ação é rodada, então esta será automaticamente aninhada. Isto permite que uma estrutura modular para aplicativos, onde objetos podem ser implementados usando ações atômicas com suas próprias operações. Tudo isto, sem que o programador do aplicativo tenha que preocupar-se com os aplicativos que os usam. Por exemplo: se os os aplicativos usarem ou não as ações atômicas também. Desta forma, em algumas ações de aplicativos elas poderão ser de nível superior, enquanto que em outras elas podem ser aninhadas. Os objetos gravados desta maneira podem então ser compartilhados entre programadores de aplicativos e o <emphasis>TxCore</emphasis> garantirá suas consistências."
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr "Caso uma ação aninhada seja abortada, então todos os seus trabalhados serão desfeitos ainda que os meios de bloqueamento bifásico estritos, obtidos por qualquer bloqueio, sejam retidos até a confirmação ou aborto da ação de nível superior. Caso uma ação aninhada seja confirmada, então o trabalho que a mesma tenha desempenhado será apenas confirmado pelo sistema se a ação de nível superior for confirmada. E, caso a ação de nível superior seja abortada, então todo o trabalho será desfeito. "
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr "A confirmação ou aborto de uma ação aninhada não atinge diretamente o resultado de uma ação com que ela está aninhada. Isto é um aplicativo dependente e permite um programador estruturar ações atômicas para conter falhas, trabalho desfeito, etc."
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr "Confirmação assíncrona de uma transação"
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr "Por padrão, o JBossTS executa o protocolo de confirmação de uma transação de nível superior numa maneira síncrona. Por exemplo; será dito a todos recursos registrados para preparar em ordem do segmento único, e então será pedido para que eles efetuem a confirmação ou reversão. Isto possui diversas desvantagens: "
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr "No caso de muitos recursos registrados, a operação de preparação pode logicamente ser invocada em paralelo com outro recurso. A desvantagem é que se um recurso “adiantado” na lista de recurso registrado força uma reversão durante o preparo, possivelmente muitas operações de preparo serão feitas sem necessidade."
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr "No caso em que uma reportagem heurística não é solicitada pelo aplicativo, a segunda fase do protocolo de confirmação pode ser feito de maneira assíncrona, uma vez que seu sucesso ou falha não tenham importância."
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+"Portanto, o <emphasis>JBossTS</emphasis> fornece opções de execução para ativar possíveis otimizações de segmentação. Pela configuração, a variável do ambiente <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> está para <literal>YES</literal>, durante a fase de preparo que um segmento separado criará para cada participante na transação. Se configurarmos <literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> para <literal>YES</literal>, um segmento separado será criado para complementar a segunda fase da transação caso o conhecimento sobre os resultados heurísticos não forem solicitados."
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr "Transações de nível superior independente"
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr ""
+"Em adição ao nível superior normal e ações atômicas aninhadas, o <emphasis>TxCore</"
+"emphasis> também suporta as ações de nível superior independentes, que podem ser usadas para realizar a serialização estrita numa maneira controlada. Uma ação de nível superior independente pode ser executada de qualquer lugar com outra ação atômica e comportamento exatamente igual a uma ação de nível superior normal. Os próprios resultados são construídos como permanentes uma vez que ela confirmar e não serão desfeitos caso qualquer uma das ações, das quais eram originalmente aninhadas, abortarem. "
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr "Ação de Nível Top Independente "
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr "Apresenta um típico aninhamento de ações atômicas, onde a ação B é aninhada com a ação A. Embora a ação atômica C seja logicamente aninhada com a ação B (isto possuia sua própria operação Iniciar invocada enquanto B era ativado), sendo que isto é uma ação de nível superior independente, ela será confirmada ou abortada independentemente de outras ações com a mesma estrutura. Devido a esta natureza de ações de nível superior independentes, elas devem ser usadas com cuidado e apenas em situações onde seus usos podem ser examinados com cautela."
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr "As ações de nível superior podem ser usadas num aplicativo apenas declarando e usando instâncias da classe <classname>TopLevelTransaction</classname>. Elas são usadas exatamente da mesma maneira que as demais transações."
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr "Transações com save_state e restore_state"
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+"Deve-se possuir muita cautela na gravação do <command>save_state</command> e das operações "
+"<command>restore_state</command>, garantindo que ações atômicas não sejam iniciadas (tanto explicitamente na operação ou implicitamente por meio do uso de algumas outras operações). Esta restrição aparece devido ao fato que o <emphasis>TxCore</emphasis> poderá invocar o <command>restore_state</command> como parte do próprio processo de confirmação, resultando na tentativa de executar uma ação atômica durante a confirmação ou aborto da fase de outra ação. Isto poderá violar as propriedades atômicas da ação que estão sendo confirmadas (abortadas). Desta maneira, este procedimento é desencorajado."
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr "Exemplo"
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr "Vamos considerar o exemplo Array fornecido previamente. As operações set e get podem ser implementadas conforme apresentado abaixo."
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr "Isto é uma simplificação do código, ignorando as condições de erro e exceções."
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr "Objetos coletores de lixo"
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr "Os objetos Java são deletados quando o coletor de lixo determinar que eles não são mais requeridos. A deletação de um objeto que está sob o controle de uma transação deve ser abordada com cuidado. Caso o objeto esteja sendo manipulado pela transação, o seu destino é conseqüentemente determinado pela transação. Portanto, independente das referências de um objeto transacional mantido por um aplicativo, o <emphasis>TxCore</emphasis> irá sempre reter suas próprias referências para garantir que o objeto não é lixo coletado, até que qualquer transação tenha sido terminada."
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr "Transações de intervalo"
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr "Pelo padrão, as transações duram até que elas sejam terminadas pelo aplicativo que as criam ou se uma falha ocorrer. No entanto, é possível configurar um intervalo (em segundos) por transação, de forma que se a transação não for terminada antes que o intervalo acabe, ela será automaticamente revertida."
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr ""
+"No <emphasis>TxCore</emphasis>, o valor do intervalo é fornecido como uma parâmetro para o construtor <classname>AtomicAction</classname>. Caso o valor <literal>AtomicAction.NO_TIMEOUT</literal> seja fornecido (padrão), a transação não será automaticamente interrompida. Qualquer outro valor positivo é assumido ao intervalo da transação (em segundos). Um valor zero é adquirido para ser um intervalo padrão global, do qual pode ser fornecido pela propriedade <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>, a não ser que o valor padrão modificado seja 60 segundos."
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+"Quando uma transação de nível superior for criada com um intervalo diferente de zero, ela estará sujeita a reversão, caso a mesma não seja completada com o número específico de segundos. O <emphasis>JBossTS</emphasis> usa um segmento reaper separado, do qual monitora todas as transações criadas localmente e as força a executar a reversão, caso o intervalo das mesmas acabe. Para prevenir que este segmento consuma tempo do aplicativo, ele apenas roda periodicamente. O padrão de período de checagem é de 120000 milésimos de segundos, mas ele pode ser substituído pela configuração da variável de propriedade <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> para outro valor válido em milhões de segundo. Alternativamente, caso um <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> seja configurado para <literal>DYNAMIC</literal>, a transação reaper irá atuar a qualquer instante em que a transação sofrer um intervalo. Isto possui a vantagem de finalizar as transações com antecedência, mas, por outro lado, poderá sofrer com a re-programação contínua do segmento reaper."
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""
+"Caso um valor 0 seja especificado para o intervalo da transação de nível superior (ou não haja intervalo especificado), então o <emphasis>JBossTS</emphasis> não irá impor qualquer intervalo na transação, por exemplo: isto permitirá a rodagem indeterminadamente. O padrão de intervalo pode ser substituído pela configuração da variável da propriedade quando usando <emphasis>ArjunaCore</emphasis> ou <emphasis>ArjunaJTS</"
+"emphasis>, ou <literal>com.arjuna.ats.jts.defaultTimeout</literal> se utilizando <emphasis>ArjunaJTS</emphasis> para determinar o valor de intervalo em segundos."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_04.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_04.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,328 @@
+# translation of Chapter_04.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_04\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 14:46+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr "Dicas e Conselhos"
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr "Geral"
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr "Usando transações em construtores"
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr "Os exemplos demonstrados neste manual têm utilizado transações na implementação de construtores para novos objetos de persistência. Isto é discutido uma vez que garante a propagação correta deste estado do objeto para o armazenamento do objeto. Lembre-se de que o estado de um objeto persistente modificado é apenas gravado no armazenamento do objeto quando a transação de nível superior for confirmada. Desta forma, se uma transação do construtor for de nível superior e confirmada, então o mais novo objeto criado é gravado no armazenamento e será imediatamente disponível. No entanto, se a transação do construtor for confirmada, mas estiver aninhada devido a algumas outras transações iniciadas antecipadamente a rodagem da criação do objeto, então o estado será gravado apenas se todas as transações parent estiverem confirmadas."
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr "Por outro lado, caso o construtor não use transações, o aparecimento de inconsistências no sistema será possível. Por exemplo, caso não hajam transações ativadas quando o objeto for criado, então o próprio estado não será salvo ao armazenamento até a próxima vez em que o objeto seja modificado, sob o controle de algumas transações. "
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr "Considere a simples amostra abaixo:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+"Neste caso, os dois objetos são criados fora do controle de ação de nível superior A. O <literal>obj1</literal> é um novo objeto enquanto que o <literal>obj2</literal> é um objeto antigo existente. Quando a operação relembrar do <literal>obj2</"
+"literal> for invocada, o objeto será ativado e Uid do <literal>obj1</literal> relembrado. Uma vez que esta ação for confirmada o estado persistente do <literal>obj2</literal> poderá conter agora o Uid do objeto. No entanto, o estado do <literal>obj1</literal> por si próprio, não foi salvo uma vez que ele não foi manipulado sob o controle de qualquer ação. Na realidade, isto nunca será salvo a não ser que ele seja modificado sob o controle de algumas ações mais tarde no aplicativo. Porém, se o construtor tenha usado uma ação atômica, o estado do <literal>obj1</literal> poderia ter sido salvo automaticamente no período em que isto foi construído, e esta consistência jamais apareceria."
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr "Um pouco mais a respeito do save_state e restore_state"
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr ""
+"O <emphasis>TxCore</emphasis> poderá invocar a operação <command>save_state</"
+"command> do usuário definido de um objeto, a qualquer período durante o ciclo de vida de um objeto incluído durante a construção da execução do corpo de um construtor do objeto (particularmente se isto usa as ações atômicas). Isto é importante e portanto, todas aquelas variáveis salvas save_state são corretamente inicializadas."
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+"Deve-se ter atenção quando gravando as operações <command>save_state</"
+"command> e <command>restore_state</command>, garantindo que não há transações inicializadas (tanto explicitamente na operação ou implicitamente através do uso de alguma outra operação). Esta restrição surge devido ao fato de que o <emphasis>TxCore</emphasis> poderá invocar o <command>restore_state</"
+"command> como parte do próprio processo de confirmação resultante, na tentativa de executar uma transação atômica durante as fases confirmação ou aborto de outra transação. Isto poderá violar as propriedades atômicas da transação sendo confirmada (abortada). Por isto, ela não é recomendada."
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"Com a finalidade de suportar a recuperação de travamento para objetos de persistência, é necessário que todos métodos <literal>save_state</literal> e <literal>restore_state</literal> de objetos do usuário chamem o <command>super.save_state</command> e "
+"<command>super.restore_state</command>."
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr "Objetos de Empacotamento "
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr ""
+"Todos os tipos básicos de Java (int, long, etc.) podem ser salvos e restaurados a partir de uma instância <classname>Input/OutputObjectState</classname>, usando as rotinas de empacotamento (e desempacotamento) fornecidas pelo <classname>Input/OutputObjectState</"
+"classname>. No entanto, os objetos de empacotamento e desempacotamento poderiam ser manuseados de maneira diferente. O motivo disto é que os objetos de empacotamento trazem problemas adicionais de alliasing. Isto quer dizer, duas diferentes referências de objeto poderão estar em um ponto de fato atual no mesmo ítem. Por exemplo:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr "Ambos os pontos s1 e s2 de mesma seqüência e uma implementação naive do <command>save_state</command> poderão acabar copiando dobrado a seqüência. Do ponto de vista do <command>save_state</command>, isto é simplesmente ineficiente. No entanto, isto faz com que o <command>restore_state</command> seja incorreto uma vez que ele poderia desempacotar as duas seqüências em áreas diferentes de memória, destruindo a informação aliasing original. A versão atual do TxCore irá empacotar e desempacotar as referências de objeto separadamente."
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr "Uso direto do StateManager"
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr "Os exemplos apresentados neste manual possuem sempre classes de usuários derivadas do <classname>LockManager</classname>. As razões para isto são duplicadas. Primeiramente, e a mais importante, as restrições serializadas das ações atômicas solicitam isto, e o motivo pelo qual isto reduz a necessidade de intervenção por parte do programador. No entanto, tudo isto apenas se o acesso aos mecanismos de recuperação e persistência do <emphasis>TxCore</emphasis> for solicitado e a derivação direta de uma classe do usuário a partir do <classname>StateManager</classname> for possível."
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr ""
+"As classes derivadas diretamente do <classname>StateManager</classname> devem fazer uso dos próprios mecanismos de gerenciamento de estado explícito (estas interações são normalmente responsabilizadas pelo <classname>LockManager</classname>). A partir do ponto de vista do programador, isto soma na realização do uso apropriado das operações ativas, desativadas e modificadas, uma vez que os construtores do <classname>StateManager</"
+"classname> são efetivamente idênticos aos do <classname>LockManager</classname>."
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr "O <command>Activate</command> carrega um objeto do armazenamento do objeto. O Uid do objeto deve já estar configurado através do construtor e o objeto deve existir no armazenamento. Caso o objeto seja lido com sucesso, o <command>restore_state</command> será chamado para construir o objeto de memória. O <command>Activate</command> é idempotente, e, desta forma, uma vez que o objeto tenha sido ativado as próximas chamadas serão ignoradas. O parâmetro representa o nome raiz do armazenamento do objeto para buscar pelo objeto. Um valor nulo significa que você deve usar o armazenamento padrão. "
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr "A inversão do activate. As primeiras chamadas <command>save_state</command> para a construção da imagem compactada do objeto que é então salvo no armazenamento do objeto. Os objetos são apenas salvos caso eles tenham sido modificados, uma vez que eles foram ativados. O parâmetro representa o nome raiz do armazenamento do objeto no objeto que deverá ser salvo. O valor nulo significa que você deve usar o armazenamento padrão."
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr "void modified ()"
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr "<emphasis>Deve</emphasis> ser chamado antecipadamente à modificação do objeto em memória. Caso isto não seja chamado, o objeto não será salvo no armazenamento do objeto pela desativação."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_05.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_05.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,943 @@
+# translation of Chapter_05.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_05\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 15:47+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr "Ferramentas"
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr "Este capítulo explica como iniciar e usar as ferramentas do framework e quais delas estão disponíveis."
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr "Inicializando as ferramentas de Serviço de Transação"
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr "A maneira de inicializar as ferramentas do serviço de transação difere na operação do sistema que está sendo utilizado:"
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr "Windows"
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr "Clique duas vezes no link ‘Iniciar Ferramentas’ no grupo do Programa de Serviço de Transação JBoss do menu inicial."
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr "Unix"
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr "Inicie uma janela de comando e digite:"
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr "Uma vez completado isto, as ferramentas da janela irão aparecer. Esta é a sala de espaço para todas as ferramentas lançadas com o <emphasis>Serviço de Transação JBoss</emphasis>. Você perceberá uma barra de menu na parte superior da janela. Esta barra de ferramentas possui quatro ítens:"
+
+#. Tag: title
+#: Chapter_05.xml:39
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr "O Menu de <menuchoice><guimenu>File</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:44
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr "Abra o Navegador JMX"
+
+#. Tag: para
+#: Chapter_05.xml:45
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr "Isto exibe a janela de navegador JMX (consulte ***Using the JMX Browser para maiores informações em como se usar o navegador JMX)."
+
+#. Tag: term
+#: Chapter_05.xml:49
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr "Abra o Navegador de Armazenamento do Objeto"
+
+#. Tag: para
+#: Chapter_05.xml:50
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr ""
+"Isto exibirá a janela do navegador do Armazenamento do Objeto JBossTS (consulte ***Using the "
+"Object Store Browser para maiores informações em como usar o navegador do Armazenamento do Objeto)."
+
+#. Tag: term
+#: Chapter_05.xml:54
+#, no-c-format
+msgid "Settings"
+msgstr "Configurações"
+
+#. Tag: para
+#: Chapter_05.xml:55
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr "Esta opção abre o diálogo de configurações do qual permite você configurar as diferentes ferramentas disponíveis."
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Exit"
+msgstr "Saída"
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr "Isto encerra a janela de ferramentas e sai do aplicativo. As alterações que não foram salvas ou confirmadas serão perdidas."
+
+#. Tag: title
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr "O Menu de <menuchoice><guimenu>Performance</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Open"
+msgstr "Abrir"
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr "Isto abre a janela de desempenho - para maiores informações sobre a ferramenta de desempenho consulte: <xref linkend=\"Performance_Tool\"/>."
+
+#. Tag: term
+#: Chapter_05.xml:77
+#, no-c-format
+msgid "Close All"
+msgstr "Fechar Tudo"
+
+#. Tag: para
+#: Chapter_05.xml:78
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+"Isto fecha todas as janelas de desempenho abertas no momento - para maiores informações na ferramenta de desempenho consulte: <xref "
+"linkend=\"Performance_Tool\"/>."
+
+#. Tag: title
+#: Chapter_05.xml:87
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr "O Menu da <menuchoice><guimenu>Window</guimenu></menuchoice> "
+
+#. Tag: term
+#: Chapter_05.xml:90
+#, no-c-format
+msgid "Cascade Windows"
+msgstr "Janelas "
+
+#. Tag: para
+#: Chapter_05.xml:91
+#, no-c-format
+msgid "This arranges the windows in a diagonal line to you find a specific window."
+msgstr "Isto coordena as janelas numa linha diagonal com a finalidade de você encontrar uma janela específica."
+
+#. Tag: term
+#: Chapter_05.xml:95
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr "1. XXXXXXX"
+
+#. Tag: para
+#: Chapter_05.xml:96
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr "Para cada janela atualmente visível, uma opção extra de menu estará disponível. Se selecionarmos a opção de menu, veremos uma janela associada à parte da frente da área de trabalho. "
+
+#. Tag: title
+#: Chapter_05.xml:104
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr "O Menu de <menuchoice><guimenu>Help</guimenu></menuchoice>"
+
+#. Tag: term
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "About"
+msgstr "About"
+
+#. Tag: para
+#: Chapter_05.xml:108
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr "Isto exibe a janela about que contém informações do produto."
+
+#. Tag: title
+#: Chapter_05.xml:119
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr "Usando a Ferramenta de Desempenho"
+
+#. Tag: para
+#: Chapter_05.xml:121
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr "A ferramenta de desempenho pode ser usada para exibir informações de desempenho sobre o serviço de transação. Esta informação é coletada usando o bean JMX de Desempenho significando que o serviço de transação precisa ser integrado a um Servidor do Aplicativo, para ceder qualquer informação de desempenho."
+
+#. Tag: para
+#: Chapter_05.xml:123
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+"A informação de desempenho é exibida através do gráfico de multi-seqüências. Para visualização deste gráfico apenas abra uma janela de desempenho selecionando <menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+
+#. Tag: para
+#: Chapter_05.xml:125
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr "A janela na tela contém um gráfico multi-seqüenciado que pode exibir a seguinte informação:"
+
+#. Tag: para
+#: Chapter_05.xml:130
+#, no-c-format
+msgid "Number of transactions."
+msgstr "Número de transações."
+
+#. Tag: para
+#: Chapter_05.xml:135
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr "Número de Transações confirmadas."
+
+#. Tag: para
+#: Chapter_05.xml:140
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr "Número de transações abortadas."
+
+#. Tag: para
+#: Chapter_05.xml:145
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr "Número de transações aninhadas."
+
+#. Tag: para
+#: Chapter_05.xml:150
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr "Número de heurísticos crescidos."
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr "Para ligar e desligar estas seqüências, selecione a opção de menu a partir do menu de seqüências."
+
+#. Tag: para
+#: Chapter_05.xml:158
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr "Quando as seqüências forem ligadas, as mesmas aparecerão na legenda na parte inferior do gráfico. A cor do texto próximo ao nome das seqüências (por exemplo, Transações Criadas) é a cor da linha representante daquele dado."
+
+#. Tag: para
+#: Chapter_05.xml:161
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr "O dado apresentado é grifado com referência ao tempo. O Y-axis representa o número de transações e o X-axis representa o tempo."
+
+#. Tag: para
+#: Chapter_05.xml:164
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr "A qualquer instante a amostra do dado pode ser interrompida e restaurada usando o menu <menuchoice><guimenu>Sampling</guimenu></menuchoice>, e o dado atualmente visível no gráfico pode ser salvo ao arquivo de Valores Separados por Vírgulas - Comma Separate Values (CSV), para importação de dados em um aplicativo de spreadsheet usando a opção de menu <menuchoice><guimenu>Save to .csv</guimenu></menuchoice> a partir do menu <menuchoice><guimenu>Data</guimenu></menuchoice>."
+
+#. Tag: title
+#: Chapter_05.xml:169
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr "Usando o Navegador JMX"
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+"Para abrir a janela do navegador JMX, clique no menu <menuchoice><guimenu>File</"
+"guimenu></menuchoice> e então clique na opção <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice>. A janela do navegador JMX será então exibida."
+
+#. Tag: para
+#: Chapter_05.xml:173
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr "A janela é feita de duas seções principais: o painel de detalhes e o painel MBean. O painel MBean exibe os MBeans expostos pelo servidor MBean. Eles são agrupados pelo nome domínio. O painel de detalhes exibe informação sobre o atual MBean selecionado. Para selecionar o MBean apenas clique no botão esquerdo do mouse e ele será marcado. Segue abaixo, a informação exibida no painel de detalhes:"
+
+#. Tag: para
+#: Chapter_05.xml:178
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr "O número total de MBeans registrados neste servidor."
+
+#. Tag: para
+#: Chapter_05.xml:183
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr "O número de construtores expostos por este MBean."
+
+#. Tag: para
+#: Chapter_05.xml:188
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr "O número de atributos exposto pelo MBean."
+
+#. Tag: para
+#: Chapter_05.xml:193
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr "O número de operações expostas por este MBean."
+
+#. Tag: para
+#: Chapter_05.xml:198
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr "O número de notificações expostas por este MBean."
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr "Uma descrição prévia do MBean."
+
+#. Tag: para
+#: Chapter_05.xml:208
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr "Há também um link <menuchoice><guimenu>View</guimenu></menuchoice>, que quando acionado, exibe atributos e operações expostas pelo MBean. A partir disto, você pode visualizar atributos de leitura, alterar atributos de gravação e invocar operações."
+
+#. Tag: title
+#: Chapter_05.xml:212
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr "Usando Atributos e Operações"
+
+#. Tag: para
+#: Chapter_05.xml:213
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr "Quando clicarmos no link <menuchoice><guimenu>View</guimenu></menuchoice>, os Atributos JMX de Visualização e janela de operações serão exibidos. A partir disto, você pode também alterar os atributos de gravação. Caso um atributo seja apenas de leitura, ele não estará apto a alterar o valor dos atributos. Para alterar um valor do atributo, apenas clique duas vezes no valor atual e entre o novo valor. Caso o botão <guibutton>...</guibutton> seja ativado, então você pode clicá-lo para visualizar um método de edição mais adequado. Vamos imaginar que o tipo do atributo é um nome do objeto JMX, então se clicarmos neste botão serão exibidos os atributos JMX e as operações para aquele objeto. "
+
+#. Tag: para
+#: Chapter_05.xml:216
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr "A qualquer instante você pode clicar no botão <guibutton>Refresh</guibutton> para atualizar os valores do atributo. Caso uma exceção ocorra enquanto restaurando o valor de um atributo, a exceção será exibida no lugar do valor dos atributos."
+
+#. Tag: para
+#: Chapter_05.xml:219
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr "Você pode também invocar as operações por um MBean. A lista de operações exibidas por um MBean é exibida abaixo da lista de atributos. Para invocar uma simples operação, selecione-a a partir da lista e clique no botão <guibutton>Invoke</guibutton>. Caso a operação solicite parâmetros, uma janela futura será exibida. A partir desta janela você deverá especificar valores para cada um dos parâmetros solicitados. Você especifica os valores do parâmetro da mesma maneira que você especifica os valores do atributo JMX. Uma vez que você tenha especificado o valor para cada um dos parâmetros, clique no botão <guibutton>Invoke</guibutton> para desempenhar a invocação."
+
+#. Tag: para
+#: Chapter_05.xml:222
+#, no-c-format
+msgid "Once the method invocation has completed its return value will be displayed."
+msgstr "Assim que a invocação do método tenha sido completada, o seu valor de retorno será exibido."
+
+#. Tag: title
+#: Chapter_05.xml:227
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr "Usando o navegador do Armazenamento do Objeto"
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr "Para abrir a janela do navegador de Armazenamento do Objeto, clique no menu <menuchoice><guimenu>File</guimenu></menuchoice> e então clique na opção <menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice>. A janela do navegador de Armazenamento do Objeto será então exibida."
+
+#. Tag: para
+#: Chapter_05.xml:231
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr "A janela do navegador de armazenamento do objeto é dividida em quatro seções:"
+
+#. Tag: para
+#: Chapter_05.xml:236
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr "Raízes de Armazenamento do Objeto - isto é uma destruição das raízes de armazenamento do objeto disponível. Selecionando uma opção a partir da lista irá re-popular a visualização de hierarquia de visualização com os conteúdos da raiz selecionada."
+
+#. Tag: para
+#: Chapter_05.xml:241
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr "Hierarquia de Armazenamento do Objeto- isto é uma árvore que apresenta a hierarquia de armazenamento do objeto. A seleção de um nó a partir desta árvore irá exibir os objetos armazenados naquela localização."
+
+#. Tag: para
+#: Chapter_05.xml:246
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr "Objetos - esta é a lista de ícons que representam os objetos armazenados na localização selecionada."
+
+#. Tag: para
+#: Chapter_05.xml:251
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr "Detalhes do Objeto - isto apresenta informação a respeito do atual objeto selecionado (apenas se o tipo de objeto é conhecido pelo repositório de visualização do estado. Consulte a Gravação de um OSV para maiores informações de como se gravar os visualizadores de um estado de objeto)."
+
+#. Tag: title
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr "Visualizadores de Estado do Objeto - Object State Viewers (OSV)"
+
+#. Tag: para
+#: Chapter_05.xml:259
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr "Quando um objeto for selecionado no painel de objetos da janela principal, a Visualização de Estado de Objeto (ou OSV) registrada para aquele tipo de objeto será invocada. O trabalho do OSV é manter informações disponíveis através do usuário de interface ao usuário, com a finalidade de apresentar informações a respeito do objeto selecionado. O OSV é distribuído com ferramentas padrões para Ações Atômicas. Ele exibe informações referentes as Gravações Abstratas em diversas listas (por exemplo: heurística, de falha, de leitura apenas, etc). É também possível gravar o seu próprio OSVs, do qual pode ser usado para exibir informações referentes aos tipos de objetos que você estiver definindo. Este assunto será discutido adiante."
+
+#. Tag: title
+#: Chapter_05.xml:263
+#, no-c-format
+msgid "Writing an OSV"
+msgstr "Gravando um OSV"
+
+#. Tag: para
+#: Chapter_05.xml:264
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr "A gravação de um plugin OSV permite que você estenda as capacidades do navegador de Armazenamento do Objeto para apresentar o estado das gravações abstratas do usuário definido. Um plug-in OSV é simplesmente uma classe que implementa a interface:"
+
+#. Tag: code
+#: Chapter_05.xml:269
+#, no-c-format
+msgid "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr "com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+
+#. Tag: para
+#: Chapter_05.xml:271
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr "Isto deve ser empacotado numa JAR com o diretório plugins. Este exemplo apresenta como criar um plugin OSV para uma sub-classe de gravação abstrata que parece-se com:"
+
+#. Tag: screen
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:275
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr ""
+"Quando esta gravação abstrata é visualizada no navegador de armazenamento do objeto, será interessante ver o valor atual. Isto é fácil de se fazer uma vez que podemos ler o estado dentro de uma instância de nossa gravação abstrata e chamar o <methodname>getValue()</"
+"methodname>. Segue abaixo, o código de recurso plug-in de armazenamento do objeto:"
+
+#. Tag: screen
+#: Chapter_05.xml:278
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:279
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr "O método <methodname>uidNodeExpanded</methodname> é invocado quando uma UID (Identificação Única) representante, de tipo dado, for expandida na árvore hierárquica de armazenamento do objeto. Isto não é solicitado por este plugin, pois uma gravação abstrata não é visível no armazenamento de objeto. Isto é apenas visível através de uma das listas em uma ação atômica. O método <methodname>entrySelected</methodname> é invocado quando uma entrada for selecionada, a partir de uma visualização do objeto que representa um objeto de tipo dado. Em ambos os métodos o StatePanel é usado para exibir informação referente ao estado do objeto. O painel do estado possui os seguintes métodos que auxiliam na exibição desta informação:"
+
+#. Tag: para
+#: Chapter_05.xml:284
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr "<methodname>setInfo(String info)</methodname>: O método pode ser usado para apresentar informações gerais."
+
+#. Tag: para
+#: Chapter_05.xml:289
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr "<methodname>setData(String name, String value)</methodname>: Este método é usado para adicionar informações na tabela que é exibida pela ferramenta do navegador de armazenamento do objeto."
+
+#. Tag: para
+#: Chapter_05.xml:294
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: Este método é usado para ativar os detalhes abaixo. A interface listener permite que um plug-in saiba quando o botão for pressionado. Fica a escolha do desenvolvedor do plug-in decidir como exibir esta futura informação."
+
+#. Tag: para
+#: Chapter_05.xml:299
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr "Neste exemplo, lemos o estado a partir do armazenamento do objeto e usamos o valor retornado pelo getValue(), para adicionar uma entrada dentro da tabela de painel do estado. O método getType() retorna o tipo em que este plug-in é, com a finalidade de ser registrado em referência a isto."
+
+#. Tag: para
+#: Chapter_05.xml:302
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+"Para adicionar este plug-in ao navegador do armazenamento do objeto é necessário empacotá-lo em um arquivo JAR (Java Archive), com o nome que é pré-fixado com 'osbv-'. O arquivo JAR deve conter certas informações com um arquivo manifesto para que o navegador de armazenamento de objeto saiba quais classes são plug-ins. Tudo isto pode ser desempenhado usando um script <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink>, como segue abaixo:"
+
+#. Tag: screen
+#: Chapter_05.xml:305
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+
+#. Tag: para
+#: Chapter_05.xml:306
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr ""
+"Uma vez que o JAR tenha sido criado com a informação correta no arquivo de manifesto, isto apenas precisará ser substituído no diretório <emphasis>bin/tools/plugins</"
+"emphasis>."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_06.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_06.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,870 @@
+# translation of Chapter_06.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_06\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 16:21+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr "Construção de objetos Transacionais para aplicativos Java"
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr "Construção de Aplicativo"
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid "There are two distinct phases to the development of a TxCore application:"
+msgstr "Existem duas fases distintas para o desenvolvimento de um aplicativo TXCore:"
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr "Desenvolvimento de novas classes com certas características (por exemplo: Persistência, Recuperação, Concorrência Controlada)."
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid "Developing the application(s) that make use of the new classes of objects."
+msgstr "Desenvolvimento de aplicativo(s) que fazem uso de novas classes dos objetos."
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr "Embora estas fases possam ser desempenhadas em paralelo e por uma única pessoa, podemos nos referir ao primeiro passo como o trabalho de um desenvolvedor de classe e o segundo como o trabalho de desenvolvedor de aplicativos. O desenvolvedor de classe irá preocupar-se com a definição apropriada <code>save_state</code> e operações <code>restore_state</code> para esta classe, configurando bloqueios apropriados nas operações e invocando os construtores de classe TxCore apropriado. O desenvolvedor dos aplicativos irão preocupar-se mais com a definição da estrutura geral do aplicativo, particularmente a respeito do uso de ações atômicas."
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr "Este capítulo ilustra os pontos destacados em seções anteriores pela estrutura de tópico de um aplicativo simples: neste caso uma classe de Fila FIFO simples será desenvolvida para integração de valores. A implementação da Fila estará com uma estrutura de lista com duplo links e será implementada como um objeto único. Provavelmente, usaremos este exemplo no resto deste manual, para ajudar a ilustrar os diversos mecanismos fornecidos pelo TxCore. Enquanto isto é um exemplo de aplicativo surreal, isto ativa todas as modificações a serem descritas com a solicitação em profundo conhecimento do código do aplicativo."
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr "Assumiremos que o aplicativo não é distribuído no resto deste capítulo. Caso este não seja o caso, então a informação de contexto deve ser propagada tanto implicitamente como explicitamente."
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr "Descrição da Fila"
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr "Esta fila é uma fila FIFO tradicional, onde elementos são adicionados pela frente e removidos por trás. As operações fornecidas pelas classes permitem que valores sejam colocados na fila (enfileirados) e removidos dela (desinfileirados). Além disso, é também possível mudar e inspecionar os valores de elementos na fila. Neste exemplo de implementação, um array é usado para representar a fila. O limite dos elementos <code>QUEUE_SIZE</code> tem sido imposto por este exemplo."
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid "The Java interface definition of this simple queue class is given below:"
+msgstr "Segue abaixo, a definição de interface Java desta classe de fila simples:"
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr "Construtores e De-construtores"
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr "Assim como declarado na seção anterior, o uso de um objeto persistente existente solicita o uso de um construtor especial, do qual é requerido a obter o UID do objeto de persistência. A implementação de tal construtor é dada abaixo:"
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr "O construtor que cria um objeto de persistência nova parece-se com:"
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr "O uso de uma ação atômica com o construtor para um novo objeto segue as estruturas de tópicos das linhas de comando anteriores, além de garantir que o estado do objeto seja gravado ao armazenamento do objeto, uma vez que a ação atômica de nível superior apropriada for confirmada (da qual será tanto a ação A ou alguma ação inclusa ativa quando o <code>TransactionalQueue</code> for construído). O uso de ações atômicas num construtor é simples: uma ação deve ser declarada e sua inicialização de operação invocada. A operação deve então definir um bloqueio apropriado no objeto (neste caso um bloqueio <code>WRITE</code> deve ser adquirido), e então o corpo principal do construtor é executado. Caso isto seja realizado com êxito a ação atômica pode ser confirmada, do contrário ela será abortada."
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr "O destruidor da classe de fila é apenas solicitado para chamar a operação de término do <methodname>LockManager</methodname>"
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr "save_state, resotre_state and type"
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr "As implementações de save_state e restore_state são relativamente simples para este exemplo:"
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+"Devido a classe da Fila ser derivada da classe <classname>LockManager</"
+"classname>, o tipo de operação deve parecer-se com:"
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr "Operações enfileiradas/desenfileiradas"
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr "Caso as operações da classe da fila estiverem para ser codificadas como ações atômicas, então a operação enfileirar poderá ter a estrutura dada abaixo (a operação desenfileirar pode ser estruturada similarmente):"
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr "queueSize"
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid "The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr "Segue abaixo a implementação do <methodname>queueSize</methodname>: "
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr "Operações inspectValue/setValue"
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr "Segue abaixo a implementação do <methodname>inspectValue</methodname>. O <methodname>setValue</methodname> é parecido e não é apresentado."
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr "O cliente"
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr "Ao invés de apresentarmos todos os códigos para o cliente, iremos nos concentrar numa porção representativa. Antes de invocar operações no objeto, o cliente deve primeiramente vincular-se a isto. No caso local, isto simplesmente solicita ao cliente a criar uma instância do objeto."
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr "Antes de invocar uma das operações da fila, o cliente inicializa a transação. Segue abaixo, a operação <methodname>queueSize</methodname>:"
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr "Comentários"
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr "Considerando que o objeto da fila é persistente, então o estado do objeto sobreviverá a qualquer falha do nó em que estiver localizado. O estado do objeto que sobreviverá é aquele produzido pelo último nível superior confirmado de ação atômica executada no objeto. Caso a intenção de um aplicativo é executar duas operações enfileiradas atomicamente, por exemplo, então isto poderá ser feito aninhando as operações enfileiradas em outra ação atômica inclusa. Adicionado a isto, as operações concorrentes serão serializadas em tal objeto de persistência, desta forma prevenindo inconsistências no estado do objeto. No entanto, uma vez que os elementos dos objetos da fila não são individualmente controlados, algumas combinações das invocações de operação atual serão executadas em série, assim como elas podem ser executadas ao mesmo tempo. Por exemplo, modificando os estados em dois elementos diferentes na fila. Na próxima seção endereÃ!
 §aremos alguns destes problemas."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_07.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/Chapter_07.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,344 @@
+# translation of Chapter_07.po to Brazilian Portuguese
+# Language pt-BR translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_07\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 16:33+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr "Opções de Configuração"
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr "Opções"
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr "A seguinte tabela apresenta os recursos de configuração com valores padrões apresentados em itálico. Maiores detalhes a respeito de cada opção podem ser encontrados nas seções relevantes deste documento. "
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr "Opções de Configuração TxCore"
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr "Nome de Configuração"
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr "Valores Possíveis"
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr "Descrição"
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeSync"
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr "ON/OFF"
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr "Ativa a sincronização do armazenamento do objeto que está ligado ou desligado. Use com cautela."
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeType"
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr "Especifica o tipo da implementação do armazenamento do objeto para uso. "
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr "255/any integer value"
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr "Determina o número de diretório de estados do objeto hash para a implementação do armazenamento do objeto HashedStore."
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreType"
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr "BasicLockStore/BasicPersistentLockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr "Especifica o tipo de bloqueio da implementação de armazenamento de bloqueio para uso."
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr "Windows: .\\LockStore Unix: ./LockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr "Especifica a localização de armazenamento do bloqueio."
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr "Qualquer localização em que o aplicativo pode efetuar uma gravação."
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr "Especifica a localização de armazenamento do objeto."
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr "defaultStore"
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr "Especifica o nome da raiz de armazenamento do objeto."
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr "com.arjuna.ats.arjuna.coordinator.actionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr "ActionStore/HashedActionStore/JDBCActionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr "A transação de implementação de logon para uso."
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr "YES/NO"
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr "Liga e desliga a confirmação assíncrona (padrão)."
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr "Liga e desliga a preparação assíncrona (padrão)."
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.transactionSync"
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr "Nome da Classe JDBCAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr "A implementação JDBCAccess de uso nos armazenamentos de objeto de nível do usuário."
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr "A implementação JDBCAccess de uso para armazenamentos de objeto de transação."
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr "Ativa ou desativa a otimização confirmar de uma fase."
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr "Ativa ou desativa a otimização apenas pronta para o aborto de segunda fase."
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr "Inicia/Interrompe a coleção de informação da estatística de transação."
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr "com.arjuna.ats.arjuna.coordinator.startDisabled"
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr "Inicia com a ativação ou desativação do sistema de transação. Ativa/desativa através da classe arjuna.ats.arjuna.coordinator.TxControl."
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr "Número Inteiro"
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr "Intervalo em milésimo de segundos."
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/pt-BR/JBoss_TS_Programmers_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_A.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_A.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,692 @@
+# translation of Appendix_A.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_A\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-08 12:46+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Appendix_A.xml:6
+#, no-c-format
+msgid "Object store implementations"
+msgstr "Object store 的实现"
+
+#. Tag: title
+#: Appendix_A.xml:9
+#, no-c-format
+msgid "The ObjectStore"
+msgstr "Object Store"
+
+#. Tag: para
+#: Appendix_A.xml:10
+#, no-c-format
+msgid ""
+"In this appendix we shall examine the various TxCore object store "
+"implementations and give guidelines as to how other implementations may be "
+"created and plugged into an application."
+msgstr "在本附录里,我们将查看不同的 TxCore object store 实现并给出如何创建其他实现并插入应用程序的准则。"
+
+#. Tag: para
+#: Appendix_A.xml:13
+#, no-c-format
+msgid ""
+"This release of JBossTS contains several different implementations of a "
+"basic object store. Each serves a particular purpose and is generally "
+"optimised for that purpose. All of the implementations are derived from the "
+"<interface>ObjectStore</interface> interface. This defines the minimum "
+"operations which must be provided in order for an object store "
+"implementation to be used by JBossTS. The default object store "
+"implementation can be overridden at runtime by setting the <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> property variable "
+"to one of the types described below."
+msgstr ""
+"本版本的 JBossTS 包括几个不同的基本 object store 的实现。每个服务于特定的目的且通常为之进行了优化。所有的实现都源自 <interface>ObjectStore</interface> 接口。这定义了 JBossTS 使用的 object store  实现所必须提供的最小操作。缺省的 object store 实现可以在运行时通过设置 <property>com."
+"arjuna.ats.arjuna.objectstore.objectStoreType</property> 属性变量为下列类型之一来覆盖。"
+
+#. Tag: screen
+#: Appendix_A.xml:16
+#, no-c-format
+msgid ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+msgstr ""
+"/*\n"
+"        * This is the base class from which all object store types are "
+"derived.\n"
+"        * Note that because object store instances are stateless, to "
+"improve\n"
+"        * efficiency we try to only create one instance of each type per "
+"process.\n"
+"        * Therefore, the create and destroy methods are used instead of new\n"
+"        * and delete. If an object store is accessed via create it *must* "
+"be\n"
+"        * deleted using destroy. Of course it is still possible to make use "
+"of\n"
+"        * new and delete directly and to create instances on the stack.\n"
+"        */\n"
+"        \n"
+"        public class ObjectStore\n"
+"        {\n"
+"        public static final int OS_COMMITTED;\n"
+"        public static final int OS_COMMITTED_HIDDEN;\n"
+"        public static final int OS_HIDDEN;\n"
+"        public static final int OS_INVISIBLE;\n"
+"        public static final int OS_ORIGINAL;\n"
+"        public static final int OS_SHADOW;\n"
+"        public static final int OS_UNCOMMITTED;\n"
+"        public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"        public static final int OS_UNKNOWN;\n"
+"        public ObjectStore (ClassName type);\n"
+"        public ObjectStore (ClassName type, String osRoot);\n"
+"        public ObjectStore (String osRoot);\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean allObjUids (String s, InputObjectState "
+"buff,\n"
+"        int m) throws ObjectStoreException;\n"
+"        \n"
+"        public synchronized boolean allTypes (InputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized int currentState(Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean commit_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean hide_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean reveal_state (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_committed (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized InputObjectState read_uncommitted (Uid u, String "
+"tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_committed (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean remove_uncommitted (Uid u, String tn)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_committed (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public synchronized boolean write_uncommitted (Uid u, String tn,\n"
+"        OutputObjectState buff)\n"
+"        throws ObjectStoreException;\n"
+"        public static void printState (PrintStream strm, int res);\n"
+"};"
+
+#. Tag: para
+#: Appendix_A.xml:17
+#, no-c-format
+msgid ""
+"JBossTS programmers need not usually interact with any of the object store "
+"implementations directly other than possibly to create them in the first "
+"place (even this is not necessary if the default store type is used as "
+"JBossTS will create stores as necessary). All stores manipulate instances of "
+"the class <classname>ObjectState</classname> which are named using a type "
+"(via the object's type() operation) and a Uid. For atomic actions purposes "
+"object states in the store can be principally in two distinct states: "
+"OS_COMMITTED, and OS_UNCOMMITTED. An object state starts in the OS_COMMITTED "
+"state but when modified under the control of an atomic action a new second "
+"object state may be written that is in the OS_UNCOMMITTED state. If the "
+"action commits this second object state replaces the original and becomes "
+"OS_COMMITTED. If the action aborts, this second object state is simply "
+"discarded. All of the implementations provided with this release handle "
+"these state transitions by making use of shadow copies of object states, "
+"however, any other implementation that maintains this abstraction is "
+"permissible. Object states may become hidden (and thus inaccessible) under "
+"the control of the crash recovery system."
+msgstr ""
+"JBossTS 程序员除了创建 Object store 实现外(即使这也不是必需的,因为如果使用缺省的 Object Store,JBossTS 将自动创建)通常不需要和它们进行直接交互。所有的 <classname>ObjectState</classname> 类的实例用类型(通过对象的 type() 操作)和 UID 来命名。对于原子动作而言,Object Store "
+"里的对象状态主要有两种不同的状态:OS_COMMITTED 和 OS_UNCOMMITTED。对象状态以 OS_COMMITTED 开始,但当在原子动作控制之下进行修改时,另外一个对象状态也以 OS_UNCOMMITTED 将被写入。如果这个动作提交了,第二个对象状态将覆盖原始状态并成为 "
+"OS_COMMITTED。如果动作中止,第二个对象状态将简单低被丢弃。本版本里提供的所有实现都通过对象状态的影子版本来处理这些状态变换,然而,任何其他类似的实现也是允许的。在崩溃恢复系统控制下,对象状态也可能隐藏(不可访问)。"
+
+#. Tag: para
+#: Appendix_A.xml:20
+#, no-c-format
+msgid ""
+"Browsing of the contents of a store is possible through the "
+"<methodname>allTypes</methodname> and <methodname>allObjUids</methodname> "
+"operations. <methodname>allTypes</methodname> returns an "
+"<type>InputObjectState</type> containing all of the type names of all "
+"objects in a store, terminated by a null name. <methodname>allObjUids</"
+"methodname> returns an <type>InputObjectState</type> that contains all of "
+"the Uids of all objects of a given type terminated by the special "
+"<methodname>Uid.nullUid()</methodname>."
+msgstr ""
+"通过 <methodname>allTypes</methodname> 和 <methodname>allObjUids</methodname> 操作可以浏览 Store 的内容。<methodname>allTypes</methodname> 返回一个包含 Store 里所有对象的的全部类型名的 <type>InputObjectState</type> 实例。<"
+"methodname>allObjUids</methodname> 则返回一个包含给定类型的对象的所有 UID 且以 <methodname>Uid.nullUid()</methodname> 结束的 <type>InputObjectState</type> 实例。"
+
+#. Tag: title
+#: Appendix_A.xml:25
+#, no-c-format
+msgid "Persistent object stores"
+msgstr "持久性 Object Store"
+
+#. Tag: para
+#: Appendix_A.xml:26
+#, no-c-format
+msgid ""
+"This section briefly describes the characteristics and optimisations of each "
+"of the supplied implementations of the persistent object store. Persistent "
+"object states are mapped onto the structure of the file system supported by "
+"the host operating system."
+msgstr "本节简要地描述了每个持久性 Object Store 实现的特点和优化信息。持久性对象的状态映射至主机操作系统支持的文件系统结构。"
+
+#. Tag: title
+#: Appendix_A.xml:30
+#, no-c-format
+msgid "Common functionality"
+msgstr "常见功能"
+
+#. Tag: para
+#: Appendix_A.xml:31
+#, no-c-format
+msgid ""
+"In addition to the features mentioned earlier all of the supplied persistent "
+"object stores obey the following rules:"
+msgstr "除了之前提及的功能,所有的持久性 Object Store 都遵循下面的规则:"
+
+#. Tag: para
+#: Appendix_A.xml:35
+#, no-c-format
+msgid ""
+"Each object state is stored in its own file that is named using the "
+"<code>Uid</code> of the object."
+msgstr "每个对象状态都保存在各自对应的文件里,文件以对象的 <code>Uid</code> 命名。"
+
+#. Tag: para
+#: Appendix_A.xml:40
+#, no-c-format
+msgid ""
+"The type of an object (as given by the <methodname>type()</methodname> "
+"operation) determines the directory into which the object is placed."
+msgstr "对象的类型(由 <methodname>type()</methodname> 指定)决定了对象存放的目录。"
+
+#. Tag: para
+#: Appendix_A.xml:45
+#, no-c-format
+msgid ""
+"All of the stores have a common root directory that is determined when "
+"JBossTS is configured. This directory name is automatically prepended to any "
+"store specific root information."
+msgstr "所有的 Store 都有一个公共的根目录,它在配置 JBossTS 时被指定。这个目录的名称自动附加在任何 Store 专有的根信息里。"
+
+#. Tag: para
+#: Appendix_A.xml:50
+#, no-c-format
+msgid ""
+"All stores also have the notion of a localised root directory that is "
+"automatically prepended to the type of the object to determine the ultimate "
+"directory name. The localised root name is specified when the store is "
+"created. By default the localised root name is <code>defaultStore</code>."
+msgstr "所有的 Store 也都有本地化的根目录符号,它自动地附加到对象的类型里来指定最终的目录名称。当 Store 被创建时将指定本地化的根目录名称。本地化的根目录名称缺省是 <code>defaultStore</code>。"
+
+#. Tag: screen
+#: Appendix_A.xml:55
+#, no-c-format
+msgid ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+msgstr ""
+"&lt;ObjectStore root Directory from configure&gt;        /JBossTS/"
+"ObjectStore/\n"
+"        &lt;ObjectStore Type1&gt;                        FragmentedStore/\n"
+"                &lt;Default root&gt;                        defaultStore/\n"
+"                        &lt;StateManager&gt;                        "
+"StateManager\n"
+"                                &lt;LockManager&gt;                        "
+"LockManager/\n"
+"                                        &lt;User Types&gt;                \n"
+"        &lt;Localised root 2&gt;                myStore/\n"
+"                &lt;StateManager&gt;                        StateManager/\n"
+"                                                                        \n"
+"        &lt;ObjectStore Type2&gt;                ActionStore/\n"
+"                &lt;Default root&gt;                        defaultStore/"
+
+#. Tag: title
+#: Appendix_A.xml:58
+#, no-c-format
+msgid "The shadowing store"
+msgstr "Shadowing Store"
+
+#. Tag: para
+#: Appendix_A.xml:59
+#, no-c-format
+msgid ""
+"This is the original version of the object store as provided in prior "
+"releases and is implemented by the class <classname>ShadowingStore</"
+"classname>. It is simple but slow. It uses pairs of files to represent "
+"objects (the shadow version and the committed version) and files are opened, "
+"locked, operated upon, unlocked and closed on every interaction with the "
+"object store. Thus significant portions of time can be spent in the system "
+"simply opening, closing and renaming files, all of which are very expensive "
+"operations."
+msgstr ""
+"这是以前发行版本里提供的 Object Store 的原始版本,它由 <classname>ShadowingStore</classname> 类来实施。它很简单但也慢。它使用成对的文件来代表对象(shadow 版本和 committed 版本),每次和  Object Store "
+"交互时文件都被打开、锁定、操作、解锁和关闭。因此相当一部分时间将花费在系统的打开、关闭和重命名文件上面,而这些都是很消耗资源的操作。"
+
+#. Tag: para
+#: Appendix_A.xml:63
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowingStore</type>."
+msgstr "如果覆盖这个 object store 实现,它的类型是 <type>ShadowingStore</type>。"
+
+#. Tag: title
+#: Appendix_A.xml:67 Appendix_A.xml:85
+#, no-c-format
+msgid "No file-level locking"
+msgstr "非文件级锁"
+
+#. Tag: para
+#: Appendix_A.xml:68
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic ShadowingStore "
+"implementation does. Therefore, the default object store implementation for "
+"JBossTS, <methodname>ShadowNoFileLockStore</methodname>, relies upon user-"
+"level locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+"既然事务性对象都通过 <methodname>LockManager</methodname> 进行并行控制,和基本的 ShadowingStore 实现一样强制文件级的锁就没有必要了。因此,JBossTS 缺省的 object store 实现,<methodname>ShadowNoFileLockStore</methodname>,依赖于用户级锁。这使它可以提供比 <"
+"methodname>ShadowingStore</methodname> 更好的性能。"
+
+#. Tag: para
+#: Appendix_A.xml:72 Appendix_A.xml:90
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>ShadowNoFileLockStore</type>."
+msgstr "如要要覆盖这个 Object Store,它的类型是 <type>ShadowNoFileLockStore</type>。"
+
+#. Tag: title
+#: Appendix_A.xml:76 Appendix_A.xml:94
+#, no-c-format
+msgid "The hashed store"
+msgstr "Hashed Store"
+
+#. Tag: para
+#: Appendix_A.xml:77
+#, no-c-format
+msgid ""
+"The <code>HashedStore</code> has the same structure for object states as the "
+"shadowing stores but has an alternate directory structure that is better "
+"suited to storing large numbers of objects of the same type. Using this "
+"store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr ""
+"<code>HashedStore</code> 具有和 Shadowing Store 一样的结构,但它也有另外的一个更适合于存储大量相同类型的对象结构。如使用这种 store,对象通过应用 hash 函数到对象的 UID 散布在一系列目录里。缺省将使用 255 个子目录。然而,你可以通过设置环境变量 <code>HASHED_DIRECTORIES</code> 来覆盖它。"
+
+#. Tag: para
+#: Appendix_A.xml:81 Appendix_A.xml:99
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>HashedStore</type>."
+msgstr "如果要覆盖这个 Object Store 信息,它的类型是 <type>HashedStore</type>。"
+
+#. Tag: para
+#: Appendix_A.xml:86
+#, no-c-format
+msgid ""
+"Since transactional objects are concurrency controlled through "
+"<methodname>LockManager</methodname>, it is not necessary to impose "
+"additional locking at the file level, as the basic "
+"<methodname>ShadowingStore</methodname> implementation does. Therefore, the "
+"default object store implementation for JBossTS, "
+"<methodname>ShadowNoFileLockStore</methodname>, relies upon user-level "
+"locking. This enables it to provide better performance than the "
+"<methodname>ShadowingStore</methodname> implementation."
+msgstr ""
+"既然事务性对象通过 <methodname>LockManager</methodname> 来控制并行性,和基本的 <methodname>ShadowingStore</methodname> 实现一样强制文件级锁就没有必要了。因此,JBossTS 缺省的 Object Store 实现,<methodname>ShadowNoFileLockStore</methodname>"
+",依赖于用户级锁。这使它可以提供比 <methodname>ShadowingStore</methodname> 更好的性能。"
+
+#. Tag: para
+#: Appendix_A.xml:95
+#, no-c-format
+msgid ""
+"The <methodname>HashedStore</methodname> has the same structure for object "
+"states as the shadowing stores but has an alternate directory structure that "
+"is better suited to storing large numbers of objects of the same type. Using "
+"this store objects are scattered amongst a set of directories by applying a "
+"hashing function to the object's Uid. By default 255 sub-directories are "
+"used. However, this can be overridden by setting the "
+"<code>HASHED_DIRECTORIES</code> environment variable accordingly."
+msgstr ""
+"<code>HashedStore</code> 具有和 Shadowing Store 一样的结构,但它也有另外的一个更适合于存储大量相同类型的对象结构。如使用这种 store,对象通过应用 hash 函数到对象的 UID 散布在一系列目录里。缺省将使用 255 个子目录。然而,你可以通过设置环境变量 <code>HASHED_DIRECTORIES</code> 来覆盖它。"
+
+#. Tag: title
+#: Appendix_A.xml:103
+#, no-c-format
+msgid "The JDBC store"
+msgstr "JDBC store"
+
+#. Tag: para
+#: Appendix_A.xml:104
+#, no-c-format
+msgid ""
+"The <methodname>JDBCStore</methodname> uses a JDBC database to save "
+"persistent object states; when used in conjunction with the Transactional "
+"Objects for Java API nested transaction support is available. In the current "
+"implementation, all object states are stored as Binary Large Objects (BLOBs) "
+"within the same table. The limitation on object state size imposed by using "
+"BLOBs is 64k; if an attempt is made to store an object state which exceeds "
+"this limit an error will be output and the state will not be stored. The "
+"transaction will subsequently be forced to roll back."
+msgstr ""
+"<methodname>JDBCStore</methodname> 使用 JDBC 数据库来保存持久性对象的状态。如果和Transactional "
+"Objects for Java API 一起使用,它可以支持嵌套的事务。在当前的实现里,所有的 Object Store 都以 Binary Large Objects (BLOBs) 存储在相同的表里。使用 BLOB 会限制对象状态的大小为 64k。如果试图存储超过这个限制的对象状态,系统将报错,状态也不能成功存储。随后事务将被迫回滚。"
+
+#. Tag: para
+#: Appendix_A.xml:108
+#, no-c-format
+msgid ""
+"When using the JDBC object store, the application must provide an "
+"implementation of the following interface, located in the <code>com.arjuna."
+"ats.arjuna.objectstore</code> package:"
+msgstr ""
+"在使用 JDBC object store 时,应用程序必须提供下面的接口(位于 <code>com.arjuna."
+"ats.arjuna.objectstore</code> 包里)的一个实现:"
+
+#. Tag: screen
+#: Appendix_A.xml:111
+#, no-c-format
+msgid ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+msgstr ""
+"public interface JDBCAccess\n"
+"{\n"
+"        public Connection getConnection () throws SQLException;\n"
+"        public void putConnection (Connection conn) throws SQLException;\n"
+"        public void initialise (ObjectName objName);\n"
+"}"
+
+#. Tag: para
+#: Appendix_A.xml:112
+#, no-c-format
+msgid ""
+"The implementation of this class is responsible for providing the "
+"<emphasis>Connection</emphasis> which the JDBC ObjectStore will use to save "
+"and restore object states:"
+msgstr "对这个接口的实现负责提供 JDBC ObjectStore 用来保存和恢复对象状态的 <emphasis>Connection 实例</emphasis>:"
+
+#. Tag: para
+#: Appendix_A.xml:117
+#, no-c-format
+msgid ""
+"<methodname>getConnection</methodname>: returns the Connection to use. This "
+"method will be called whenever a connection is required and the "
+"implementation should use whatever policy is necessary for determining what "
+"connection to return. This method need not return the same Connection "
+"instance more than once."
+msgstr "<methodname>getConnection</methodname>:返回要使用的连接。每当需要连接数据库时这个方法将被调用,这个实现应该所需的策略来决定返回什么样的连接。这个方法不会返回相同的 Connection 实例。"
+
+#. Tag: para
+#: Appendix_A.xml:122
+#, no-c-format
+msgid ""
+"<methodname>putConnection</methodname>: this method will be called to return "
+"one of the Connections acquired from getConnection. Connections are returned "
+"if any errors occur when using them."
+msgstr "<methodname>putConnection</methodname>:调用这个方法将退回用 getConnection 获取的 Connection 实例。当使用连接出错时,该连接将被退回。"
+
+#. Tag: para
+#: Appendix_A.xml:127
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: this can be used to pass additional "
+"arbitrary information to the implementation."
+msgstr "<methodname>initialise</methodname>:这个方法可以把其他任何信息传递给该实现。"
+
+#. Tag: para
+#: Appendix_A.xml:132
+#, no-c-format
+msgid ""
+"The JDBC object store will initially request the number of Connections "
+"defined in the <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> property and will use no more than defined in "
+"the <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> property."
+msgstr ""
+"JDBC object store 将首先请求 <property>com.arjuna.ats.arjuna.objectstore."
+"jdbcPoolSizeInitial</property> 属性里定义的连接的数量,它不会使用超过  <property>com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum</"
+"property> 定义的个数的连接。"
+
+#. Tag: para
+#: Appendix_A.xml:135
+#, no-c-format
+msgid ""
+"The implementation of the <interfacename>JDBCAccess</interfacename> "
+"interface to use should be set in the <property>com.arjuna.ats.arjuna."
+"objectstore.jdbcUserDbAccess</property> property variable."
+msgstr "所使用的 <interfacename>JDBCAccess</interfacename> 接口的实现应该通过 <property>com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess</property> 属性变量来设置。"
+
+#. Tag: para
+#: Appendix_A.xml:138
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>JDBCStore</type>."
+msgstr "如果要覆盖这个 Object Store 实现,其类型是 <type>JDBCStore</type>。"
+
+#. Tag: para
+#: Appendix_A.xml:141
+#, no-c-format
+msgid ""
+"A JDBC object store can be used for managing the transaction log. In this "
+"case, the transaction log implementation should be set to "
+"<property>JDBCActionStore</property> and the <methodname>JDBCAccess</"
+"methodname> implementation must be provided via the <property>com.arjuna.ats."
+"arjuna.objectstore.jdbcTxDbAccess</property> property variable. In this "
+"case, the default table name is JBossTSTxTable."
+msgstr ""
+"JDBC object store 可以用来管理事务日志。在这种情况下,事务日志实现应该设置为 <property>JDBCActionStore</property> 且 <methodname>JDBCAccess</methodname> 实现必须通过 <property>com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess<"
+"/property> 属性变量提供。此时的缺省表名是 JBossTSTxTable。"
+
+#. Tag: para
+#: Appendix_A.xml:145
+#, no-c-format
+msgid ""
+"It is possible to use the same JDBCAccess implementation for both the user "
+"object store and also the transaction log."
+msgstr "对于用户 object store 和事务日志,你都可以使用相同的 JDBCAccess 实现。"
+
+#. Tag: title
+#: Appendix_A.xml:150
+#, no-c-format
+msgid "The cached store"
+msgstr "Cached Store"
+
+#. Tag: para
+#: Appendix_A.xml:151
+#, no-c-format
+msgid ""
+"This object store used the hashed object store, but does not read or write "
+"states to the persistent backing store immediately. It maintains the states "
+"in a volatile memory cache and either flushes the cache periodically or when "
+"it is full. The failure semantics associated with this object store are "
+"different to the normal persistent object stores, because a failure could "
+"result in states in the cache being lost."
+msgstr "这种 Object Store 使用 hashed object store,但并不马上把状态读出和写入持久性 Store 里。它在一个易变的内存缓存里维护状态,而且定期或满了后进行冲刷。和这个 Object Store 相关的故障模式和普通的持久性 Object Store 不同,因为故障可能导致缓存里的状态丢失。"
+
+#. Tag: para
+#: Appendix_A.xml:155
+#, no-c-format
+msgid ""
+"If overriding the object store implementation, the type of this object store "
+"is <type>CachedStore</type>."
+msgstr "要覆盖这种 object store 实现,其类型为 <type>CachedStore</type>。"
+
+#. Tag: para
+#: Appendix_A.xml:158
+#, no-c-format
+msgid "The store can be configured with the following properties:"
+msgstr "Store 可以用下面的属性进行配置:"
+
+#. Tag: para
+#: Appendix_A.xml:163
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> sets the number of internal stores to hash the states over. The "
+"default value is 128."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.hash</"
+"property> 设置内部 store 使用的 hash。缺省值是 128。"
+
+#. Tag: para
+#: Appendix_A.xml:168
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> is the maximum size the cache can reach before a flush is "
+"triggered. The default is 10240 bytes."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.size</"
+"property> 是在触发冲刷前缓存的最大容量。缺省值为 10240 字节。"
+
+#. Tag: para
+#: Appendix_A.xml:173
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> is the maximum number of removed items that the "
+"cache can contain before a flush is triggered. By default, calls to remove a "
+"state that is in the cache will simply remove the state from the cache, but "
+"leave a blank entry (rather than remove the entry immediately, which would "
+"affect the performance of the cache). When triggered, these entries are "
+"removed from the cache. The default value is twice the size of the hash."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore."
+"removedItems</property> 是在触发冲刷前缓存可包含的最多已删除条目的数量。在缺省情况下,对状态删除的调用将简单地从缓存里把该状态删除,但会保留一个空白的条目(而不是马上删除该条目,这样会影响缓存的性能)。当冲刷被触发时,这些条目才会从缓存里删除。其缺省值是 hash 值的两倍。"
+
+#. Tag: para
+#: Appendix_A.xml:178
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> is the maximum number of items that are allowed to build up in the "
+"cache before it is flushed. The default value is 100."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.workItems</"
+"property> 是在冲刷前缓存里可允许保留的条目的最大个数。缺省值为 100。"
+
+#. Tag: para
+#: Appendix_A.xml:183
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> sets the time in milliseconds for periodically flushing the cache. "
+"The default is 120 seconds."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.scanPeriod</"
+"property> 设置缓存冲刷的时间间隔(以毫秒为单位)。缺省值为 120 秒。"
+
+#. Tag: para
+#: Appendix_A.xml:188
+#, no-c-format
+msgid ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> determines whether flushes of the cache are sync-ed to disk. The "
+"default is OFF. To enable, set to ON."
+msgstr ""
+"<property>com.arjuna.ats.internal.arjuna.objectstore.cacheStore.sync</"
+"property> 指定缓存的冲刷是否和磁盘同步。缺省为 OFF。要启用则可设为 ON。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_B.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Appendix_B.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,503 @@
+# translation of Appendix_B.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Appendix_B\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 15:47+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Appendix_B.xml:6
+#, no-c-format
+msgid "Class definitions"
+msgstr "类定义"
+
+#. Tag: title
+#: Appendix_B.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Appendix_B.xml:10
+#, no-c-format
+msgid ""
+"This appendix contains an overview of those classes that the application "
+"programmer will typically use. The aim of this appendix is to provide a "
+"quick reference guide to these classes for use when writing applications in "
+"TxCore. For clarity only the public and protected interfaces of the classes "
+"will be given."
+msgstr "本附录包含了应用程序开发人员经常使用的类的概述。其目的是为编写 TxCore 应用程序提供一个快速参考手册。需要澄清的是,这里只给出了这些类的 public 或 protected 接口。"
+
+#. Tag: title
+#: Appendix_B.xml:15
+#, no-c-format
+msgid "Class library"
+msgstr "类库"
+
+#. Tag: title
+#: Appendix_B.xml:17
+#, no-c-format
+msgid "Lock Manager"
+msgstr "Lock Manager"
+
+#. Tag: screen
+#: Appendix_B.xml:20
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"        public static final int GRANTED;\n"
+"        public static final int REFUSED;\n"
+"        public static final int RELEASED;\n"
+"};\n"
+"        \n"
+"public class ConflictType\n"
+"{\n"
+"        public static final int CONFLICT;\n"
+"        public static final int COMPATIBLE;\n"
+"        public static final int PRESENT;\n"
+"};\n"
+"        \n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"        public static final int defaultRetry;\n"
+"        public static final int defaultTimeout;\n"
+"        public static final int waitTotalTimeout;\n"
+"        \n"
+"        public final synchronized boolean releaselock (Uid lockUid);\n"
+"        public final synchronized int setlock (Lock toSet);\n"
+"        public final synchronized int setlock (Lock toSet, int retry);\n"
+"        public final synchronized int setlock (Lock toSet, int retry, int "
+"sleepTime);\n"
+"        public void print (PrintStream strm);\n"
+"        public String type ();\n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        \n"
+"        protected LockManager ();\n"
+"        protected LockManager (int ot);\n"
+"        protected LockManager (int ot, ObjectName attr);\n"
+"        protected LockManager (Uid storeUid);\n"
+"        protected LockManager (Uid storeUid, int ot);\n"
+"        protected LockManager (Uid storeUid, int ot, ObjectName attr);\n"
+"        \n"
+"        protected void terminate ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:22
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: screen
+#: Appendix_B.xml:25
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"        public static final int PASSIVE;\n"
+"        public static final int PASSIVE_NEW;\n"
+"        public static final int ACTIVE;\n"
+"        public static final int ACTIVE_NEW;\n"
+"};\n"
+"        \n"
+"public class ObjectType\n"
+"{\n"
+"        public static final int RECOVERABLE;\n"
+"        public static final int ANDPERSISTENT;\n"
+"        public static final int NEITHER;\n"
+"};\n"
+"        \n"
+"public abstract class StateManager\n"
+"{\n"
+"        public boolean restore_state (InputObjectState os, int ot);\n"
+"        public boolean save_state (OutputObjectState os, int ot);\n"
+"        public String type ();\n"
+"        \n"
+"        public synchronized boolean activate ();\n"
+"        public synchronized boolean activate (String rootName);\n"
+"        public synchronized boolean deactivate ();\n"
+"        public synchronized boolean deactivate (String rootName);\n"
+"        public synchronized boolean deactivate (String rootName, boolean "
+"commit);\n"
+"        \n"
+"        public synchronized int status ();\n"
+"        public final Uid get_uid ();\n"
+"        public void destroy ();\n"
+"        public void print (PrintStream strm);\n"
+"        \n"
+"        protected void terminate ();\n"
+"        \n"
+"        protected StateManager ();\n"
+"        protected StateManager (int ot);\n"
+"        protected StateManager (int ot, ObjectName objName);\n"
+"        protected StateManager (Uid objUid);\n"
+"        protected StateManager (Uid objUid, int ot);\n"
+"        protected StateManager (Uid objUid, int ot, ObjectName objName);\n"
+"        protected synchronized final void modified ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:27
+#, no-c-format
+msgid "Input/OutputObjectState"
+msgstr "Input/OutputObjectState"
+
+#. Tag: screen
+#: Appendix_B.xml:30
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};\n"
+"class InputObjectState extends ObjectState\n"
+"{\n"
+"        public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"        \n"
+"        public boolean notempty ();\n"
+"        public int size ();\n"
+"        public Uid stateUid ();\n"
+"        public String type ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:32
+#, no-c-format
+msgid "Input/OutputBuffer"
+msgstr "Input/OutputBuffer"
+
+#. Tag: screen
+#: Appendix_B.xml:35
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"        public        OutputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* pack operations for standard Java types */\n"
+"        \n"
+"        public synchronized void packByte (byte b) throws IOException;\n"
+"        public synchronized void packBytes (byte[] b) throws IOException;\n"
+"        public synchronized void packBoolean (boolean b) throws "
+"IOException;\n"
+"        public synchronized void packChar (char c) throws IOException;\n"
+"        public synchronized void packShort (short s) throws IOException;\n"
+"        public synchronized void packInt (int i) throws IOException;\n"
+"        public synchronized void packLong (long l) throws IOException;\n"
+"        public synchronized void packFloat (float f) throws IOException;\n"
+"        public synchronized void packDouble (double d) throws IOException;\n"
+"        public synchronized void packString (String s) throws IOException;\n"
+"};\n"
+"public class InputBuffer\n"
+"{\n"
+"        public        InputBuffer ();\n"
+"        \n"
+"        public final synchronized boolean valid ();\n"
+"        public synchronized byte[] buffer();\n"
+"        public synchronized int length ();\n"
+"        \n"
+"        /* unpack operations for standard Java types */\n"
+"        \n"
+"        public synchronized byte unpackByte () throws IOException;\n"
+"        public synchronized byte[] unpackBytes () throws IOException;\n"
+"        public synchronized boolean unpackBoolean () throws IOException;\n"
+"        public synchronized char unpackChar () throws IOException;\n"
+"        public synchronized short unpackShort () throws IOException;\n"
+"        public synchronized int unpackInt () throws IOException;\n"
+"        public synchronized long unpackLong () throws IOException;\n"
+"        public synchronized float unpackFloat () throws IOException;\n"
+"        public synchronized double unpackDouble () throws IOException;\n"
+"        public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:37
+#, no-c-format
+msgid "<title>Uid</title>"
+msgstr "<title>Uid</title>"
+
+#. Tag: screen
+#: Appendix_B.xml:40
+#, no-c-format
+msgid ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+msgstr ""
+"public class Uid implements Cloneable\n"
+"{\n"
+"        public Uid ();\n"
+"        public Uid (Uid copyFrom);\n"
+"        public Uid (String uidString);\n"
+"        public Uid (String uidString, boolean errorsOk);\n"
+"        public synchronized void pack (OutputBuffer packInto) throws "
+"IOException;\n"
+"        public synchronized void unpack (InputBuffer unpackFrom) throws "
+"IOException;\n"
+"        \n"
+"        public void print (PrintStream strm);\n"
+"        public String toString ();\n"
+"        public Object clone () throws CloneNotSupportedException;\n"
+"        public synchronized void copy (Uid toCopy) throws UidException;\n"
+"        public boolean equals (Uid u);\n"
+"        public boolean notEquals (Uid u);\n"
+"        public boolean lessThan (Uid u);\n"
+"        public boolean greaterThan (Uid u);\n"
+"        \n"
+"        public synchronized final boolean valid ();\n"
+"        public static synchronized Uid nullUid ();\n"
+"};"
+
+#. Tag: title
+#: Appendix_B.xml:42
+#, no-c-format
+msgid "AtomicAction"
+msgstr "AtomicAction"
+
+#. Tag: screen
+#: Appendix_B.xml:45
+#, no-c-format
+msgid ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+msgstr ""
+"public class AtomicAction\n"
+"{\n"
+"        public AtomicAction ();\n"
+"        \n"
+"        public void begin () throws SystemException, "
+"SubtransactionsUnavailable,\n"
+"        NoTransaction;\n"
+"        public void commit (boolean report_heuristics) throws "
+"SystemException, \n"
+"        NoTransaction, HeuristicMixed,\n"
+"        HeuristicHazard,TransactionRolledBack;\n"
+"        public void rollback () throws SystemException, NoTransaction;\n"
+"        public Control control () throws SystemException, NoTransaction;\n"
+"        public Status get_status () throws SystemException;\n"
+"        /* Allow action commit to be supressed */    \n"
+"        public void rollbackOnly () throws SystemException, NoTransaction;\n"
+"        \n"
+"        public void registerResource (Resource r) throws SystemException, "
+"Inactive;\n"
+"        public void registerSubtransactionAwareResource "
+"(SubtransactionAwareResource sr)\n"
+"        throws SystemException, NotSubtransaction;\n"
+"        public void registerSynchronization (Synchronization s) throws "
+"SystemException,\n"
+"        Inactive;\n"
+"};"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,24 @@
+# translation of Author_Group.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 15:44+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr "Red Hat Documentation Group"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,45 @@
+# translation of Book_Info.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-07-04 05:56+0000\n"
+"PO-Revision-Date: 2008-07-08 12:26+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss TS Programmers Guide"
+msgstr "JBoss TS 程序员指南"
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss Enterprise 应用程序平台"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss TS "
+"Programmers Guide"
+msgstr "本书是《JBoss TS 程序员指南》基于企业级应用程序平台的版本"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1005 @@
+# translation of Chapter.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-26 15:12+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Overview"
+msgstr "概述"
+
+#. Tag: title
+#: Chapter.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Chapter.xml:10
+#, no-c-format
+msgid ""
+"This chapter contains a description of the use of the <classname>TxCore</"
+"classname> transaction engine and the <firstterm>Transactional Objects for "
+"Java</firstterm> classes and facilities. The classes mentioned in this "
+"chapter are the key to writing fault-tolerant applications using "
+"transactions. Thus, after describing them we shall apply them in the "
+"construction of a simple application. The classes to be described in this "
+"chapter can be found in the <classname>com.arjuna.ats.txoj</classname> and "
+"<classname>com.arjuna.ats.arjuna</classname> packages."
+msgstr ""
+"本章包含了对 <classname>TxCore</"
+"classname> 事务引擎以及用于 Java 类和工具的 <firstterm>Transactional Objects</firstterm> 的使用的描述。本章涉及的类是编写使用事务的容错应用程序的关键。因此,在介绍它们之后,我们将在一个简单的例程里进行应用。本章描述的类可以在 <classname>com.arjuna.ats.txoj</classname> 和 "
+"<classname>com.arjuna.ats.arjuna</classname> 包里找到。"
+
+#. Tag: title
+#: Chapter.xml:14
+#, no-c-format
+msgid "TxCore – the transaction engine"
+msgstr "TxCore – 事务引擎"
+
+#. Tag: para
+#: Chapter.xml:16
+#, no-c-format
+msgid ""
+"In keeping with the object-oriented view, the mechanisms needed to construct "
+"reliable distributed applications are presented to programmers in an object-"
+"oriented manner. Some mechanisms need to be inherited, for example, "
+"concurrency control and state management; while other mechanisms, such as "
+"object storage and transactions, are implemented as <classname>TxCore</"
+"classname> objects that are created and manipulated like any other object."
+msgstr ""
+"从面向对象的角度来看,构建可靠的分布式应用程序所需的机制以面向对象的方式呈现在程序员前面。某些机制需要被继承,如并行控制和状态管理;而另外一些机制,如对象存储和事务,被实现为象其他任何对象一样创建和操作的 <classname>TxCore</"
+"classname> 对象。"
+
+#. Tag: para
+#: Chapter.xml:20
+#, no-c-format
+msgid ""
+"When the manual talks about using persistence and concurrency control "
+"facilities it assumes that the <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) classes are being used. If this is not the case then the "
+"programmer is responsible for all of these issues."
+msgstr ""
+"当谈及持久性和并发控制机制时,我们假定使用了 <emphasis>Transactional Objects for Java</"
+"emphasis> (TXOJ) 类。如果不是这样的话,程序员要自己来处理所有这些问题。"
+
+#. Tag: para
+#: Chapter.xml:22
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> exploits object-oriented techniques to present "
+"programmers with a toolkit of Java classes from which application classes "
+"can inherit to obtain desired properties, such as persistence and "
+"concurrency control. These classes form a hierarchy, part of which is shown "
+"below and which will be described later in this document."
+msgstr "<classname>TxCore</classname> 使用面向对象的技术为程序员提供一个 Java 类的工具集,应用程序的类可以继承它们来获取所需的属性,如持久性和并发控制。这些类组成一个层次结构,下面是其中一部分,本文档在后面将对其进行讨论。"
+
+#. Tag: caption
+#: Chapter.xml:28
+#, no-c-format
+msgid "Txcore class hierarchy"
+msgstr "Txcore 的类层次结构"
+
+#. Tag: para
+#: Chapter.xml:31
+#, no-c-format
+msgid ""
+"Apart from specifying the scopes of transactions, and setting appropriate "
+"locks within objects, the application programmer does not have any other "
+"responsibilities: <classname>TxCore</classname> and <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) guarantee that transactional objects will "
+"be registered with, and be driven by, the appropriate transactions, and "
+"crash recovery mechanisms are invoked automatically in the event of failures."
+msgstr ""
+"除了指定事务的作用域和设置对象内部的锁以外,程序员无需做其他事情:<classname>TxCore</classname> 和 <emphasis>Transactional "
+"Objects for Java</emphasis> (TXOJ) 保证了事务性对象将被注册,由合适的事务驱动,并在出现故障时自动调用崩溃恢复机制(crash recovery mechanism)。"
+
+#. Tag: title
+#: Chapter.xml:35
+#, no-c-format
+msgid "Saving object states"
+msgstr "保存对象状态"
+
+#. Tag: para
+#: Chapter.xml:37
+#, no-c-format
+msgid ""
+"<classname>TxCore</classname> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object) and persistence (the state represents the final "
+"state of an object at application termination). Since these requirements "
+"have common functionality they are all implemented using the same mechanism: "
+"the classes <classname>InputObjectState</classname> and "
+"<classname>OutputObjectState</classname>. The classes maintain an internal "
+"array into which instances of the standard types can be contiguously packed "
+"(unpacked) using appropriate <command>pack</command> (<command>unpack</"
+"command>) operations. This buffer is automatically resized as required "
+"should it have insufficient space. The instances are all stored in the "
+"buffer in a standard form (so-called network byte order) to make them "
+"machine independent. Any other architecture independent format (such as XDR "
+"or ASN.1) could be implemented simply by replacing the operations with ones "
+"appropriate to the encoding required."
+msgstr ""
+"出于几种考虑,<classname>TxCore</classname> 需要记住对象的状态,如恢复(状态表示对象过去的某种状态)和持久性(状态代表应用程序终止时对象的最终状态)。这些要求都具有用相同机制实现的共同功能:<classname>InputObjectState</classname> 和 <classname>OutputObjectState</classname> 类。这些类维护一个内部的数组,其中的标准类型的实例可以持续地用合适的 <command>pack</command> (<command>unpack</"
+"command>) 操作进行处理。如果空间不够的话,缓冲会自动地根据需要调整大小。实例都以标准形式(所谓网络字节顺序)存储在缓冲里,这使得它们可以独立于主机类型。任何其他架构的格式(如 XDR 或 ASN.1)都可以简单地实现,只要用满足编码要求的操作替换相应的操作就可以了。"
+
+#. Tag: title
+#: Chapter.xml:43
+#, no-c-format
+msgid "The object store"
+msgstr "Object Store"
+
+#. Tag: para
+#: Chapter.xml:45
+#, no-c-format
+msgid ""
+"Implementations of persistence can be affected by restrictions imposed by "
+"the Java SecurityManager. Therefore, the object store provided with "
+"<classname>TxCore</classname> is implemented using the techniques of "
+"interface/implementation. The current distribution has implementations which "
+"write object states to the local file system or database, and remote "
+"implementations, where the interface uses a client stub (proxy) to remote "
+"services."
+msgstr "Java SecurityManager 强加的限制可能影响持久性的实现。因此,<classname>TxCore</classname> 提供的 object store 使用接口技术来实现。目前的发行版本包含的实现把对象状态写入到本地文件系统或数据库里,而其远程实现则通过接口使用一个客户端 stub(代理)访问远程服务。"
+
+#. Tag: para
+#: Chapter.xml:47
+#, no-c-format
+msgid ""
+"Persistent objects are assigned unique identifiers (instances of the Uid "
+"class), when they are created, and this is used to identify them within the "
+"object store. States are read using the <literal>read_committed</literal> "
+"operation and written by the <literal>write_(un)committed</literal> "
+"operations."
+msgstr "持久性对象在创建时被分配一个唯一的标识符(UID 类的实例),这被用来在 Object Store 内部进行标识。状态的读写分别通过 <literal>read_committed</literal> 和 <literal>write_(un)committed</literal> 操作进行。"
+
+#. Tag: title
+#: Chapter.xml:53
+#, no-c-format
+msgid "Recovery and persistence"
+msgstr "恢复和持久化"
+
+#. Tag: para
+#: Chapter.xml:54
+#, no-c-format
+msgid ""
+"At the root of the class hierarchy is the class <classname>StateManager</"
+"classname>. This class is responsible for object activation and deactivation "
+"and object recovery. The simplified signature of the class is:"
+msgstr ""
+"类层次结构的根部是 <classname>StateManager</"
+"classname> 类。这个类负责激活和取消激活对象以及恢复对象。它的简化签名是:"
+
+#. Tag: screen
+#: Chapter.xml:56
+#, no-c-format
+msgid ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+msgstr ""
+"public abstract class StateManager\n"
+"{\n"
+"    public boolean activate ();\n"
+"    public boolean deactivate (boolean commit);\n"
+"\n"
+"    public Uid get_uid (); // object’s identifier.\n"
+"\n"
+"    // methods to be provided by a derived class\n"
+"\n"
+"    public boolean restore_state (InputObjectState os);\n"
+"    public boolean save_state (OutputObjectState os);\n"
+"\n"
+"    protected StateManager ();\n"
+"    protected StateManager (Uid id);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:58
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"recoverable, in which case <classname>StateManager</classname> will attempt "
+"to generate and maintain appropriate recovery information for the object. "
+"Such objects have lifetimes that do not exceed the application program that "
+"creates them. Objects may be recoverable and persistent, in which case the "
+"lifetime of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the activate (deactivate) operation at appropriate times. Finally, "
+"objects may possess none of these capabilities, in which case no recovery "
+"information is ever kept nor is object activation/deactivation ever "
+"automatically attempted."
+msgstr "我们假设对象有 3 种可能的状态。它可能是可恢复的(recoverable),此时 <classname>StateManager</classname> 将试图生成并维护合适的对象恢复信息。这样的对象的生存时间不超过创建它的应用程序。对象也可能是可恢复且持久的(recoverable and persistent),此时它的生存时间将超过创建和访问它的应用程序,所以除了维护恢复信息以外,<classname>StateManager</classname> 还将在适当时候通过调用激活(取消激活)操作来试图加载(卸载)任何现有的持久性状态。最后,对象可能不具有这些能力中的任何一种,此时既不会保持恢复信息也不会自动尝试激活/取消激活对象。"
+
+#. Tag: para
+#: Chapter.xml:61
+#, no-c-format
+msgid ""
+"If an object is recoverable or recoverable and persistent then "
+"<classname>StateManager</classname> will invoke the operations "
+"<command>save_state</command> (while performing <command>deactivate</"
+"command>), and <command>restore_state</command> (while performing activate) "
+"at various points during the execution of the application. These operations "
+"must be implemented by the programmer since <classname>StateManager</"
+"classname> cannot detect user level state changes. (We are examining the "
+"automatic generation of default <command>save_state</command> and "
+"<command>restore_state</command> operations, allowing the programmer to "
+"override this when application specific knowledge can be used to improve "
+"efficiency.) This gives the programmer the ability to decide which parts of "
+"an object’s state should be made persistent. For example, for a spreadsheet "
+"it may not be necessary to save all entries if some values can simply be "
+"recomputed. The <command>save_state</command> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"如果某个对象是可恢复的(recoverable)或可恢复及持久的(recoverable and persistent),那么<classname>StateManager</classname> 将在应用程序执行过程中的不同时间调用 <command>save_state</command>(执行 <command>deactivate</"
+"command> 时)和 <command>restore_state</command>(执行 activate 时)操作。既然 <classname>StateManager</"
+"classname> 不能够检测用户级别的状态变化,程序员必须实现这些操作。(我们正在考虑自动生成缺省的 <command>save_state</command> 和 "
+"<command>restore_state</command> 操作,并在可以提高效率的情况下允许程序员对其进行覆盖。)这使得程序员能够决定对象状态的哪些部分应该持久化。例如,对于一个电子表格来说,如果某些值只是简单的重复计算结果,你没有必要存储所有的条目。具有整型成员变量 A、B 和 C 的 <classname>Example</classname> 类的 <command>save_state</command> 实现可以仅仅是:"
+
+#. Tag: screen
+#: Chapter.xml:63
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"        {\n"
+"            o.packInt(A);\n"
+"            o.packInt(B);\n"
+"            o.packInt(C));\n"
+"        }\n"
+"    catch (Exception e)\n"
+"        {\n"
+"            return false;\n"
+"        }\n"
+"        \n"
+"    return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:65
+#, no-c-format
+msgid ""
+"Objects are assumed to be of three possible flavours. They may simply be "
+"<emphasis>recoverable</emphasis>, in which case <classname>StateManager</"
+"classname> will attempt to generate and maintain appropriate recovery "
+"information for the object. Such objects have lifetimes that do not exceed "
+"the application program that creates them. Objects may be "
+"<emphasis>recoverable and persistent</emphasis>, in which case the lifetime "
+"of the object is assumed to be greater than that of the creating or "
+"accessing application, so that in addition to maintaining recovery "
+"information <classname>StateManager</classname> will attempt to "
+"automatically load (unload) any existing persistent state for the object by "
+"calling the <classname>activate</classname> (<classname>deactivate</"
+"classname>) operation at appropriate times. Finally, objects may possess "
+"none of these capabilities, in which case no recovery information is ever "
+"kept nor is object activation/deactivation ever automatically attempted."
+msgstr "我们假设对象有 3 种可能的状态。它可能是可恢复的(recoverable),此时 <classname>StateManager</classname> 将试图生成并维护合适的对象恢复信息。这样的对象的生存时间不超过创建它的应用程序。对象也可能是可恢复且持久的(recoverable and persistent),此时它的生存时间将超过创建和访问它的应用程序,所以除了维护恢复信息以外,<classname>StateManager</classname> 还将在适当时候通过调用激活(取消激活)操作来试图加载(卸载)任何现有的持久性状态。最后,对象可能不具有这些能力中的任何一种,此时既不会保持恢复信息也不会自动尝试激活/取消激活对象。"
+
+#. Tag: para
+#: Chapter.xml:67
+#, no-c-format
+msgid ""
+"If an object is <emphasis>recoverable</emphasis> or <emphasis>recoverable "
+"and persistent</emphasis> then <classname>StateManager</classname> will "
+"invoke the operations <command>save_state</command> (while performing "
+"<command>deactivate</command>), and <command>restore_state</command> (while "
+"performing <command>activate</command>) at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> cannot detect user "
+"level state changes. (We are examining the automatic generation of default "
+"<classname>save_state</classname> and <classname>restore_state</classname> "
+"operations, allowing the programmer to override this when application "
+"specific knowledge can be used to improve efficiency.) This gives the "
+"programmer the ability to decide which parts of an object’s state should be "
+"made persistent. For example, for a spreadsheet it may not be necessary to "
+"save all entries if some values can simply be recomputed. The "
+"<classname>save_state</classname> implementation for a class "
+"<classname>Example</classname> that has integer member variables called A, B "
+"and C could simply be:"
+msgstr ""
+"如果某个对象是可恢复的(<emphasis>recoverable</emphasis>)或可恢复及持久的(<emphasis>recoverable "
+"and persistent</emphasis>),那么<classname>StateManager</classname> 将在应用程序执行过程中的不同时间调用 <command>save_state</command>(执行 <command>deactivate</"
+"command> 时)和 <command>restore_state</command>(执行 <command>activate</command> 时)操作。既然 <classname>StateManager</"
+"classname> 不能够检测用户级别的状态变化,程序员必须实现这些操作。(我们正在考虑自动生成缺省的 <command>save_state</command> 和 "
+"<command>restore_state</command> 操作,并在可以提高效率的情况下允许程序员对其进行覆盖。)这使得程序员能够决定对象状态的哪些部分应该持久化。例如,对于一个电子表格来说,如果某些值只是简单的重复计算结果,你没有必要存储所有的条目。具有整型成员变量 A、B 和 C 的 <classname>Example</classname> 类的 <command>save_state</command> 实现可以仅仅是:"
+
+#. Tag: screen
+#: Chapter.xml:69
+#, no-c-format
+msgid ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+msgstr ""
+"public boolean save_state(OutputObjectState o)\n"
+"{\n"
+"    if (!super.save_state(o))\n"
+"    return false;\n"
+"            \n"
+"    try\n"
+"    {\n"
+"        o.packInt(A);\n"
+"        o.packInt(B);\n"
+"        o.packInt(C));\n"
+"    }\n"
+"    catch (Exception e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"                \n"
+"return true;\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:70
+#, no-c-format
+msgid ""
+"It is necessary for all <command>save_state</command> and "
+"<command>restore_state</command> methods to call <classname>super.save_state "
+"</classname>and <classname>super.restore_state</classname>. This is to cater "
+"for improvements in the crash recovery mechanisms."
+msgstr ""
+"所有的 <command>save_state</command> 和 "
+"<command>restore_state</command> 方法都有必要调用 <classname>super.save_state "
+"</classname> 和 <classname>super.restore_state</classname>。这是为了顾及崩溃恢复机制里的性能问题。"
+
+#. Tag: title
+#: Chapter.xml:74
+#, no-c-format
+msgid "The life-cycle of a Transactional Object for Java"
+msgstr "Transactional Object for Java 的生命周期"
+
+#. Tag: para
+#: Chapter.xml:76
+#, no-c-format
+msgid ""
+"A persistent object not in use is assumed to be held in a <emphasis>passive</"
+"emphasis> state with its state residing in an object store and "
+"<emphasis>activated</emphasis> on demand. The fundamental life cycle of a "
+"persistent object in <emphasis>TXOJ</emphasis> is shown in <xref linkend="
+"\"figure_2\"/>."
+msgstr ""
+"我们假定未使用的持久性对象保持 <emphasis>passive</"
+"emphasis> 状态且状态保留在 object store 里,需要时可转换成 <emphasis>activated</emphasis> 状态。<xref linkend="
+"\"figure_2\"/> 里展示了 <emphasis>TXOJ</emphasis> 里的持久性对象的基本生命周期。"
+
+#. Tag: caption
+#: Chapter.xml:82
+#, no-c-format
+msgid "The lifecycle of a persistent object."
+msgstr "持久性对象的生命周期。"
+
+#. Tag: para
+#: Chapter.xml:86
+#, no-c-format
+msgid ""
+"The object is initially passive, and is stored in the object store as an "
+"instance of the class <classname>OutputObjectState</classname>."
+msgstr "对象的状态初始时为 passive,作为 <classname>OutputObjectState</classname> 类的实例保存在 object store 里。"
+
+#. Tag: para
+#: Chapter.xml:87
+#, no-c-format
+msgid ""
+"When required by an application the object is automatically activated by "
+"reading it from the store using a <command>read_committed</command> "
+"operation and is then converted from an <classname>InputObjectState</"
+"classname> instance into a fully-fledged object by the "
+"<command>restore_state</command> operation of the object."
+msgstr ""
+"当应用程序需要时,<command>read_committed</command> 操作从 Object Store 里读取对象并自动激活它,且通过 <command>restore_state</command> 操作从 <classname>InputObjectState</"
+"classname> 实例转换成 fully-fledged 对象。"
+
+#. Tag: para
+#: Chapter.xml:88
+#, no-c-format
+msgid ""
+"When the application has finished with the object it is deactivated by "
+"converting it back into an <classname>OutputObjectState</classname> instance "
+"using the <command>save_state</command> operation, and is then stored back "
+"into the object store as a shadow copy using write_uncommitted. This shadow "
+"copy can be committed, overwriting the previous version, using the "
+"<command>commit_state</command> operation. The existence of shadow copies is "
+"normally hidden from the programmer by the transaction system. Object de-"
+"activation normally only occurs when the top-level transaction within which "
+"the object was activated commits."
+msgstr "当应用程序已经结束运行,它用 <command>save_state</command> 操作将对象转换成 <classname>OutputObjectState</classname> 实例来取消激活,然后用 write_uncommitted 操作把对象作为影子拷贝(shadow copy)存回到 object store 里。这个影子拷贝可以用 <command>commit_state</command> 操作提交并覆盖前面的版本。事务系统通常向程序于隐藏现有的影子拷贝。对象的取消激活通常只在激活对象的顶级事务提交时才发生。"
+
+#. Tag: para
+#: Chapter.xml:91
+#, no-c-format
+msgid ""
+"During its life time, a persistent object may be made active then passive "
+"many times."
+msgstr "在其生存期间,持久性对象可以多次被激活和钝化。"
+
+#. Tag: title
+#: Chapter.xml:96
+#, no-c-format
+msgid "The concurrency controller"
+msgstr "并行控制器"
+
+#. Tag: para
+#: Chapter.xml:98
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. As with "
+"<classname>StateManager</classname> and persistence, concurrency control "
+"implementations are accessed through interfaces. As well as providing access "
+"to remote services, the current implementations of concurrency control "
+"available to interfaces include:"
+msgstr "<classname>LockManager</classname> 类实现了并行控制器(concurrency controller),它提供智能的缺省行为,但又允许程序员在必要时进行覆盖。和 <classname>StateManager</classname> 和持久性一样,并行控制实现也是通过接口来进行访问。除了提供对远程服务的访问,目前并行控制的实现包括:"
+
+#. Tag: para
+#: Chapter.xml:101
+#, no-c-format
+msgid ""
+"local disk/database implementation, where locks are made persistent by being "
+"written to the local file system or database."
+msgstr "本地磁盘/数据库实现,通过写入本地文件系统或数据库使锁持久化。"
+
+#. Tag: para
+#: Chapter.xml:102
+#, no-c-format
+msgid ""
+"a purely local implementation, where locks are maintained within the memory "
+"of the virtual machine which created them; this implementation has better "
+"performance than when writing locks to the local disk, but objects cannot be "
+"shared between virtual machines. Importantly, it is a basic Java object with "
+"no requirements which can be affected by the SecurityManager"
+msgstr "纯本地实现,锁在创建它的虚拟机的内存里进行维护。和写入本地磁盘相比,这个实现具有更好的性能,但对象不能在虚拟机之间共享。重要的是,这是一个基本的 Java 对象,它不具备 SecurityManager 能影响的需求。"
+
+#. Tag: para
+#: Chapter.xml:105
+#, no-c-format
+msgid ""
+"The primary programmer interface to the concurrency controller is via the "
+"setlock operation. By default, the runtime system enforces strict two-phase "
+"locking following a multiple reader, single writer policy on a per object "
+"basis. However, as shown in <xref linkend=\"figure_1\"/>, by inheriting from "
+"the <classname>Lock</classname> class it is possible for programmers to "
+"provide their own lock implementations with different lock conflict rules to "
+"enable <firstterm>type specific concurrency control</firstterm>."
+msgstr "并行控制器的主要编程接口是通过 setlock 操作来实现。在缺省情况下,对每个对象,运行系统在多个 reader、单一 writer 策略之后,都强制严格的两阶段锁定。然而,如 <xref linkend=\"figure_1\"/> 所示,通过继承 <classname>Lock</classname> 类,程序员有可能提供自己的锁实现以及不同的锁冲突规则来启用<firstterm>类型专有的并行控制(type specific concurrency control)</firstterm>。"
+
+#. Tag: para
+#: Chapter.xml:107
+#, no-c-format
+msgid ""
+"Lock acquisition is (of necessity) under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is under "
+"control of the system and requires no further intervention by the "
+"programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "既然 <classname>StateManager</classname> 不能决定某个操作是否修改了对象,<classname>LockManager</classname> 不能决定某个操作是否要求读或写锁,程序员需要控制对锁的获取。然而,锁的释放是由系统控制的,且不需要程序员的进一步干预。这确保可以维护正确的两阶段的属性。"
+
+#. Tag: screen
+#: Chapter.xml:109
+#, no-c-format
+msgid ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+msgstr ""
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"    public LockResult setlock (Lock toSet, int retry, int timeout);\n"
+"};"
+
+#. Tag: para
+#: Chapter.xml:111
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, <classname>LockManager</classname> assumes that the "
+"setting of a write lock implies that the invoking operation must be about to "
+"modify the object. This may in turn cause recovery information to be saved "
+"if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes activate to be invoked."
+msgstr ""
+"<classname>LockManager</classname> 类主要负责管理为对象设置锁的请求或者酌情释放锁。然而,既然它来源于 <classname>StateManager</"
+"classname>,它也可以控制是否调用某些继承的功能。例如,<classname>LockManager</classname> 假定写锁的设定暗示着调用操作必须修改对象。反过来如果对象是可恢复的,这会导致对恢复信息的保存。类似地,对锁的成功获取导致激活操作的调用。"
+
+#. Tag: para
+#: Chapter.xml:113
+#, no-c-format
+msgid "The code below shows how we may try to obtain a write lock on an object:"
+msgstr "下面的代码展示了我们如何获取对象的写锁:"
+
+#. Tag: screen
+#: Chapter.xml:115
+#, no-c-format
+msgid ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+msgstr ""
+"public class Example extends LockManager\n"
+"{\n"
+"public boolean foobar ()\n"
+"{\n"
+"    AtomicAction A = new AtomicAction;\n"
+"    boolean result = false;\n"
+"        \n"
+"    A.begin();\n"
+"        \n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == Lock.GRANTED)\n"
+"    {\n"
+"        /*\n"
+"        * Do some work, and TXOJ will\n"
+"        * guarantee ACID properties.\n"
+"        */\n"
+"        \n"
+"        // automatically aborts if fails\n"
+"        \n"
+"        if (A.commit() == AtomicAction.COMMITTED)\n"
+"        {\n"
+"            result = true;\n"
+"        }\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"            \n"
+"    return result;\n"
+"}\n"
+"}"
+
+#. Tag: title
+#: Chapter.xml:120
+#, no-c-format
+msgid "The transaction protocol engine"
+msgstr "事务协议引擎"
+
+#. Tag: para
+#: Chapter.xml:122
+#, no-c-format
+msgid ""
+"The transaction protocol engine is represented by the "
+"<classname>AtomicAction</classname> class, which uses "
+"<classname>StateManager</classname> in order to record sufficient "
+"information for crash recovery mechanisms to complete the transaction in the "
+"event of failures. It has methods for starting and terminating the "
+"transaction, and, for those situations where programmers require to "
+"implement their own resources, methods for registering them with the current "
+"transaction. Because <emphasis>TxCore</emphasis> supports subtransactions, "
+"if a transaction is begun within the scope of an already executing "
+"transaction it will automatically be nested."
+msgstr "事务协议引擎(transaction protocol engine)由 <classname>AtomicAction</classname> 类代表,它使用 <classname>StateManager</classname> 为崩溃恢复机制记录足够的信息以便在发生故障时完成事务。它具有启动和终止事务的方法,以及在程序员需要实现自己的资源时向当前事务注册的方法。因为 <emphasis>TxCore</emphasis> 支持子事务,如果事务以已经运行的事务的作用域开始,那么它将自动地进行嵌套。"
+
+#. Tag: para
+#: Chapter.xml:124
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> is multi-threaded aware, allowing each thread "
+"within an application to share a transaction or execute within its own "
+"transaction. Therefore, all <emphasis>TxCore</emphasis> classes are also "
+"thread safe."
+msgstr "<emphasis>TxCore</emphasis> 可识别多线程,它允许应用程序里的每个线程共享一个事务或者在自己的事务里运行。因此,所有的 <emphasis>TxCore</emphasis> 类也线程安全的(thread safe)。"
+
+#. Tag: title
+#: Chapter.xml:128
+#, no-c-format
+msgid "Example"
+msgstr "示例"
+
+#. Tag: para
+#: Chapter.xml:130
+#, no-c-format
+msgid ""
+"The simple example below illustrates the relationships between activation, "
+"termination and commitment:"
+msgstr "下面这个简单的示例演示了激活(activation)、终止(termination)和提交(commitment)之间的关系:"
+
+#. Tag: screen
+#: Chapter.xml:132
+#, no-c-format
+msgid ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+msgstr ""
+"{\n"
+"    . . .\n"
+"    O1 objct1 = new objct1(Name-A);/* (i) bind to \"old\" persistent object "
+"A */\n"
+"    O2 objct2 = new objct2();         /* create a \"new\" persistent object "
+"*/\n"
+"    OTS.current().begin();                 /* (ii) start of atomic action "
+"*/\n"
+"    \n"
+"    objct1.op(...);                      /* (iii) object activation and "
+"invocations */\n"
+"    objct2.op(...);\n"
+"    . . .\n"
+"    OTS.current().commit(true);         /* (iv) tx commits &amp; objects "
+"deactivated */\n"
+"    }                                         /* (v) */"
+
+#. Tag: para
+#: Chapter.xml:134
+#, no-c-format
+msgid ""
+"The execution of the above code involves the following sequence of "
+"activities:"
+msgstr "上面代码的执行涉及了下面的活动序列:"
+
+#. Tag: para
+#: Chapter.xml:137
+#, no-c-format
+msgid ""
+"Creation of bindings to persistent objects; this could involve the creation "
+"of stub objects and a call to remote objects. In the above example we re-"
+"bind to an existing persistent object identified by <literal>Name-A</"
+"literal>, and a new persistent object. A naming system for remote objects "
+"maintains the mapping between object names and locations and is described in "
+"a later chapter."
+msgstr ""
+"创建对持久性对象绑定;这可能涉及 stub 对象的创建以及对远程对象的调用。在上面的例子里,我们重新绑定了一个现有的持久性对象 <literal>Name-A</"
+"literal> 和一个新的持久性对象。远程对象的命名系统维护着对象名和位置的映射,我们在后面的章节里将进行介绍。"
+
+#. Tag: para
+#: Chapter.xml:138
+#, no-c-format
+msgid "Start of the atomic transaction."
+msgstr "原子事务的启动。"
+
+#. Tag: para
+#: Chapter.xml:139
+#, no-c-format
+msgid ""
+"Operation invocations: as a part of a given invocation the object "
+"implementation is responsible to ensure that it is locked in read or write "
+"mode (assuming no lock conflict), and initialised, if necessary, with the "
+"latest committed state from the object store. The first time a lock is "
+"acquired on an object within a transaction the object’s state is acquired, "
+"if possible, from the object store."
+msgstr "操作调用: 作为给定调用的一部分,对象实现负责确保它在读或写模式下(假设没有锁突)被锁定并初始化,如果必要的话,使用 Object Store 里最新提交的状态。锁在事务里第一次被获取时,如果可能的话,对象的状态将从 Object Store 里获得。"
+
+#. Tag: para
+#: Chapter.xml:140
+#, no-c-format
+msgid ""
+"Commit of the top-level action. This includes updating of the state of any "
+"modified objects in the object store."
+msgstr "顶层动作的提交。这包括更新 Object Store 里任何被修改的对象的状态。"
+
+#. Tag: para
+#: Chapter.xml:141
+#, no-c-format
+msgid "Breaking of the previously created bindings."
+msgstr "破坏之前创建的绑定。"
+
+#. Tag: title
+#: Chapter.xml:147
+#, no-c-format
+msgid "The class hierarchy"
+msgstr "类层次结构"
+
+#. Tag: para
+#: Chapter.xml:149
+#, no-c-format
+msgid ""
+"The principal classes which make up the class hierarchy of <emphasis>TxCore</"
+"emphasis> are depicted below."
+msgstr ""
+"下面是组成 <emphasis>TxCore</"
+"emphasis> 的类层次结构主要的类。"
+
+#. Tag: screen
+#: Chapter.xml:151
+#, no-c-format
+msgid ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+msgstr ""
+"StateManager                // Basic naming, persistence and recovery "
+"control\n"
+"                LockManager                // Basic two-phase locking "
+"concurrency control service\n"
+"                User-Defined Classes\n"
+"                Lock                        // Standard lock type for "
+"multiple readers/single writer\n"
+"                User-Defined Lock Classes\n"
+"                AbstractRecord                // Important utility class, "
+"similar to Resource\n"
+"                    RecoveryRecord                    // handles object "
+"recovery\n"
+"                    LockRecord                // handles object locking\n"
+"                    RecordList                // Intentions list\n"
+"                    other management record types\n"
+"                AtomicAction                // Implements transaction "
+"control abstraction\n"
+"                    TopLevelTransaction\n"
+"                Input/OutputBuffer // Architecture neutral representation of "
+"an objects’ state\n"
+"                    Input/OutputObjectState        // Convenient interface "
+"to Buffer\n"
+"                ObjectStore                        // Interface to the "
+"object storage services"
+
+#. Tag: para
+#: Chapter.xml:153
+#, no-c-format
+msgid ""
+"Programmers of fault-tolerant applications will be primarily concerned with "
+"the classes <classname>LockManager</classname>, <classname>Lock</classname> "
+"and <classname>AtomicAction</classname>. Other classes important to a "
+"programmer are <classname>Uid</classname>, and <classname>ObjectState</"
+"classname>. Most <emphasis>TxCore</emphasis> classes are derived from the "
+"base class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"<classname>Lock</classname> to provide the concurrency control (two-phase "
+"locking in the current implementation) required for implementing the "
+"serialisability property of atomic actions. The implementation of atomic "
+"action facilities is supported by <classname>AtomicAction</classname> and "
+"<classname>TopLevelTransaction</classname>."
+msgstr ""
+"编写容错应用程序的程序员将主要关心 <classname>LockManager</classname>、 <classname>Lock</classname> 和 <classname>AtomicAction</classname> 类。对于程序员来说,其他重要的类是 <classname>Uid</classname> 和 <classname>ObjectState</"
+"classname>。大多数 <emphasis>TxCore</emphasis> 系统类都源自基类 <classname>StateManager</classname>,它为管理持久的和可恢复的对象提供必要的原始功能。这些功能包括对对象激活和取消激活的支持,以及基于状态的对象恢复。<classname>LockManager</"
+"classname> 类使用 <classname>StateManager</classname> 的功能并提供实现原子动作的 serialisability 属性所需的并行控制(当前实现里的两阶段锁定)。<classname>AtomicAction</classname> 和 "
+"<classname>TopLevelTransaction</classname> 支持对原子动作的实现。"
+
+#. Tag: para
+#: Chapter.xml:155
+#, no-c-format
+msgid ""
+"Most <emphasis>TxCore</emphasis> system classes are derived from the base "
+"class <classname>StateManager</classname>, which provides primitive "
+"facilities necessary for managing persistent and recoverable objects. These "
+"facilities include support for the activation and de-activation of objects, "
+"and state-based object recovery. The class <classname>LockManager</"
+"classname> uses the facilities of <classname>StateManager</classname> and "
+"provides the concurrency control required for implementing the "
+"serialisability property of atomic actions."
+msgstr ""
+"大多数 <emphasis>TxCore</emphasis> 系统类都源自基类 <classname>StateManager</classname>,它为管理持久的和可恢复的对象提供必要的原始功能。这些功能包括对对象激活和取消激活的支持,以及基于状态的对象恢复。<classname>LockManager</"
+"classname> 类使用 <classname>StateManager</classname> 的功能并提供实现原子动作的 serialisability 属性所需的并行控制。"
+
+#. Tag: para
+#: Chapter.xml:157
+#, no-c-format
+msgid ""
+"Consider a simple example. Assume that <classname>Example</classname> is a "
+"user-defined persistent class suitably derived from the "
+"<classname>LockManager</classname>. An application containing an atomic "
+"transaction Trans accesses an object (called O) of type <classname>Example</"
+"classname> by invoking the operation op1 which involves state changes to O. "
+"The serialisability property requires that a write lock must be acquired on "
+"O before it is modified; thus the body of op1 should contain a call to the "
+"<literal>setlock</literal> operation of the concurrency controller:"
+msgstr ""
+"让我们看一个简单的例子。假设 <classname>Example</classname> 是一个用户定义的、源自 <classname>LockManager</classname> 的持久性对象。包含原子事务(Trans)的应用程序通过调用 op1 操作(涉及对象 O 的状态改变)访问类型为 <classname>Example</"
+"classname> 的对象(称为 O)。serialisability 属性要求在对对象 O 进行修改之前,必须获取它的写锁;因此 op1 的内容必须包含对并行控制器的 <literal>setlock</literal> 操作的调用。"
+
+#. Tag: screen
+#: Chapter.xml:159
+#, no-c-format
+msgid ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean op1 (...)\n"
+"{        \n"
+"    if (setlock (new Lock(LockMode.WRITE) == LockResult.GRANTED)\n"
+"    {\n"
+"        // actual state change operations follow \n"
+"        ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter.xml:161
+#, no-c-format
+msgid ""
+"The operation <literal>setlock</literal>, provided by the "
+"<classname>LockManager</classname> class, performs the following functions "
+"in this case:"
+msgstr "在这里,<classname>LockManager</classname> 类提供的 <literal>setlock</literal> 操作执行下面的功能:"
+
+#. Tag: para
+#: Chapter.xml:164
+#, no-c-format
+msgid "Check write lock compatibility with the currently held locks, and if allowed:"
+msgstr "检查写锁和当前持有的锁的兼容性,如果允许的话:"
+
+#. Tag: para
+#: Chapter.xml:165
+#, no-c-format
+msgid ""
+"Call the <classname>StateManager</classname> operation activate that will "
+"load, if not done already, the latest persistent state of O from the object "
+"store. Then call the <classname>StateManager</classname> operation modified "
+"which has the effect of creating an instance of either "
+"<classname>RecoveryRecord</classname> or <classname>PersistenceRecord</"
+"classname> for O depending upon whether O was persistent or not (the Lock is "
+"a <literal>WRITE</literal> lock so the old state of the object must be "
+"retained prior to modification) and inserting it into the "
+"<classname>RecordList</classname> of <classname>Trans</classname>."
+msgstr ""
+"调用 <classname>StateManager</classname> 的 activate 操作,如果还没完成的话,这将从 Object Store 载入 O 的最新持久性状态。然后调用 <classname>StateManager</classname> 的 modified 操作,它将影响为 O 创建的 <classname>RecoveryRecord</classname> 或 <classname>PersistenceRecord</"
+"classname> 的实例并将其插入到 <classname>Trans</classname> 的 <classname>RecordList</classname> 里,这取决于 O 是否是持久的(锁是 <literal>WRITE</literal> 锁,所以在修改前必须获取对象的旧的状态)。"
+
+#. Tag: para
+#: Chapter.xml:166
+#, no-c-format
+msgid "Create and insert a LockRecord instance in the RecordList of Trans."
+msgstr "创建并在 Trans 的 RecordList 里插入一个 LockRecord 实例。"
+
+#. Tag: para
+#: Chapter.xml:169
+#, no-c-format
+msgid ""
+"Now suppose that action <literal>Trans</literal> is aborted sometime after "
+"the lock has been acquired. Then the rollback operation of "
+"<classname>AtomicAction</classname> will process the <classname>RecordList</"
+"classname> instance associated with <literal>Trans</literal> by invoking an "
+"appropriate <literal>Abort</literal> operation on the various records. The "
+"implementation of this operation by the <classname>LockRecord</classname> "
+"class will release the <literal>WRITE</literal> lock while that of "
+"<classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> will restore the prior state of O."
+msgstr ""
+"现在假设在已经获取了锁以后,动作 <literal>Trans</literal> 在某个时间被取消了。<classname>AtomicAction</classname> 的 rollback 操作将在不同记录上调用合适的 <literal>Abort</literal> 操作来处理和 <literal>Trans</literal> 关联的 <classname>RecordList</"
+"classname> 实例。这个操作的实现 <classname>LockRecord</classname> 将释放 <literal>WRITE</literal> 锁,而 <classname>RecoveryRecord</classname>/<classname>PersistenceRecord</"
+"classname> 的实现将恢复 O 以前的状态。"
+
+#. Tag: para
+#: Chapter.xml:171
+#, no-c-format
+msgid ""
+"It is important to realise that all of the above work is automatically being "
+"performed by <emphasis>TxCore</emphasis> on behalf of the application "
+"programmer. The programmer need only start the transaction and set an "
+"appropriate lock; <emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> take care of participant registration, "
+"persistence, concurrency control and recovery."
+msgstr ""
+"明白上面所有的工作都是由 <emphasis>TxCore</emphasis> 代表应用程序程序员自动执行是很重要的。程序员只需要启动事务并设置一个合适的锁:<emphasis>TxCore</emphasis> and <emphasis>Transactional "
+"Objects for Java</emphasis> 将负责参与者的注册、持久化、并行控制和恢复。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_02.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_02.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1807 @@
+# translation of Chapter_02.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_02\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-03 15:44+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Chapter_02.xml:6
+#, no-c-format
+msgid "Using TxCore"
+msgstr "使用 TxCore"
+
+#. Tag: title
+#: Chapter_02.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Chapter_02.xml:11
+#, no-c-format
+msgid ""
+"In this section we shall describe <emphasis>TxCore</emphasis> and "
+"<emphasis>Transactional Objects for Java</emphasis> in more detail, and show "
+"how it can be used to construct transactional applications."
+msgstr ""
+"本节我们将描述 <emphasis>TxCore</emphasis> 和 <emphasis>Transactional Objects for "
+"Java</emphasis> 的更多细节,并展示如何用它们来构建事务性应用程序。"
+
+#. Tag: title
+#: Chapter_02.xml:15
+#, no-c-format
+msgid "State management"
+msgstr "状态管理"
+
+#. Tag: title
+#: Chapter_02.xml:18
+#, no-c-format
+msgid "Object States"
+msgstr "对象的状态"
+
+#. Tag: para
+#: Chapter_02.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> needs to be able to remember the state of an "
+"object for several purposes, including recovery (the state represents some "
+"past state of the object), and for persistence (the state represents the "
+"final state of an object at application termination). Since all of these "
+"requirements require common functionality they are all implemented using the "
+"same mechanism - the classes <classname>Input/OutputObjectState</classname> "
+"and <classname>Input/OutputBuffer</classname>."
+msgstr ""
+"出于几种考虑,<classname>TxCore</classname> 需要记住对象的状态,如恢复(状态表>"
+"示对象过去的某种状态)和持久性(状态代表应用程序终止时对象的最终状态)。这些要求"
+"都具有用相同机制实现的共同功能:<classname>InputObjectState</classname> 和 <classname>"
+"OutputObjectState</classname> 类。"
+
+#. Tag: title
+#: Chapter_02.xml:22
+#, no-c-format
+msgid "OutputBuffer"
+msgstr "OutputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:24
+#, no-c-format
+msgid ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+msgstr ""
+"public class OutputBuffer\n"
+"{\n"
+"public OutputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"    /* pack operations for standard Java types */\n"
+"\n"
+"public synchronized void packByte (byte b) throws IOException;\n"
+"public synchronized void packBytes (byte[] b) throws IOException;\n"
+"public synchronized void packBoolean (boolean b) throws IOException;\n"
+"public synchronized void packChar (char c) throws IOException;\n"
+"public synchronized void packShort (short s) throws IOException;\n"
+"public synchronized void packInt (int i) throws IOException;\n"
+"public synchronized void packLong (long l) throws IOException;\n"
+"public synchronized void packFloat (float f) throws IOException;\n"
+"public synchronized void packDouble (double d) throws IOException;\n"
+"public synchronized void packString (String s) throws IOException;\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:26
+#, no-c-format
+msgid "InputBuffer"
+msgstr "InputBuffer"
+
+#. Tag: programlisting
+#: Chapter_02.xml:26
+#, no-c-format
+msgid ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"public class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:28 Chapter_02.xml:34
+#, no-c-format
+msgid ""
+"The <classname>Input/OutputBuffer</classname> class maintains an internal "
+"array into which instances of the standard Java types can be contiguously "
+"packed (unpacked) using the pack (unpack) operations. This buffer is "
+"automatically resized as required should it have insufficient space. The "
+"instances are all stored in the buffer in a standard form (so-called network "
+"byte order) to make them machine independent."
+msgstr ""
+"<classname>Input/OutputBuffer</classname> 类维护维护一个内部的数组,其中的标准类型"
+"的实例可以持续地用合适的 "
+"pack(unpack)操作进行处理。如果空间不够的话,缓冲会自动地根据需要调整大小。实例都以标准形式(所谓网络字节顺序)存储在缓冲里,这使得它们可以独立"
+"于主机类型。"
+
+#. Tag: title
+#: Chapter_02.xml:30 Chapter_02.xml:37
+#, no-c-format
+msgid "OutputObjectState"
+msgstr "OutputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:32
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"public OutputObjectState (Uid newUid, String typeName);\n"
+"\n"
+"public boolean notempty ();\n"
+"public int size ();\n"
+"public Uidpublic class InputBuffer\n"
+"{\n"
+"public InputBuffer ();\n"
+"\n"
+"public final synchronized boolean valid ();\n"
+"public synchronized byte[] buffer();\n"
+"public synchronized int length ();\n"
+"\n"
+"/* unpack operations for standard Java types */\n"
+"\n"
+"public synchronized byte unpackByte () throws IOException;\n"
+"public synchronized byte[] unpackBytes () throws IOException;\n"
+"public synchronized boolean unpackBoolean () throws IOException;\n"
+"public synchronized char unpackChar () throws IOException;\n"
+"public synchronized short unpackShort () throws IOException;\n"
+"public synchronized int unpackInt () throws IOException;\n"
+"public synchronized long unpackLong () throws IOException;\n"
+"public synchronized float unpackFloat () throws IOException;\n"
+"public synchronized double unpackDouble () throws IOException;\n"
+"public synchronized String unpackString () throws IOException;\n"
+"};"
+
+#. Tag: programlisting
+#: Chapter_02.xml:42
+#, no-c-format
+msgid ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class OutputObjectState extends OutputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: title
+#: Chapter_02.xml:49
+#, no-c-format
+msgid "InputObjectState"
+msgstr "InputObjectState"
+
+#. Tag: programlisting
+#: Chapter_02.xml:51
+#, no-c-format
+msgid ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+msgstr ""
+"class InputObjectState extends InputBuffer\n"
+"{\n"
+"    public OutputObjectState (Uid newUid, String typeName, byte[] b);\n"
+"    \n"
+"    public boolean notempty ();\n"
+"    public int size ();\n"
+"    public Uid stateUid ();\n"
+"    public String type ();\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:56
+#, no-c-format
+msgid ""
+"The class <classname>Input/OutputObjectState</classname> provides all the "
+"functionality of <classname>Input/OutputBuffer</classname> (through "
+"inheritance) but adds two additional instance variables that signify the Uid "
+"and type of the object for which the <classname>Input/OutputObjectState</"
+"classname> instance is a compressed image. These are used when accessing the "
+"object store during storage and retrieval of the object state."
+msgstr ""
+"<classname>Input/OutputObjectState</classname> 类提供 <classname>"
+"Input/OutputBuffer</classname> 的所有功能(通过继承),但添加了两个额外的实例变量来指定 UID 和代表 <"
+"classname>Input/OutputObjectState</classname> 实例的压缩映像的对象的类型。在存储和读取 Object "
+"Store 时要用到它们。"
+
+#. Tag: title
+#: Chapter_02.xml:60
+#, no-c-format
+msgid "The object store"
+msgstr "对象库(Object Store)"
+
+#. Tag: para
+#: Chapter_02.xml:62
+#, no-c-format
+msgid ""
+"The object store provided with <emphasis>TxCore</emphasis> deliberately has "
+"a fairly restricted interface so that it can be implemented in a variety of "
+"ways. For example, object stores are implemented in shared memory; on the "
+"Unix file system (in several different forms); and as a remotely accessible "
+"store. More complete information about the object stores available in "
+"<emphasis>TxCore</emphasis> can be found in the Appendix."
+msgstr ""
+"<classname>Input/OutputObjectState</classname> 提供的 Object Store "
+"故意具有一个相当受限的接口,这样就可以以不同的方式来实施。例如,Object Store 可以实施在共享内存里、在 Unix "
+"文件系统里(以不同的形式)以及作为可远程访问的库。关于 <emphasis>TxCore</emphasis> 的可用 Object Store "
+"的完整信息,你可以参考附录。"
+
+#. Tag: para
+#: Chapter_02.xml:64
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default object stores "
+"are pure Java implementations; to access the shared memory and other more "
+"complex object store implementations it is necessary to use native methods."
+msgstr ""
+"和所有 <emphasis>TxCore</emphasis> 的类一样,缺省的 Object Store 也是纯 Java "
+"的实现。要访问共享内存和其他更为复杂的 Object Store 实现,使用 native 方法时必需的。"
+
+#. Tag: para
+#: Chapter_02.xml:66
+#, no-c-format
+msgid ""
+"All of the object stores hold and retrieve instances of the class "
+"<classname>Input/OutputObjectState</classname>. These instances are named by "
+"the Uid and Type of the object that they represent. States are read using "
+"the <command>read_committed</command> operation and written by the system "
+"using the <command>write_uncommitted</command> operation. Under normal "
+"operation new object states do not overwrite old object states but are "
+"written to the store as shadow copies. These shadows replace the original "
+"only when the <command>commit_state</command> operation is invoked. Normally "
+"all interaction with the object store is performed by <emphasis>TxCore</"
+"emphasis> system components as appropriate thus the existence of any shadow "
+"versions of objects in the store are hidden from the programmer."
+msgstr ""
+"所有的 Object Store 都保存并检索 <classname>Input/OutputObjectState</classname> "
+"类的实例。这些实例根据 UID 和它们所代表的对象的类型来命名。读取状态使用 <command>read_committed</command> "
+"操作而写入则使用 <command>write_uncommitted</command> "
+"操作。新的对象状态通常不覆盖旧的对象状态,而是以影子拷贝的方式写入。这些影子拷贝只有在 <command>commit_state</command> "
+"操作被调用时才替换原始的状态。通常,和 Object Store 的所有交互都通过 <emphasis>TxCore</emphasis> "
+"系统组件来执行,因此对于程序员来说,任何对象的影子版本都是隐藏的。"
+
+#. Tag: screen
+#: Chapter_02.xml:68
+#, no-c-format
+msgid ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+msgstr ""
+"public class ObjectStore\n"
+"{\n"
+"public static final int OS_COMMITTED;\n"
+"public static final int OS_UNCOMMITTED;\n"
+"public static final int OS_COMMITTED_HIDDEN;\n"
+"public static final int OS_UNCOMMITTED_HIDDEN;\n"
+"public static final int OS_UNKNOWN;\n"
+"\n"
+"/* The abstract interface */\n"
+"public abstract boolean commit_state (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract InputObjectState read_committed (Uid u, String name)\n"
+"throws ObjectStoreException;\n"
+"public abstract boolean write_uncommitted (Uid u, String name,\n"
+"OutputObjectState os) throws ObjectStoreException;\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:70
+#, no-c-format
+msgid ""
+"When a transactional object is committing it is necessary for it to make "
+"certain state changes persistent in order that it can recover in the event "
+"of a failure and either continue to commit, or rollback. When using "
+"<emphasis>Transactional Objects for Java</emphasis>, <emphasis>TxCore</"
+"emphasis> will take care of this automatically. To guarantee ACID "
+"properties, these state changes must be flushed to the persistence store "
+"implementation before the transaction can proceed to commit; if they are "
+"not, the application may assume that the transaction has committed when in "
+"fact the state changes may still reside within an operating system cache, "
+"and may be lost by a subsequent machine failure. By default, "
+"<emphasis>TxCore</emphasis> ensures that such state changes are flushed. "
+"However, doing so can impose a significant performance penalty on the "
+"application. To prevent transactional object state flushes, set the "
+"<literal>com.arjuna.ats.arjuna.objectstore.objectStoreSync</literal> "
+"variable to OFF."
+msgstr ""
+"当事务性对象被提交时,它有必要将某些状态的改变持久化,这样在出现故障时就能够恢复并继续提交或回滚。当使用 <emphasis>Transactional "
+"Objects for Java</emphasis> 时,<emphasis>TxCore</emphasis> 将自动处理这些事情。要确保 ACID "
+"属性,这些状态变化必须在事务可以继续提交之前冲刷至 persistence store "
+"实现里。如果没有这样做的话,应用程序可能假定事务已经提交,而实际上状态修改仍然驻留在操作系统的缓存里,并可能在随后出现主机故障时丢失。在缺省情况下,<em"
+"phasis>TxCore</emphasis> "
+"将确保这样的状态修改被冲刷。然而,这样做会明显地降低应用程序的性能。要阻止事务性对象的状态冲刷,你可以把 <literal>com.arjuna.ats."
+"arjuna.objectstore.objectStoreSync</literal> 变量设为 OFF。"
+
+#. Tag: title
+#: Chapter_02.xml:74
+#, no-c-format
+msgid "Selecting an object store implementation"
+msgstr "选择 Object Store 实现"
+
+#. Tag: para
+#: Chapter_02.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. The Appendix describes these implementations, how to "
+"select and configure a given implementation (using the <literal>com.arjuna."
+"ats.arjuna.objectstore.objectStoreType</literal> property variable) on a per "
+"object basis, and indicates how additional implementations can be provided."
+msgstr ""
+"<emphasis>TxCore</emphasis> 支持几种不同的 Object Store "
+"的实现。附录里描述了这些实现以及如何为每个对象选择和配置实现(使用 <literal>com.arjuna.ats.arjuna.objectstore."
+"objectStoreType</literal> 属性变量),并指出怎样提供其他的实现。"
+
+#. Tag: title
+#: Chapter_02.xml:84
+#, no-c-format
+msgid "StateManager"
+msgstr "StateManager"
+
+#. Tag: para
+#: Chapter_02.xml:86
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> class <classname>StateManager</classname> "
+"manages the state of an object and provides all of the basic support "
+"mechanisms required by an object for state management purposes. "
+"<classname>StateManager</classname> is responsible for creating and "
+"registering appropriate resources concerned with the persistence and "
+"recovery of the transactional object. If a transaction is nested, then "
+"<classname>StateManager</classname> will also propagate these resources "
+"between child transactions and their parents at commit time."
+msgstr ""
+"<emphasis>TxCore</emphasis> çš„ <classname>StateManager</classname> "
+"类管理对象的状态并提供用于状态管理目的的对象所需的基本支持机制。<classname>StateManager</classname> "
+"负责创建和注册和事务性对象的持久化和恢复相关的合适资源。如果事务是嵌套的,那么 <classname>StateManager</classname> "
+"也将在提交时在子事务和父事务间传递这些资源。"
+
+#. Tag: para
+#: Chapter_02.xml:88
+#, no-c-format
+msgid ""
+"Objects in <emphasis>TxCore</emphasis> are assumed to be of three possible "
+"basic flavours. They may simply be recoverable, in which case "
+"<classname>StateManager</classname> will attempt to generate and maintain "
+"appropriate recovery information for the object (as instances of the class "
+"<classname>Input/OutputObjectState</classname>) . Such objects have "
+"lifetimes that do not exceed the application program that creates them. "
+"Objects may be recoverable and persistent, in which case the lifetime of the "
+"object is assumed to be greater than that of the creating or accessing "
+"application so that in addition to maintaining recovery information "
+"<classname>StateManager</classname> will attempt to automatically load "
+"(unload) any existing persistent state for the object by calling the "
+"<command>activate</command> (<command>deactivate</command>) operation at "
+"appropriate times. Finally, objects may possess none of these capabilities "
+"in which case no recovery information is ever kept nor is object activation/"
+"deactivation ever automatically attempted. This object property is selected "
+"at object construction time and cannot be changed thereafter. Thus an object "
+"cannot gain (or lose) recovery capabilities at some arbitrary point during "
+"its lifetime."
+msgstr ""
+"我们假设 <emphasis>TxCore</emphasis> 里的对象有 3 种可能的状态。它可能是可恢复的(recoverable),此时 <"
+"classname>StateManager</classname> 将为这个对象(<classname>"
+"Input/OutputObjectState</classname> "
+"的实例)试图生成并维护合适的对象恢复信息。这样的对象的生存时间不超过创建它的应用程序。对象也可能是可恢复且持久的(recoverable and "
+"persistent),此时它的生存时间将超过创建和访问它的应用程序,所以除了维护恢复信息以"
+"外,<classname>StateManager</classname> 还将在适当时候通过调用 <command>activate</command>"
+"(<command>deactivate</command>)操"
+"作来试图加载(卸载)任何现有的持久性状态。最后,对象可能不具有这些状态中的任何一"
+"种,此时既不会保持恢复信息也不会自动尝试激活/取消激活对象。这个对象属性在构建时选定且不能再改动。因此对象在其生存期间并不能够获得(或丢失)恢复能力。"
+
+#. Tag: screen
+#: Chapter_02.xml:92
+#, no-c-format
+msgid ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+msgstr ""
+"public class ObjectStatus\n"
+"{\n"
+"    public static final int PASSIVE;\n"
+"    public static final int PASSIVE_NEW;\n"
+"    public static final int ACTIVE;\n"
+"    public static final int ACTIVE_NEW;\n"
+"    public static final int UNKNOWN_STATUS;\n"
+"};\n"
+"\n"
+"public class ObjectType\n"
+"{\n"
+"    public static final int RECOVERABLE;\n"
+"    public static final int ANDPERSISTENT;\n"
+"    public static final int NEITHER;\n"
+"};\n"
+"\n"
+"public abstract class StateManager\n"
+"{\n"
+"    public synchronized boolean activate ();\n"
+"    public synchronized boolean activate (String storeRoot);\n"
+"    public synchronized boolean deactivate ();\n"
+"    public synchronized boolean deactivate (String storeRoot, boolean "
+"commit);\n"
+"    \n"
+"    public synchronized void destroy ();\n"
+"    \n"
+"    public final Uid get_uid ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"    \n"
+"    protected StateManager ();\n"
+"    protected StateManager (int ObjectType, ObjectName attr);\n"
+"    protected StateManager (Uid uid);\n"
+"    protected StateManager (Uid uid, ObjectName attr);\n"
+"    . . .\n"
+"    \n"
+"    protected final void modified ();\n"
+"    . . .\n"
+"};\n"
+"\n"
+"public class ObjectModel\n"
+"{\n"
+"    public static final int SINGLE;\n"
+"    public static final int MULTIPLE;\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:94
+#, no-c-format
+msgid ""
+"If an object is recoverable (or persistent) then <classname>StateManager</"
+"classname> will invoke the operations <command>save_state</command> (while "
+"performing <command>deactivation</command>), <command>restore_state</"
+"command> (while performing activate) and type at various points during the "
+"execution of the application. These operations must be implemented by the "
+"programmer since <classname>StateManager</classname> does not have access to "
+"a runtime description of the layout of an arbitrary Java object in memory "
+"and thus cannot implement a default policy for converting the in memory "
+"version of the object to its passive form. However, the capabilities "
+"provided by <classname>Input/OutputObjectState</classname> make the writing "
+"of these routines fairly simple. For example, the <command>save_state</"
+"command> implementation for a class <classname>Example</classname> that had "
+"member variables called A, B and C could simply be the following:"
+msgstr ""
+"如果某个对象是可恢复的(recoverable)或可恢复及持久的(recoverable and persistent),那么<classname>StateManager</classname> 将在应用程序执行过程中的不同时间调"
+"用 <command>save_state</command>(执行 <command>deactivate</"
+"command> 时)和 <command>restore_state</command>(执行 activate 时)操作。既然 <classname>StateManager</classname> 不能够检测用户级别的状态变化,程序员必须实现这些操作。(我们正在考虑"
+"自动生成缺省的 <command>save_state</command> 和 "
+"<command>restore_state</command> 操作,并在可以提高效率的情况下允许程序员对其进"
+"行覆盖。)这使得程序员能够决定对象状态的哪些部分应该持久化。例如,对于一个电子表"
+"格来说,如果某些值只是简单的重复计算结果,你没有必要存储所有的条目。具有整型成员"
+"变量 A、B 和 C 的 <classname>Example</classname> 类的 <command>save_state</command> 实现可以仅仅是:"
+
+#. Tag: screen
+#: Chapter_02.xml:96
+#, no-c-format
+msgid ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+msgstr ""
+"public boolean save_state ( OutputObjectState os, int ObjectType )\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"    return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        os.packInt(A);\n"
+"        os.packString(B);\n"
+"        os.packFloat(C);\n"
+"    \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Chapter_02.xml:98
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <command>save_state</command> and <command>restore_state</command> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"为了支持持久性对象的崩溃恢复,用户对象的所有 <command>save_state</command> 和 <command>restore_state</command> 方法都有必要调用 <command>super.save_state</command> 和 "
+"<command>super.restore_state</command>。"
+
+#. Tag: para
+#: Chapter_02.xml:100 Chapter_02.xml:182
+#, no-c-format
+msgid ""
+"The type method is used to determine the location in the object store where "
+"the state of instances of that class will be saved and ultimately restored. "
+"This can actually be any valid string. However, you should avoid using the "
+"hash character (#) as this is reserved for special directories that "
+"<emphasis>TxCore</emphasis> requires."
+msgstr "type 方法用来决定实例将在 Object Store 里保存和最终恢复的位置。这实际上可以是任何有效的字符串。然而,你应该避免使用井号(#),因为它是用于 <emphasis>TxCore</emphasis> 所要求的特殊目录的保留字。"
+
+#. Tag: para
+#: Chapter_02.xml:102
+#, no-c-format
+msgid ""
+"The <command>get_uid</command> operation of <classname>StateManager</"
+"classname> provides read only access to an object’s internal system name for "
+"whatever purpose the programmer requires (such as registration of the name "
+"in a name server). The value of the internal system name can only be set "
+"when an object is initially constructed - either by the provision of an "
+"explicit parameter or by generating a new identifier when the object is "
+"created."
+msgstr ""
+"<classname>StateManager</"
+"classname> 的 <command>get_uid</command> 操作返回只读的对象的内部系统名称,它可用于任何目的,例如程序员可用来在命名服务器里注册。你只能在对象构建时设置内部系统名称的值 - 通过显性参数或在创建对象时生成新的标识符。"
+
+#. Tag: para
+#: Chapter_02.xml:104
+#, no-c-format
+msgid ""
+"The <command>destroy</command> method can be used to remove the object’s "
+"state from the object store. This is an atomic operation, and therefore will "
+"only remove the state if the top-level transaction within which it is "
+"invoked eventually commits. The programmer must obtain exclusive access to "
+"the object prior to invoking this operation."
+msgstr "<command>destroy</command> 方法可用来从 Object Store 里删除对象的状态。这是一个原子操作,因此只能在这个调用所处的顶层事务最终提交时才能进行完成。在调用此操作之前,程序员必须获取对对象的独占访问。"
+
+#. Tag: para
+#: Chapter_02.xml:106
+#, no-c-format
+msgid ""
+"Since object recovery and persistence essentially have complimentary "
+"requirements (the only difference being where state information is stored "
+"and for what purpose) <classname>StateManager</classname> effectively "
+"combines the management of these two properties into a single mechanism. "
+"That is, it uses instances of the class Input/OutputObjectState both for "
+"recovery and persistence purposes. An additional argument passed to the "
+"<command>save_state</command> and <command>restore_state</command> "
+"operations allows the programmer to determine the purpose for which any "
+"given invocation is being made thus allowing different information to be "
+"saved for recovery and persistence purposes."
+msgstr "既然对象的恢复和持久化本来都有类似的需求(唯一不同的是状态信息保存的地方和目的)。<classname>StateManager</classname> 有效地把这两种属性组合到了单一的机制里。那就是,它把 Input/OutputObjectState 类的实例既用于恢复也用于持久化。传递给 <command>save_state</command> 和 <command>restore_state</command> 的另外一个参数允许程序员决定任何调用的目的,这就可以保存用于恢复和持久化的不同信息。"
+
+#. Tag: title
+#: Chapter_02.xml:112
+#, no-c-format
+msgid "Object Models"
+msgstr "对象模型"
+
+#. Tag: para
+#: Chapter_02.xml:114
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> supports two models for objects, which as we "
+"shall show affect how an objects state and concurrency control are "
+"implemented:"
+msgstr "<emphasis>TxCore</emphasis> 支持两种对象模型,我们来看看它们是如何影响对象状态和并行控制的实施的:"
+
+#. Tag: para
+#: Chapter_02.xml:117
+#, no-c-format
+msgid ""
+"<termdef>SINGLE</termdef>: only a single copy of the object exists within "
+"the application; this will reside within a single JVM, and all clients must "
+"address their invocations to this server. This model provides better "
+"performance, but represents a single point of failure, and in a multi-"
+"threaded environment may not protect the object from corruption if a single "
+"thread fails."
+msgstr "<termdef>SINGLE</termdef>:应用程序只存在对象的单一拷贝;这将驻留在单一的 JVM 里,所有的客户都必须解决对这个服务器的调用。这种模型提供了更好的性能,但也导致了单一的故障点,在多线程的环境里如果某一线程崩溃的话,它可能不能保护对象。"
+
+#. Tag: caption
+#: Chapter_02.xml:123
+#, no-c-format
+msgid "Single Object Model"
+msgstr "Single 对象模型"
+
+#. Tag: para
+#: Chapter_02.xml:127
+#, no-c-format
+msgid ""
+"MULTIPLE: logically a single instance of the object exists, but copies of it "
+"are distributed across different JVMs; the performance of this model is "
+"worse than the SINGLE model, but it provides better failure isolation."
+msgstr "MULTIPLE:逻辑上来说只存在对象的单一实例,但其拷贝可以在不同的 JVM 间传递;这种模型的性能比 SINGLE 模型要差,但它提供了更好的容错能力。"
+
+#. Tag: caption
+#: Chapter_02.xml:134
+#, no-c-format
+msgid "Multiple Object Model"
+msgstr "Multiple 对象模型"
+
+#. Tag: para
+#: Chapter_02.xml:139
+#, no-c-format
+msgid ""
+"The default model is SINGLE. The programmer can override this on a per "
+"object basis by providing an appropriate instance of the <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> class at object "
+"construction."
+msgstr ""
+"SINGLE 是缺省的对象模型。对于每个对象,程序员都可以用合适的 <classname>com."
+"arjuna.ats.arjuna.gandiva.ObjectName</classname> 实例覆盖它。"
+
+#. Tag: para
+#: Chapter_02.xml:141
+#, no-c-format
+msgid ""
+"The model can be changed between each successive instantiation of the "
+"object, i.e., it need not be the same during the object's lifetime."
+msgstr "你可以在对象后续的每次实例化之间修改模型,也就是说,在对象的生存期间模型不需要维持不变。"
+
+#. Tag: para
+#: Chapter_02.xml:143
+#, no-c-format
+msgid ""
+"To provide a suitable <classname>ObjectName</classname> class, it is "
+"necessary to perform the following steps:"
+msgstr "要提供合适的 <classname>ObjectName</classname> 类,你有必要执行下面的步骤:"
+
+#. Tag: para
+#: Chapter_02.xml:148
+#, no-c-format
+msgid "create a new instance of <classname>ObjectName</classname>."
+msgstr "创建一个新的 <classname>ObjectName</classname> 实例。"
+
+#. Tag: para
+#: Chapter_02.xml:149
+#, no-c-format
+msgid ""
+"set the object model attribute using the <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> name."
+msgstr ""
+"用 <literal>com.arjuna.ats.arjuna."
+"ArjunaNames.StateManager_objectModel()</literal> 名称设置对象模型属性。"
+
+#. Tag: para
+#: Chapter_02.xml:152
+#, no-c-format
+msgid "For example:"
+msgstr "例如:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:154
+#, no-c-format
+msgid ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+msgstr ""
+"{\n"
+"    ObjectName attr = new ObjectName(“SNS:myObjectName”);\n"
+"    \n"
+"    attr.setLongAttribute(ArjunaNames.StateManager_objectModel(),\n"
+"    ObjectModel.SINGLE);\n"
+"    \n"
+"    AtomicObject obj = new AtomicObject(ObjectType.ANDPERSISTENT, attr);\n"
+"                }"
+
+#. Tag: title
+#: Chapter_02.xml:161
+#, no-c-format
+msgid "Summary"
+msgstr "总结"
+
+#. Tag: para
+#: Chapter_02.xml:163
+#, no-c-format
+msgid ""
+"In summary, the <emphasis>TxCore</emphasis> class <classname>StateManager</"
+"classname> manages the state of an object and provides all of the basic "
+"support mechanisms required by an object for state management purposes. Some "
+"operations must be defined by the class developer. These operations are: "
+"<command>save_state</command>, <command>restore_state</command>, and "
+"<command>type</command>."
+msgstr ""
+"总的来说,<emphasis>TxCore</emphasis> 的 <classname>StateManager</"
+"classname> 类管理对象的状态并提供所有用于状态管理目的的基本支持。类开发人员必须定义这样一些操作:<command>save_state</command>、<command>restore_state</command> 和 "
+"<command>type</command>。"
+
+#. Tag: literal
+#: Chapter_02.xml:167
+#, no-c-format
+msgid "boolean save_state (OutputObjectState state, int ObjectType)"
+msgstr "boolean save_state (OutputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:168
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object might need to be saved for future "
+"use - primarily for recovery or persistence purposes. The "
+"<literal>ObjectType</literal> parameter indicates the reason that "
+"<command>save_state</command> was invoked by <emphasis>TxCore</emphasis>. "
+"This enables the programmer to save different pieces of information into the "
+"<classname>OutputObjectState</classname> supplied as the first parameter "
+"depending upon whether the state is needed for recovery or persistence "
+"purposes. For example, pointers to other <emphasis>TxCore</emphasis> objects "
+"might be saved simply as pointers for recovery purposes but as Uid’s for "
+"persistence purposes. As shown earlier, the <classname>OutputObjectState</"
+"classname> class provides convenient operations to allow the saving of "
+"instances of all of the basic types in Java. In order to support crash "
+"recovery for persistent objects it is necessary for all <command>save_state</"
+"command> methods to call <command>super.save_state</command>."
+msgstr ""
+"每当对象的状态需要为以后的使用(主要是恢复和持久化)而进行保存时,它将被调用。 <literal>ObjectType</literal> 参数指定 <command>save_state</command> 被 <emphasis>TxCore</emphasis> 调用的原因。这使程序员可以根据恢复和持久化是否需要该状态来把不同的信息保存至作为第一个参数提供的 <classname>OutputObjectState</classname> 里。例如,如用于恢复目的,其他 <emphasis>TxCore</emphasis> 对象的指针可以简单地保存为指针,而对于持久化则保存为 UID。如前面所展示的,<classname>OutputObjectState</"
+"classname> 类提供了方便保存所有 Java 基本类型实例的操作。为了支持持久性对象的崩溃恢复,所有 <command>save_state</"
+"command> 方法都有必要调用 <command>super.save_state</command>。"
+
+#. Tag: para
+#: Chapter_02.xml:170
+#, no-c-format
+msgid ""
+"<command>save_state</command> assumes that an object is internally "
+"consistent and that all variables saved have valid values. It is the "
+"programmer's responsibility to ensure that this is the case."
+msgstr "<command>save_state</command> 假定对象具有内部一致性,所有保存的变量都具有有效值。在编程时程序员需要确保这一点。"
+
+#. Tag: literal
+#: Chapter_02.xml:174
+#, no-c-format
+msgid "boolean restore_state (InputObjectState state, int ObjectType)"
+msgstr "boolean restore_state (InputObjectState state, int ObjectType)"
+
+#. Tag: para
+#: Chapter_02.xml:175
+#, no-c-format
+msgid ""
+"Invoked whenever the state of an object needs to be restored to the one "
+"supplied. Once again the second parameter allows different interpretations "
+"of the supplied state. In order to support crash recovery for persistent "
+"objects it is necessary for all <command>restore_state</command> methods to "
+"call <command>super.restore_state</command>."
+msgstr ""
+"每当对象的状态需要恢复时被调用。第二个参数允许状态的不同插值。为了支持持久性对象的崩溃恢复,所有 <command>restore_state</"
+"command> 方法都有必要调用 <command>super.restore_state</command>。"
+
+#. Tag: literal
+#: Chapter_02.xml:179
+#, no-c-format
+msgid "String type ()"
+msgstr "String type ()"
+
+#. Tag: para
+#: Chapter_02.xml:180
+#, no-c-format
+msgid ""
+"The <emphasis>TxCore</emphasis> persistence mechanism requires a means of "
+"determining the type of an object as a string so that it can save/restore "
+"the state of the object into/from the object store. By convention this "
+"information indicates the position of the class in the hierarchy. For "
+"example, “/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”."
+msgstr ""
+"<emphasis>TxCore</emphasis> 的持久化机制需要一个获取对象类型(字符串形式)的方法,这样它才可以在 Object Store 里保存/恢复对象的状态。这个信息通常指出类在层次结构中的位置。例如,“/<classname>StateManager</classname>/<classname>LockManager</"
+"classname>/<classname>Object</classname>”。"
+
+#. Tag: title
+#: Chapter_02.xml:190
+#, no-c-format
+msgid "Example"
+msgstr "示例"
+
+#. Tag: para
+#: Chapter_02.xml:192
+#, no-c-format
+msgid ""
+"Consider the following basic <classname>Array</classname> class derived from "
+"the <classname>StateManager</classname> class (in this example, to "
+"illustrate saving and restoring of an object’s state, the highestIndex "
+"variable is used to keep track of the highest element of the array that has "
+"a non-zero value):"
+msgstr "请看下面源自 <classname>StateManager</classname> 的基本 <classname>Array</classname> 类(在这个例子里,为了解释保存和恢复对象的状态, highestIndex 变量用来记录这个类里非零值的索引值最高的元素):"
+
+#. Tag: programlisting
+#: Chapter_02.xml:196
+#, no-c-format
+msgid ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+msgstr ""
+"public class Array extends StateManager\n"
+"{\n"
+"    public Array ();\n"
+"    public Array (Uid objUid);\n"
+"    public void finalize ( super.terminate(); };\n"
+"    \n"
+"    /* Class specific operations. */\n"
+"    \n"
+"    public boolean set (int index, int value);\n"
+"    public int get (int index);\n"
+"    \n"
+"    /* State management specific operations. */\n"
+"    \n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    \n"
+"    public static final int ARRAY_SIZE = 10;\n"
+"    \n"
+"    private int[] elements = new int[ARRAY_SIZE];\n"
+"    private int highestIndex;\n"
+"    };"
+
+#. Tag: para
+#: Chapter_02.xml:198
+#, no-c-format
+msgid ""
+"The <command>save_state</command>, <command>restore_state</command> and "
+"<command>type</command> operations can be defined as follows:"
+msgstr ""
+"下面是 <command>save_state</command>、<command>restore_state</command> 和 "
+"<command>type</command> 的定义:"
+
+#. Tag: programlisting
+#: Chapter_02.xml:202
+#, no-c-format
+msgid ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+msgstr ""
+"/* Ignore ObjectType parameter for simplicity */\n"
+"\n"
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {    \n"
+"        packInt(highestIndex);\n"
+"\n"
+"        /*\n"
+"        * Traverse array state that we wish to save. Only save active "
+"elements\n"
+"        */\n"
+"\n"
+"        for (int i = 0; i &lt;= highestIndex; i++)\n"
+"            os.packInt(elements[i]);\n"
+"            \n"
+"        return true;\n"
+"    }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"    if (!super.restore_state(os, ObjectType))\n"
+"        return false;\n"
+"    \n"
+"    try\n"
+"    {\n"
+"        int i = 0;\n"
+"    \n"
+"        highestIndex = os.unpackInt();\n"
+"    \n"
+"        while (i &lt; ARRAY_SIZE)\n"
+"        {\n"
+"            if (i &lt;= highestIndex)\n"
+"                elements[i] =  os.unpackInt();\n"
+"            else\n"
+"                elements[i] = 0;\n"
+"            i++;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"        }\n"
+"    catch (IOException e)\n"
+"    {\n"
+"        return false;\n"
+"    }\n"
+"}\n"
+" \n"
+"public String type ()\n"
+"{\n"
+"    return \"/StateManager/Array\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_02.xml:207
+#, no-c-format
+msgid "Lock management and concurrency control"
+msgstr "锁管理和并行控制"
+
+#. Tag: para
+#: Chapter_02.xml:209
+#, no-c-format
+msgid ""
+"Concurrency control information within <emphasis>TxCore</emphasis> is "
+"maintained by locks. Locks which are required to be shared between objects "
+"in different processes may be held within a lock store, similar to the "
+"object store facility presented previously. The lock store provided with "
+"<emphasis>TxCore</emphasis> deliberately has a fairly restricted interface "
+"so that it can be implemented in a variety of ways. For example, lock stores "
+"are implemented in shared memory; on the Unix file system (in several "
+"different forms); and as a remotely accessible store. More information about "
+"the object stores available in <emphasis>TxCore</emphasis> can be found in "
+"the Appendix."
+msgstr "<emphasis>TxCore</emphasis> 里的并行控制信息由锁来维护。需要在不同线程里的对象之间共享的锁可以保存在 Lock Store 里,这和前面介绍的 Object Store 相似。<emphasis>TxCore</emphasis> 提供的 Lock Store 具有一个刻意进行限制的接口,它可以用不同的方式来实施。例如,Lock Store 可以在共享内存里、Unix 文件系统里(以不同的形式)或是以远程访问的方式来实施。关于 <emphasis>TxCore</emphasis> 里可用的 Lock Store 的更多信息,请参考附录。"
+
+#. Tag: para
+#: Chapter_02.xml:211
+#, no-c-format
+msgid ""
+"As with all <emphasis>TxCore</emphasis> classes the default lock stores are "
+"pure Java implementations; to access the shared memory and other more "
+"complex lock store implementations it is necessary to use native methods."
+msgstr "和所有 <emphasis>TxCore</emphasis> 的类一样,缺省的 Lock Store 也是纯 Java 的实现。要访问共享内存和其他更为复杂的 Lock Store 实现,使用 native 方法是必需的。"
+
+#. Tag: programlisting
+#: Chapter_02.xml:213
+#, no-c-format
+msgid ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+msgstr ""
+"public class LockStore\n"
+"{\n"
+"    public abstract InputObjectState read_state (Uid u, String tName)\n"
+"    throws LockStoreException;\n"
+"    \n"
+"    public abstract boolean remove_state (Uid u, String tname);\n"
+"    public abstract boolean write_committed (Uid u, String tName,\n"
+"    OutputObjectState state);\n"
+"    };"
+
+#. Tag: title
+#: Chapter_02.xml:216
+#, no-c-format
+msgid "Selecting a lock store implementation"
+msgstr "选择 Lock Store 的实现"
+
+#. Tag: para
+#: Chapter_02.xml:218
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> comes with support for several different object "
+"store implementations. If the object model being used is SINGLE, then no "
+"lock store is required for maintaining locks, since the information about "
+"the object is not exported from it. However, if the MULTIPLE model is used, "
+"then different run-time environments (processes, Java virtual machines) may "
+"need to share concurrency control information. The implementation type of "
+"the lock store to use can be specified for all objects within a given "
+"execution environment using the <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> property variable. Currently this can have one of "
+"the following values:"
+msgstr ""
+"<emphasis>TxCore</emphasis> 支持几种不同的 Lock Store 的实现。如果对象模型为 SINGLE,那么维护锁就不需要 Lock Store,因为不会输出对象的信息。然而,如果使用了 MULTIPLE 模型,那么不同的运行环境(进程、Java 虚拟机)可能需要共享并行控制信息。Lock Store 使用的实施类型可以在执行环境里用 <literal>com.arjuna.ats.txoj.lockstore."
+"lockStoreType</literal> 属性变量指定。目前它可以有如下的值:"
+
+#. Tag: term
+#: Chapter_02.xml:222
+#, no-c-format
+msgid "BasicLockStore"
+msgstr "BasicLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:223
+#, no-c-format
+msgid ""
+"This is an in-memory implementation which does not, by default, allow "
+"sharing of stored information between execution environments. The "
+"application programmer is responsible for sharing the store information."
+msgstr "这是一个内存里(In-memory)的实施,它缺省不会允许在执行环境间共享保存的信息。信息的共享需要应用程序开发人员来实现。"
+
+#. Tag: term
+#: Chapter_02.xml:227
+#, no-c-format
+msgid "BasicPersistentLockStore"
+msgstr "BasicPersistentLockStore"
+
+#. Tag: para
+#: Chapter_02.xml:228
+#, no-c-format
+msgid ""
+"This is the default implementation, and stores locking information within "
+"the local file system. Therefore execution environments that share the same "
+"file store can share concurrency control information. The root of the file "
+"system into which locking information is written is the <filename>LockStore</"
+"filename> directory within the <emphasis>TxCore</emphasis> installation "
+"directory. This can be overridden at runtime by setting the <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> property variable "
+"accordingly, or placing the location within the <literal>CLASSPATH</literal>:"
+msgstr ""
+"这是缺省的实施方法,它把锁信息保存在本地的文件系统里。因此共享相同文件 store 的执行环境可以共享并行控制信息。锁信息写入的文件系统的根是 <emphasis>TxCore</emphasis> 安装目录下的 <filename>LockStore</"
+"filename> 目录。这可以在运行时通过设置 <literal>com."
+"arjuna.ats.txoj.lockstore.lockStoreDir</literal> 属性变量或者替换 <literal>CLASSPATH</literal> 的路径来覆盖。"
+
+#. Tag: command
+#: Chapter_02.xml:230
+#, no-c-format
+msgid ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+msgstr ""
+"java -D com.arjuna.ats.txoj.lockstore.lockStoreDir=/var/tmp/LockStore "
+"myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:232
+#, no-c-format
+msgid "<para>or</para>"
+msgstr "<para>或</para>"
+
+#. Tag: command
+#: Chapter_02.xml:234
+#, no-c-format
+msgid "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+msgstr "java –classpath $CLASSPATH;/var/tmp/LockStore myprogram"
+
+#. Tag: para
+#: Chapter_02.xml:236
+#, no-c-format
+msgid ""
+"If neither of these approaches is taken, then the default location will be "
+"at the same level as the <filename>etc</filename> directory of the "
+"installation."
+msgstr "如果不使用这两种方法,那么缺省的位置将和安装目录里的 <filename>etc</filename> 目录平级。"
+
+#. Tag: title
+#: Chapter_02.xml:245
+#, no-c-format
+msgid "LockManager"
+msgstr "LockManager"
+
+#. Tag: para
+#: Chapter_02.xml:247
+#, no-c-format
+msgid ""
+"The concurrency controller is implemented by the class "
+"<classname>LockManager</classname> which provides sensible default behaviour "
+"while allowing the programmer to override it if deemed necessary by the "
+"particular semantics of the class being programmed. The primary programmer "
+"interface to the concurrency controller is via the setlock operation. By "
+"default, the <emphasis>TxCore</emphasis> runtime system enforces strict two-"
+"phase locking following a multiple reader, single writer policy on a per "
+"object basis. Lock acquisition is under programmer control, since just as "
+"<classname>StateManager</classname> cannot determine if an operation "
+"modifies an object, <classname>LockManager</classname> cannot determine if "
+"an operation requires a read or write lock. Lock release, however, is "
+"normally under control of the system and requires no further intervention by "
+"the programmer. This ensures that the two-phase property can be correctly "
+"maintained."
+msgstr "并行控制是用 <classname>LockManager</classname> 类实现的,它提供缺省行为但也允许程序员在特殊模式下进行覆盖。并行控制器的主要编程接口是通过 setlock 操作来进行的。在缺省情况下,对每个对象,运行系统在多个 reader、单一 writer 策略之后,都强制严格的两阶段锁定。既然 <classname>StateManager</classname> 不能决定某个操作是否需要修改对象,而 <classname>LockManager</classname> 也不能决定操作是否需要读或写锁,那么锁的获取就通过编程来控制。然而,锁的释放通常是系统来控制的,它不需要程序员的进一步干预。这确保了正确的两阶段属性。"
+
+#. Tag: para
+#: Chapter_02.xml:249
+#, no-c-format
+msgid ""
+"The <classname>LockManager</classname> class is primarily responsible for "
+"managing requests to set a lock on an object or to release a lock as "
+"appropriate. However, since it is derived from <classname>StateManager</"
+"classname>, it can also control when some of the inherited facilities are "
+"invoked. For example, if a request to set a write lock is granted, then "
+"<classname>LockManager</classname> invokes modified directly assuming that "
+"the setting of a write lock implies that the invoking operation must be "
+"about to modify the object. This may in turn cause recovery information to "
+"be saved if the object is recoverable. In a similar fashion, successful lock "
+"acquisition causes <command>activate</command> to be invoked."
+msgstr ""
+"<classname>LockManager</classname> 类主要负责管理为对象设置锁的请求或者酌情释放"
+"锁。然而,既然它来源于 <classname>StateManager</classname>,它也可以控制是否调用某些继承的功能。例如,<classname>LockManager</classname> 假定写锁的设定暗示着调用操作必须修改对象。反过来如果对象是可恢复的,这会导致对恢复信息的保存。类似地,对锁的成功获取导致 <command>activate</command> 操作的调用。"
+
+#. Tag: para
+#: Chapter_02.xml:251
+#, no-c-format
+msgid ""
+"Therefore, <classname>LockManager</classname> is directly responsible for "
+"activating/de-activating persistent objects, and registering "
+"<classname>Resources</classname> for managing concurrency control. By "
+"driving the <classname>StateManager</classname> class, it is also "
+"responsible for registering <classname>Resources</classname> for persistent/"
+"recoverable state manipulation and object recovery. The application "
+"programmer simply sets appropriate locks, starts and ends transactions, and "
+"extends the <command>save_state</command> and <command>restore_state</"
+"command> methods of <classname>StateManager</classname>."
+msgstr ""
+"因此,<classname>LockManager</classname> 直接负责激活/取消激活持久性对象以及注册用于并行控制管理的 <classname>Resources</classname>。通过启用 <classname>StateManager</classname> 类,它也负责注册用于持久化/可恢复的状态操作和对象恢复的 <classname>Resources</classname>。应用程序开发人员简单地设置合适的锁,启动和结束事务,且继承 <classname>StateManager</classname> 的 <command>save_state</command> 和 <command>restore_state</"
+"command> 方法。"
+
+#. Tag: programlisting
+#: Chapter_02.xml:253
+#, no-c-format
+msgid ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+msgstr ""
+"public class LockResult\n"
+"{\n"
+"public static final int GRANTED;\n"
+"public static final int REFUSED;\n"
+"public static final int RELEASED;\n"
+"};\n"
+"\n"
+"public class ConflictType\n"
+"{\n"
+"public static final int CONFLICT;\n"
+"public static final int COMPATIBLE;\n"
+"public static final int PRESENT;\n"
+"};\n"
+"\n"
+"public abstract class LockManager extends StateManager\n"
+"{\n"
+"public static final int defaultTimeout;\n"
+"public static final int defaultRetry;\n"
+"public static final int waitTotalTimeout;\n"
+"\n"
+"public synchronized int setlock (Lock l);\n"
+"public synchronized int setlock (Lock l, int retry);\n"
+"public synchronized int setlock (Lock l, int retry, int sleepTime);\n"
+"public synchronized boolean releaselock (Uid uid);\n"
+"\n"
+"/* abstract methods inherited from StateManager */\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"public String type ();\n"
+"\n"
+"protected LockManager ();\n"
+"protected LockManager (int ObjectType, ObjectName attr);\n"
+"protected LockManager (Uid storeUid);\n"
+"protected LockManager (Uid storeUid, int ObjectType, ObjectName attr);\n"
+". . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:255
+#, no-c-format
+msgid ""
+"The <command>setlock</command> operation must be parameterised with the type "
+"of lock required (<literal>READ</literal> / <literal>WRITE</literal>), and "
+"the number of retries to acquire the lock before giving up. If a lock "
+"conflict occurs, one of the following scenarios will take place:"
+msgstr "<command>setlock</command> 操作必须用所要求的锁的类型(<literal>READ</literal> / <literal>WRITE</literal>)以及获取锁的重试次数参数化。如果存在锁的冲突,就会出现下面的情况之一:"
+
+#. Tag: para
+#: Chapter_02.xml:257
+#, no-c-format
+msgid ""
+"If the retry value is equal to <literal>LockManager.waitTotalTimeout</"
+"literal>, then the thread which called <command>setlock</command> will be "
+"blocked until the lock is released, or the total timeout specified has "
+"elapsed, and in which <literal>REFUSED</literal> will be returned."
+msgstr ""
+"如果 retry 的值和 <literal>LockManager.waitTotalTimeout</"
+"literal> 相等,那么调用 <command>setlock</command> 的线程将堵塞,直到锁释放为止,或是已过了指定的超时时间且返回的是 <literal>REFUSED</literal>。"
+
+#. Tag: para
+#: Chapter_02.xml:261
+#, no-c-format
+msgid ""
+"If the lock cannot be obtained initially then <classname>LockManager</"
+"classname> will try for the specified number of retries, waiting for the "
+"specified timeout value between each failed attempt. The default is 100 "
+"attempts, each attempt being separated by a 0.25 seconds delay; the time "
+"between retries is specified in micro-seconds."
+msgstr ""
+"如果开始时不能获取锁,<classname>LockManager</"
+"classname> 将重试指定的次数,每次尝试失败之后都等待指定的时间。缺省是 100 次,每次尝试之间都有 0.25 秒的间隔;重试之间的间隔以毫秒指定。"
+
+#. Tag: para
+#: Chapter_02.xml:263
+#, no-c-format
+msgid ""
+"If a lock conflict occurs the current implementation simply times out lock "
+"requests, thereby preventing deadlocks, rather than providing a full "
+"deadlock detection scheme. If the requested lock is obtained, the setlock "
+"operation will return the value <literal>GRANTED</literal>, otherwise the "
+"value <literal>REFUSED</literal> is returned. It is the responsibility of "
+"the programmer to ensure that the remainder of the code for an operation is "
+"only executed if a lock request is granted. Below are examples of the use of "
+"the <command>setlock</command> operation."
+msgstr "如果发生了锁冲突,当前的实现简单地使锁请求超时,这就避免了死锁而不需要提供完全的死锁检测模式。如果获得了所请求的锁,setlock 操作将返回 <literal>GRANTED</literal> 值,否则将返回 <literal>REFUSED</literal>。程序员要确保只有在获取了锁以后才执行后面的代码。下面是一个使用 <command>setlock</command> 操作的例子。"
+
+#. Tag: programlisting
+#: Chapter_02.xml:265
+#, no-c-format
+msgid ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+msgstr ""
+"res = setlock(new Lock(WRITE), 10);        \n"
+"    // Will attempt to set a\n"
+"    // write lock 11 times (10\n"
+"    // retries) on the object\n"
+"    // before giving up.\n"
+"                \n"
+"res = setlock(new Lock(READ), 0);        \n"
+"    // Will attempt to set a read\n"
+"    // lock 1 time (no retries) on\n"
+"    // the object before giving up.\n"
+"    \n"
+"res = setlock(new Lock(WRITE);        \n"
+"    // Will attempt to set a write\n"
+"    // lock 101 times (default of\n"
+"    // 100 retries) on the object\n"
+"    // before giving up."
+
+#. Tag: para
+#: Chapter_02.xml:267
+#, no-c-format
+msgid ""
+"The concurrency control mechanism is integrated into the atomic action "
+"mechanism, thus ensuring that as locks are granted on an object appropriate "
+"information is registered with the currently running atomic action to ensure "
+"that the locks are released at the correct time. This frees the programmer "
+"from the burden of explicitly freeing any acquired locks if they were "
+"acquired within atomic actions. However, if locks are acquired on an object "
+"<emphasis>outside</emphasis> of the scope of an atomic action, it is the "
+"programmer's responsibility to release the locks when required, using the "
+"corresponding <command>releaselock</command> operation."
+msgstr "并行控制机制集成在原子动作机制里,因此保证了当获取了对象的锁时,合适的信息向原子动作注册以确保在正确时间释放锁。如果锁是在原子动作里获取的话,这解除了程序员显性地释放锁的负担。然而,如果锁是在原子动作作用域<emphasis>之外</emphasis>获取的话,程序员要负责用 <command>releaselock</command> 操作按需要释放锁。"
+
+#. Tag: title
+#: Chapter_02.xml:272
+#, no-c-format
+msgid "Locking policy"
+msgstr "锁策略"
+
+#. Tag: para
+#: Chapter_02.xml:274
+#, no-c-format
+msgid ""
+"Unlike many other systems, locks in <emphasis>TxCore</emphasis> are not "
+"special system types. Instead they are simply instances of other "
+"<emphasis>TxCore</emphasis> objects (the class <classname>Lock</classname> "
+"which is also derived from <classname>StateManager</classname> so that locks "
+"may be made persistent if required and can also be named in a simple "
+"fashion). Furthermore, <classname>LockManager</classname> deliberately has "
+"no knowledge of the semantics of the actual policy by which lock requests "
+"are granted. Such information is maintained by the actual <classname>Lock</"
+"classname> class instances which provide operations (the "
+"<literal>conflictsWith</literal> operation) by which <classname>LockManager</"
+"classname> can determine if two locks conflict or not. This separation is "
+"important in that it allows the programmer to derive new lock types from the "
+"basic <classname>Lock</classname> class and by providing appropriate "
+"definitions of the conflict operations enhanced levels of concurrency may be "
+"possible."
+msgstr ""
+"不象许多其他系统,<emphasis>TxCore</emphasis> 里的锁不具有特殊的系统类型。相反,它们都是其他 <emphasis>TxCore</emphasis> 对象(<classname>Lock</classname> 类也是继承自 <classname>StateManager</classname>,所以可根据需要持久化且可以简单形式命名)的简单实例。而且,<classname>LockManager</classname> 刻意不顾授予锁请求时使用的实际策略的模式。这样的信息由实际的 <classname>Lock</"
+"classname> 类的实例来维护,它提供 <classname>LockManager</"
+"classname> 可用来检测锁冲突的操作(<literal>conflictsWith</literal>)。这种分离很重要,因为它允许程序员从基本的 <classname>Lock</classname> 类派生新的锁类型,且通过定义合适的冲突而使增强的不行控制成为可能。"
+
+#. Tag: programlisting
+#: Chapter_02.xml:276
+#, no-c-format
+msgid ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+msgstr ""
+"public class LockMode\n"
+"{\n"
+"    public static final int READ;\n"
+"    public static final int WRITE;\n"
+"};\n"
+"\n"
+"public class LockStatus\n"
+"{\n"
+"    public static final int LOCKFREE;\n"
+"    public static final int LOCKHELD;\n"
+"    public static final int LOCKRETAINED;\n"
+"};\n"
+"\n"
+"public class Lock extends StateManager\n"
+"{\n"
+"    public Lock (int lockMode);\n"
+"    \n"
+"    public boolean conflictsWith  (Lock otherLock);\n"
+"    public boolean modifiesObject ();\n"
+"    \n"
+"    public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"    public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"    public String type ();\n"
+"    . . .\n"
+"};"
+
+#. Tag: para
+#: Chapter_02.xml:278
+#, no-c-format
+msgid ""
+"The <classname>Lock</classname> class provides a <command>modifiesObject</"
+"command> operation which <classname>LockManager</classname> uses to "
+"determine if granting this locking request requires a call on modified. This "
+"operation is provided so that locking modes other than simple read and write "
+"can be supported. The supplied <classname>Lock</classname> class supports "
+"the traditional multiple reader/single writer policy."
+msgstr ""
+"<classname>Lock</classname> 提供了一个 <command>modifiesObject</"
+"command> 操作,<classname>LockManager</classname> 用它来决定在赋予锁时是否需要调用 modified。提供这个操作是为了支持锁模式而不是简单的读和写。<classname>Lock</classname> 类支持传统的多 reader/单一 writer 策略。"
+
+#. Tag: title
+#: Chapter_02.xml:283
+#, no-c-format
+msgid "Object construction and destruction"
+msgstr "对象构造和析构"
+
+#. Tag: para
+#: Chapter_02.xml:285
+#, no-c-format
+msgid ""
+"Recall that <emphasis>TxCore</emphasis> objects can be recoverable; "
+"recoverable and persistent; or neither. Additionally each object possesses a "
+"unique internal name. These attributes can only be set when that object is "
+"constructed. Thus <classname>LockManager</classname> provides two protected "
+"constructors for use by derived classes, each of which fulfils a distinct "
+"purpose:"
+msgstr "让我们回忆一下,<emphasis>TxCore</emphasis> 对象可以是可恢复的、可恢复及持久的或者是 NEITHER。此外,每个对象都拥有一个唯一的内部名称。这些属性只有在对象被构造时才可进行设置。因此 <classname>LockManager</classname> 提供两个作用域为 protected 的构造函数供子类使用,每个都用于不同的目的:"
+
+#. Tag: command
+#: Chapter_02.xml:289
+#, no-c-format
+msgid "LockManager ()"
+msgstr "LockManager ()"
+
+#. Tag: para
+#: Chapter_02.xml:290
+#, no-c-format
+msgid ""
+"This constructor allows the creation of new objects, that is, no prior state "
+"is assumed to exist."
+msgstr "这个构造函数允许创建新的对象,也就是假定以前的状态不存在。"
+
+#. Tag: command
+#: Chapter_02.xml:294
+#, no-c-format
+msgid "LockManager (int ObjectType, ObjectName attr)"
+msgstr "LockManager (int ObjectType, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:295
+#, no-c-format
+msgid ""
+"As above, this constructor allows the creation of new objects, that is, no "
+"prior state is assumed to exist. The <literal>ObjectType</literal> parameter "
+"determines whether an object is simply recoverable (indicated by "
+"<literal>RECOVERABLE</literal>); recoverable and persistent (indicated by "
+"<literal>ANDPERSISTENT</literal>) or neither (<literal>NEITHER</literal>). "
+"If an object is marked as being persistent then the state of the object will "
+"be stored in one of the object stores. The shared parameter only has meaning "
+"if it is <literal>RECOVERABLE</literal>; if <literal>attr</literal> is not "
+"null and the object model is <literal>SINGLE</literal> (the default "
+"behaviour) then the recoverable state of the object is maintained within the "
+"object itself (i.e., it has no external representation), otherwise an in-"
+"memory (volatile) object store is used to store the state of the object "
+"between atomic actions."
+msgstr "这个构造函数允许创建新的对象,也就是假定以前的状态不存在。<literal>ObjectType</literal> 参数指定对象是否是可恢复的(<literal>RECOVERABLE</literal>)、可恢复且持久的(<literal>ANDPERSISTENT</literal>)或两者皆非(<literal>NEITHER</literal>)。如果对象被标记为持久的,那么该对象的状态将保存在某个 Object Store 里。共享参数为只有为 <literal>RECOVERABLE</literal> 时才有意义;如果 <literal>attr</literal> 非空且对象模型为 <literal>SINGLE</literal>(缺省值),那么对象的可恢复状态将在对象内部进行维护(也就是没有外部的代表),否则内存里(In-memory)的 Object Store 将被用来保存原子动作间的对象状态。"
+
+#. Tag: para
+#: Chapter_02.xml:297
+#, no-c-format
+msgid ""
+"Constructors for new persistent objects should make use of atomic actions "
+"within themselves. This will ensure that the state of the object is "
+"automatically written to the object store either when the action in the "
+"constructor commits or, if an enclosing action exists, when the appropriate "
+"top-level action commits. Later examples in this chapter illustrate this "
+"point further."
+msgstr "新的持久性对象的构造函数应该利用其自身的原子动作。这将确保对象的状态在构造函数里的动作提交时,或存在包含的动作而相关的顶层事务提交时,自动地写入到 Object Store。本章后面的例子将进一步解释这一点。"
+
+#. Tag: command
+#: Chapter_02.xml:301
+#, no-c-format
+msgid "LockManager(Uid objUid)"
+msgstr "LockManager(Uid objUid)"
+
+#. Tag: para
+#: Chapter_02.xml:302
+#, no-c-format
+msgid ""
+"This constructor allows access to an existing persistent object, whose "
+"internal name is given by the <literal>objUid</literal> parameter. Objects "
+"constructed using this operation will normally have their prior state "
+"(identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system."
+msgstr ""
+"这个构造函数允许对现有的持久性对象的访问,其内部名称由参数 <literal>objUid</literal> 给定。系统通常为使用这个操作构建的对象从 "
+"Object Store 里自动地加载其优先状态(由 <literal>objUid</literal> 标识)。"
+
+#. Tag: command
+#: Chapter_02.xml:306
+#, no-c-format
+msgid "LockManager(Uid objUid, ObjectName attr)"
+msgstr "LockManager(Uid objUid, ObjectName attr)"
+
+#. Tag: para
+#: Chapter_02.xml:307
+#, no-c-format
+msgid ""
+"As above, this constructor allows access to an existing persistent object, "
+"whose internal name is given by the <literal>objUid</literal> parameter. "
+"Objects constructed using this operation will normally have their prior "
+"state (identified by <literal>objUid</literal>) loaded from an object store "
+"automatically by the system. If the attr parameter is not null, and the "
+"object model is <literal>SINGLE</literal> (the default behaviour), then the "
+"object will not be reactivated at the start of each top-level transaction."
+msgstr "这个构造函数允许访问现有的持久性对象,其内部名由 <literal>objUid</literal> 参数指定。用这个操作构造的对象通常将具有由系统从 Object Store 里自动加载的之前的状态(由 <literal>objUid</literal> 指定)。如果 attr 参数非空,且对象模型是 <literal>SINGLE</literal>(缺省行为),那么对象将不会在每个顶层事务启动时被重新激活。"
+
+#. Tag: para
+#: Chapter_02.xml:309
+#, no-c-format
+msgid ""
+"The destructor of a programmer-defined class must invoke the inherited "
+"operation terminate to inform the state management mechanism that the object "
+"is about to be destroyed otherwise unpredictable results may occur."
+msgstr "用户自定义的类的析构必须调用继承的操作 terminate 来通知状态管理机制对象将被销毁,否则可能出现不可预料的后果。"
+
+#. Tag: para
+#: Chapter_02.xml:311
+#, no-c-format
+msgid ""
+"Because <classname>LockManager</classname> inherits from "
+"<classname>StateManager</classname>, it will pass any supplied "
+"<classname>ObjectName</classname> instance to the <classname>StateManager</"
+"classname> class. As such, it is possible to set the "
+"<classname>StateManager</classname> object model as described earlier."
+msgstr ""
+"因为 <classname>LockManager</classname> 继承自 <classname>StateManager</classname>,它将把任何提供的 <classname>ObjectName</classname> 实例传递给 <classname>StateManager</"
+"classname> 类。因此,如之前所描述的,你可以设置 <classname>StateManager</classname> 对象模型。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_03.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_03.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,688 @@
+# translation of Chapter_03.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_03\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-07-01 14:00+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Chapter_03.xml:6
+#, no-c-format
+msgid "General Transaction Issues"
+msgstr "一般的事务问题"
+
+#. Tag: title
+#: Chapter_03.xml:10
+#, no-c-format
+msgid "Advanced transaction issues with TxCore"
+msgstr "TxCore 的高级事务问题"
+
+#. Tag: para
+#: Chapter_03.xml:12
+#, no-c-format
+msgid ""
+"Atomic actions (transactions) can be used by both application programmers "
+"and class developers. Thus entire operations (or parts of operations) can be "
+"made atomic as required by the semantics of a particular operation. This "
+"chapter will describe some of the more subtle issues involved with using "
+"transactions in general and <emphasis>TxCore</emphasis> in particular."
+msgstr "应用程序和类开发人员都可以使用原子动作(事务)。因此整个操作(或部分操作)都可以根据特殊操作模式所需而成员原子的。本章将描述使用事务的一般问题以及 <emphasis>TxCore</emphasis> 专有的问题。"
+
+#. Tag: title
+#: Chapter_03.xml:15
+#, no-c-format
+msgid "Checking transactions"
+msgstr "检查事务"
+
+#. Tag: para
+#: Chapter_03.xml:17
+#, no-c-format
+msgid ""
+"In a multi-threaded application, multiple threads may be associated with a "
+"transaction during its lifetime, i.e., the thread’s share the context. In "
+"addition, it is possible that if one thread terminates a transaction other "
+"threads may still be active within it. In a distributed environment, it can "
+"be difficult to guarantee that all threads have finished with a transaction "
+"when it is terminated. By default, <emphasis>TxCore</emphasis> will issue a "
+"warning if a thread terminates a transaction when other threads are still "
+"active within it; however, it will allow the transaction termination to "
+"continue. Other solutions to this problem are possible, e.g., blocking the "
+"thread which is terminating the transaction until all other threads have "
+"disassociated themselves from the transaction context. Therefore, "
+"<emphasis>TxCore</emphasis> provides the <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> class, which allows the thread/"
+"transaction termination policy to be overridden. Each transaction has an "
+"instance of this class associated with it, and application programmers can "
+"provide their own implementations on a per transaction basis."
+msgstr ""
+"在多线程应用程序里,多个线程可能和某个事务相关联,也就是说,这些线程共享上下文。此外,有可能某个线程终止了一个事务,而该事务里还有其他的活动线程。在分布式环境里,保证事务终止时所有相关的线程都结束是很困难的。在缺省情况下,如果某个线程终止了一个事务而该事务里还有其他的活动线程,<emphasis>TxCore</emphasis> 将产生一个警告;然而,这仍将允许事务终止过程继续。也有其他的解决方法,例如,阻塞终止事务的线程,一直到所有其他线程都和事务上下文不再相关联。因此,<emphasis>TxCore</emphasis> 提供了 <classname>com.arjuna.ats.arjuna."
+"coordinator.CheckedAction</classname> 类,它允许覆盖线程/事务终止策略。每个事务都有这个类的一个实例与其相关联,应用程序开发人员可以为每个不同的事务提供自己的实现。"
+
+#. Tag: programlisting
+#: Chapter_03.xml:19
+#, no-c-format
+msgid ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+msgstr ""
+"public class CheckedAction\n"
+"{\n"
+"public CheckedAction ();\n"
+"\n"
+"public synchronized void check (boolean isCommit, Uid actUid,\n"
+"BasicList list);\n"
+"};"
+
+#. Tag: para
+#: Chapter_03.xml:21
+#, no-c-format
+msgid ""
+"When a thread attempts to terminate the transaction and there are active "
+"threads within it, the system will invoke the check method on the "
+"transaction’s <classname>CheckedAction</classname> object. The parameters to "
+"the check method are:"
+msgstr "当线程试图终止事务且该事务里还有其他活动线程时,系统将调用事务的 <classname>CheckedAction</classname> 对象的 check 方法。check 方法的参数是:"
+
+#. Tag: term
+#: Chapter_03.xml:25
+#, no-c-format
+msgid "isCommit"
+msgstr "isCommit"
+
+#. Tag: para
+#: Chapter_03.xml:26
+#, no-c-format
+msgid ""
+"Indicates whether the transaction is in the process of committing or rolling "
+"back."
+msgstr "指出事务是否正在提交或回滚。"
+
+#. Tag: term
+#: Chapter_03.xml:30
+#, no-c-format
+msgid "actUid"
+msgstr "actUid"
+
+#. Tag: para
+#: Chapter_03.xml:31
+#, no-c-format
+msgid "The transaction identifier."
+msgstr "事务标识符。"
+
+#. Tag: term
+#: Chapter_03.xml:35
+#, no-c-format
+msgid "list"
+msgstr "list"
+
+#. Tag: para
+#: Chapter_03.xml:36
+#, no-c-format
+msgid ""
+"a list of all of the threads currently marked as active within this "
+"transaction."
+msgstr "该事务里当前所有标记为活动的线程列表。"
+
+#. Tag: para
+#: Chapter_03.xml:42
+#, no-c-format
+msgid ""
+"When check returns, the transaction termination will continue. Obviously the "
+"state of the transaction at this point may be different from that when check "
+"was called, e.g., the transaction may subsequently have been committed."
+msgstr "当 check 返回时,事务终止将继续进行。显然,此时事务的状态可能和 check 刚被调用时会有不同,例如,事务可能随后已经被提交了。"
+
+#. Tag: title
+#: Chapter_03.xml:47
+#, no-c-format
+msgid "Statistics gathering"
+msgstr "收集统计信息"
+
+#. Tag: para
+#: Chapter_03.xml:49
+#, no-c-format
+msgid ""
+"By default, the JBossTS does not maintain any history information about "
+"transactions. However, by setting the <literal>com.arjuna.ats.arjuna."
+"coordinator.enableStatistics</literal> property variable to YES, the "
+"transaction service will maintain information about the number of "
+"transactions created, and their outcomes. This information can be obtained "
+"during the execution of a transactional application via the <classname>com."
+"arjuna.TxCore.Atomic.TxStats</classname> class:"
+msgstr "在缺省情况下,JBossTS 不维护事务的任何历史信息。然而,通过把 <literal>com.arjuna.ats.arjuna.coordinator.enableStatistics</literal> 属性变量设置为 YES,事务服务将保留关于事务创建的数量以及结果的信息。这些信息可以在事务性应用程序的执行过程中通过 <classname>com.arjuna.TxCore.Atomic.TxStats</classname> 类获得:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:51
+#, no-c-format
+msgid ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+msgstr ""
+"public class TxStats\n"
+"{\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions (top-level and nested)\n"
+"* created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of nested (sub) transactions created so far.\n"
+"*/\n"
+"\n"
+"public static int numberOfNestedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have terminated with\n"
+"* heuristic outcomes.\n"
+"*/\n"
+"\n"
+"public static int numberOfHeuristics ();\n"
+"\n"
+"/**\n"
+"* Returns the number of committed transactions.\n"
+"*/\n"
+"\n"
+"public static int numberOfCommittedTransactions ();\n"
+"\n"
+"/**\n"
+"* Returns the number of transactions which have rolled back.\n"
+"*/\n"
+"\n"
+"public static int numberOfAbortedTransactions ();\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:57
+#, no-c-format
+msgid "Last resource commit optimisation"
+msgstr "最近提交资源优化"
+
+#. Tag: para
+#: Chapter_03.xml:59
+#, no-c-format
+msgid ""
+"In some cases it may be necessary to enlist participants that aren’t two-"
+"phase commit aware into a two-phase commit transaction. If there is only a "
+"single resource then there is no need for two-phase commit. However, what if "
+"there are multiple resources in the transaction? In this case, the Last "
+"Resource Commit optimization (LRCO) comes into play. It is possible for a "
+"single resource that is one-phase aware (i.e., can only commit or roll back, "
+"with no prepare), to be enlisted in a transaction with two-phase commit "
+"aware resources. The coordinator treats the one-phase aware resource "
+"slightly differently, in that it executes the prepare phase on all other "
+"resource first, and if it then intends to commit the transaction it passes "
+"control to the one-phase aware resource. If it commits, then the coordinator "
+"logs the decision to commit and attempts to commit the other resources as "
+"well."
+msgstr "在某些情况下,你有必要把非两阶段提交的参与者放入两阶段提交的的事务里。如果只有单个资源,那么就不需要两阶段提交。然而,如果在事务里多个资源呢?此时就可以使用最近资源提交优化(Last Resource Commit optimization,LRCO)。只知道一阶段提交(也就是只提交或回滚,没有准备阶段)的单个资源有可能参与到带有两阶段提交资源的事务里。协调者将稍微区别对待一阶段提交资源,它首先执行所有其他资源的准备阶段,然后试图提交控制权已交给一阶段资源的事务。如果提交成功,协调者登记提交决定并试图提交其他资源。"
+
+#. Tag: para
+#: Chapter_03.xml:61
+#, no-c-format
+msgid ""
+"In order to utilise the LRCO, your participant must implement the "
+"<classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> interface "
+"and be registered with the transaction through the <command>BasicAction</"
+"command>.add operation; since this operation expects instances of "
+"<classname>AbstractRecord</classname>, you must create an instance "
+"<classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> and give "
+"your participant as the constructor parameter, as shown below:"
+msgstr "为了利用 LRCO,参与者必须实现 <classname>com.arjuna.ats.arjuna.coordinator.OnePhase</classname> 接口并通过 <command>BasicAction.add</command> 操作向事务注册。既然这个操作需要 <classname>AbstractRecord</classname> 实例,你必须创建一个 <classname>com.arjuna.ats.arjuna.LastResourceRecord</classname> 实例并把参与者作为参数传给构造函数,就象下面这样:"
+
+#. Tag: programlisting
+#: Chapter_03.xml:63
+#, no-c-format
+msgid ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+msgstr ""
+"try\n"
+"                {\n"
+"                boolean success = false;\n"
+"                AtomicAction A = new AtomicAction();\n"
+"                OnePhase opRes = new OnePhase();  // used OnePhase "
+"interface\n"
+"                \n"
+"                System.err.println(\"Starting top-level action.\");\n"
+"                \n"
+"                A.begin();\n"
+"                A.add(new LastResourceRecord(opRes));\n"
+"                A.add(new ShutdownRecord(ShutdownRecord.FAIL_IN_PREPARE));\n"
+"                \n"
+"                A.commit();"
+
+#. Tag: title
+#: Chapter_03.xml:68
+#, no-c-format
+msgid "Nested transactions"
+msgstr "嵌套的事务"
+
+#. Tag: para
+#: Chapter_03.xml:70
+#, no-c-format
+msgid ""
+"There are no special constructs for nesting of transactions: if an action is "
+"begun while another action is running then it is automatically nested. This "
+"allows for a modular structure to applications, whereby objects can be "
+"implemented using atomic actions within their operations without the "
+"application programmer having to worry about the applications which use "
+"them, i.e., whether or not the applications will use atomic actions as well. "
+"Thus, in some applications actions may be top-level, whereas in others they "
+"may be nested. Objects written in this way can then be shared between "
+"application programmers, and <emphasis>TxCore</emphasis> will guarantee "
+"their consistency."
+msgstr "嵌套的事务没有特殊的构造方法:如果某个动作在另外一个动作还在运行时开始的话,它将自动被嵌套。这允许应用程序使用模块化结构,对象可以用操作里的原子动作来实现,而程序员无需担心使用对象的程序,也就是不用管应用程序使用原子动作与否。因此,在某些应用程序里,动作可能是顶层的,而其他地方则可能是嵌套的。应用程序开发人员可以共享以这种方式编写的对象,而 <emphasis>TxCore</emphasis> 将保证它的一致性。"
+
+#. Tag: para
+#: Chapter_03.xml:72
+#, no-c-format
+msgid ""
+"If a nested action is aborted then all of its work will be undone, although "
+"strict two-phase locking means that any locks it may have obtained will be "
+"retained until the top-level action commits or aborts. If a nested action "
+"commits then the work it has performed will only be committed by the system "
+"if the top-level action commits; if the top-level action aborts then all of "
+"the work will be undone."
+msgstr "如果某个嵌套的动作中止了,那么它的所有工作都将被取消,虽然严格的两阶段锁意味着它所获得的锁在顶层动作提交或中止前都将继续保留。如果嵌套的动作提交了,它已经执行的工作将只在顶层动作提交时才被系统提交;如果顶层动作中止,那么所有这些工作都会被取消。"
+
+#. Tag: para
+#: Chapter_03.xml:74
+#, no-c-format
+msgid ""
+"The committing or aborting of a nested action does not automatically affect "
+"the outcome of the action within which it is nested. This is application "
+"dependant, and allows a programmer to structure atomic actions to contain "
+"faults, undo work, etc."
+msgstr "嵌套动作的提交或中止并不自动影响它嵌套的动作的结果。这取决于应用程序的编写,程序员可以让原子动作包含错误处理、取消已完成的工作等等。"
+
+#. Tag: title
+#: Chapter_03.xml:78
+#, no-c-format
+msgid "Asynchronously committing a transaction"
+msgstr "异步提交事务"
+
+#. Tag: para
+#: Chapter_03.xml:80
+#, no-c-format
+msgid ""
+"By default, JBossTS executes the commit protocol of a top-level transaction "
+"in a synchronous manner, i.e., all registered resources will be told to "
+"prepare in order by a single thread, and then they will be told to commit or "
+"rollback. This has several possible disadvantages:"
+msgstr "在缺省情况下,JBossTS 以同步的方式执行提交顶层事务的提交协议,也就是说,所有注册的资源将按单个进程进行准备,然后进行提交或回滚。这种方式可能会有如下的缺点:"
+
+#. Tag: para
+#: Chapter_03.xml:83
+#, no-c-format
+msgid ""
+"In the case of many registered resources, the prepare operating can "
+"logically be invoked in parallel on each resource. The disadvantage is that "
+"if an “early” resource in the list of registered resource forces a rollback "
+"during prepare, possibly many prepare operations will have been made "
+"needlessly."
+msgstr "在有许多注册的资源的情况下,每个资源的准备操作可以并行地调用。其缺点时如果注册资源列表里的某个“早”资源迫使准备阶段进行回滚的话,有可能许多准备操作就毫无必要了。"
+
+#. Tag: para
+#: Chapter_03.xml:84
+#, no-c-format
+msgid ""
+"In the case where heuristic reporting is not required by the application, "
+"the second phase of the commit protocol can be done asynchronously, since "
+"its success or failure is not important."
+msgstr "在应用程序不要求启发式报告(heuristic reporting)时,既然提交协议的第二阶段的成功或失败都不重要,那它就可以异步地进行。"
+
+#. Tag: para
+#: Chapter_03.xml:87
+#, no-c-format
+msgid ""
+"Therefore, <emphasis>JBossTS</emphasis> provides runtime options to enable "
+"possible threading optimizations. By setting the <literal>com.arjuna.ats."
+"arjuna.coordinator.asyncPrepare</literal> environment variable to "
+"<literal>YES</literal>, during the prepare phase a separate thread will be "
+"created for each registered participant within the transaction. By setting "
+"<literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> to "
+"<literal>YES</literal>, a separate thread will be created to complete the "
+"second phase of the transaction if knowledge about heuristics outcomes is "
+"not required."
+msgstr ""
+"因此,<emphasis>JBossTS</emphasis> 提供了运行时选项来启用可能的线程优化。通过设置 <literal>com.arjuna.ats.arjuna.coordinator.asyncPrepare</literal> 环境变量为 <literal>YES</literal>,在准备阶段将为事务里每个注册的参与者创建一个独立的线程。而通过设置 <literal>com.arjuna.ats.arjuna.coordinator.asyncCommit</literal> 环境变量为 <literal>YES</literal>"
+",如果已知不要求启发式结果的话,就可以创建一个独立的线程来完成事务的第二阶段。"
+
+#. Tag: title
+#: Chapter_03.xml:93
+#, no-c-format
+msgid "Independent top-level transactions"
+msgstr "独立的顶层事务"
+
+#. Tag: para
+#: Chapter_03.xml:95
+#, no-c-format
+msgid ""
+"In addition to normal top-level and nested atomic actions <emphasis>TxCore</"
+"emphasis> also supports independent top-level actions, which can be used to "
+"relax strict serialisability in a controlled manner. An independent top-"
+"level action can be executed from anywhere within another atomic action and "
+"behaves exactly like a normal top-level action, that is, its results are "
+"made permanent when it commits and will not be undone if any of the actions "
+"within which it was originally nested abort."
+msgstr "除了普通的顶层和嵌套原子动作,<emphasis>TxCore</emphasis> 也支持独立的顶层动作,它可以用来以可控的方式绕开严格的串行化要求。独立的顶层动作可以在另外一个原子动作里的任何地方执行,且行为和普通的顶层动作完全一样,那就是:在提交后,它的结果将时永久的,且即使它嵌套的任何动作发生中止也无法取消这个结果。"
+
+#. Tag: caption
+#: Chapter_03.xml:101
+#, no-c-format
+msgid "Independent Top-Level Action"
+msgstr "独立的顶层动作"
+
+#. Tag: para
+#: Chapter_03.xml:104
+#, no-c-format
+msgid ""
+"shows a typical nesting of atomic actions, where action B is nested within "
+"action A. Although atomic action C is logically nested within action B (it "
+"had its Begin operation invoked while B was active) because it is an "
+"independent top-level action, it will commit or abort independently of the "
+"other actions within the structure. Because of the nature of independent top-"
+"level actions they should be used with caution and only in situations where "
+"their use has been carefully examined."
+msgstr "展示了一个典型的原子动作嵌套,动作 B 嵌套在 A 里。虽然原子动作 C 从逻辑上来将嵌套在 B 里(当 B 为活动状态时,它的 Begin 操作被调用),但因为它是一个独立的顶层动作,它将独立于此结构里的其他动作提交或中止。因为独立顶层动作的性质,你应该小心使用且只有在仔细检查其用途后再使用。"
+
+#. Tag: para
+#: Chapter_03.xml:106
+#, no-c-format
+msgid ""
+"Top-level actions can be used within an application by declaring and using "
+"instances of the class <classname>TopLevelTransaction</classname>. They are "
+"used in exactly the same way as other transactions."
+msgstr "顶层动作可以通过声明和使用 <classname>TopLevelTransaction</classname> 的实例来在应用程序内部使用。它们的使用方法和其他事务完全一样。"
+
+#. Tag: title
+#: Chapter_03.xml:111
+#, no-c-format
+msgid "Transactions within save_state and restore_state"
+msgstr "save_state 和 restore_state 里的事务"
+
+#. Tag: para
+#: Chapter_03.xml:113
+#, no-c-format
+msgid ""
+"Caution must be exercised when writing the <command>save_state</command> and "
+"<command>restore_state</command> operations to ensure that no atomic actions "
+"are started (either explicitly in the operation or implicitly through use of "
+"some other operation). This restriction arises due to the fact that "
+"<emphasis>TxCore</emphasis> may invoke <command>restore_state</command> as "
+"part of its commit processing resulting in the attempt to execute an atomic "
+"action during the commit or abort phase of another action. This might "
+"violate the atomicity properties of the action being committed (aborted) and "
+"is thus discouraged."
+msgstr ""
+"当编写 <command>save_state</command> 和 <command>restore_state</command> 操作时需要小心确保没有启动任何事务(在操作里显性地启动或通过使用其他操作隐形地启动)。这个限制是由于 <emphasis>TxCore</emphasis> 可能把 <command>restore_state</command> 作为其提交过程的一部分来调用,从而导致了在一个事务的提交或中止阶段试图"
+"执行另外一个原子事务。这可能违背了被提交(中止)的事务的原子属性,因此不应该使用"
+"。"
+
+#. Tag: title
+#: Chapter_03.xml:118
+#, no-c-format
+msgid "Example"
+msgstr "示例"
+
+#. Tag: para
+#: Chapter_03.xml:120
+#, no-c-format
+msgid ""
+"If we consider the Array example given previously, the set and get "
+"operations could be implemented as shown below."
+msgstr "如果我们考虑前面给出的 Array 示例,它的 set 和 get 操作可以象下面这样实现。"
+
+#. Tag: para
+#: Chapter_03.xml:122
+#, no-c-format
+msgid ""
+"This is a simplification of the code, ignoring error conditions and "
+"exceptions."
+msgstr "这是一段简化了的代码,它忽略了错误和异常处理。"
+
+#. Tag: programlisting
+#: Chapter_03.xml:124
+#, no-c-format
+msgid ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+msgstr ""
+"public boolean set (int index, int value)\n"
+"{\n"
+"    boolean result = false;\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We need to set a WRITE lock as we want to modify the state.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.WRITE), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        elements[index] = value;\n"
+"        if ((value &gt; 0) &amp;&amp;(index &gt; highestIndex))\n"
+"            highestIndex = index;\n"
+"        A.commit(true);\n"
+"        result = true;\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return result;\n"
+"}\n"
+"\n"
+"public int get (int index)  // assume -1 means error\n"
+"{\n"
+"    AtomicAction A = new AtomicAction();\n"
+"\n"
+"    A.begin();\n"
+"\n"
+"    // We only need a READ lock as the state is unchanged.\n"
+"\n"
+"    if (setlock(new Lock(LockMode.READ), 0) == LockResult.GRANTED)\n"
+"    {\n"
+"        A.commit(true);\n"
+"\n"
+"        return elements[index];\n"
+"    }\n"
+"    else\n"
+"        A.rollback();\n"
+"\n"
+"    return -1;\n"
+"}"
+
+#. Tag: title
+#: Chapter_03.xml:129
+#, no-c-format
+msgid "Garbage collecting objects"
+msgstr "垃圾回收对象"
+
+#. Tag: para
+#: Chapter_03.xml:131
+#, no-c-format
+msgid ""
+"Java objects are deleted when the garbage collector determines that they are "
+"no longer required. Deleting an object that is currently under the control "
+"of a transaction must be approached with caution since if the object is "
+"being manipulated within a transaction its fate is effectively determined by "
+"the transaction. Therefore, regardless of the references to a transactional "
+"object maintained by an application, <emphasis>TxCore</emphasis> will always "
+"retain its own references to ensure that the object is not garbage collected "
+"until after any transaction has terminated."
+msgstr "当垃圾回收器决定不再需要 Java 对象时,它们就会被删除。删除在事务控制之下的对象必须小心行事,因为如果对象在事务里操纵,它的命运实际上是由事务来决定的。因此,不管应用程序是否维护对事务性对象的引用,<emphasis>TxCore</emphasis> 总是保留自己的引用来确保这个对象不会被当作垃圾回收,一直到所有事务都已经结束为止。"
+
+#. Tag: title
+#: Chapter_03.xml:136
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr "事务超时"
+
+#. Tag: para
+#: Chapter_03.xml:138
+#, no-c-format
+msgid ""
+"By default transactions live until they are terminated by the application "
+"that created them or a failure occurs. However, it is possible to set a "
+"timeout (in seconds) on a per transaction basis such that if the transaction "
+"has not terminated before the timeout expires it will be automatically "
+"rolled back."
+msgstr "在缺省情况下,事务一直生存到被创建它的应用程序终止或发生故障。然而,我们有可以为每个事务设置一个超时时间(秒),这样如果事务在超时前还没有被终止的话,它将自动回滚。"
+
+#. Tag: para
+#: Chapter_03.xml:140
+#, no-c-format
+msgid ""
+"In <emphasis>TxCore</emphasis>, the timeout value is provided as a parameter "
+"to the <classname>AtomicAction</classname> constructor. If a value of "
+"<literal>AtomicAction.NO_TIMEOUT</literal> is provided (the default) then "
+"the transaction will not be automatically timed out. Any other positive "
+"value is assumed to the timeout for the transaction (in seconds). A value of "
+"zero is taken to be a global default timeout, which can be provided by the "
+"property <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</"
+"literal>. Unless changed the default value is 60 seconds."
+msgstr "在 <emphasis>TxCore</emphasis> 里,超时时间被作为 <classname>AtomicAction</classname> 构造函数的参数。如果其值为 <literal>AtomicAction.NO_TIMEOUT</literal>(缺省值),那么该事务将不会自动超时。而任何其他正值都将是事务的超时时间(以秒为单位)。零值将作为全局的缺省超时时间,它可由属性 <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> 提供。除非进行修改,缺省值是 60 秒。"
+
+#. Tag: para
+#: Chapter_03.xml:142
+#, no-c-format
+msgid ""
+"When a top-level transaction is created with a non-zero timeout, it is "
+"subject to being rolled back if it has not completed within the specified "
+"number of seconds. <emphasis>JBossTS</emphasis> uses a separate reaper "
+"thread which monitors all locally created transactions, and forces them to "
+"roll back if their timeouts elapse. To prevent this thread from consuming "
+"application time, it only runs periodically. The default checking period is "
+"120000 milliseconds, but can be overridden by setting the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> property variable to "
+"another valid value, in microseconds. Alternatively, if the <literal>com."
+"arjuna.ats.arjuna.coordinator.txReaperMode</literal> is set to "
+"<literal>DYNAMIC</literal>, the transaction reaper will wake whenever a "
+"transaction times out. This has the advantage of terminating transactions "
+"early, but may suffer from continually rescheduling the reaper thread."
+msgstr ""
+"当某个顶层的事务用非零值超时时间创建时,如果它在指定的时间内没有完成的话,它将进行回滚。<emphasis>JBossTS</emphasis> 使用一个独立的 reaper 线程来监控所有本地创建的事务,并在超时后强迫它们回滚。要阻止这个线程消耗应用程序时间,它应该只定期地运行。缺省的检查间隔是 120000 毫秒,但你可以通过设置 <literal>com.arjuna.ats.arjuna.coordinator.txReaperTimeout</literal> 属性来覆盖它。或者,如果 <literal>com.arjuna.ats.arjuna.coordinator."
+"txReaperMode</literal> 被设置为 <literal>DYNAMIC</literal>,reaper 线程将在任何事务超时时被唤醒。这种模式的优势是可以及早地终止事务,但也有可能得不停地调度 reaper 线程。"
+
+#. Tag: para
+#: Chapter_03.xml:144
+#, no-c-format
+msgid ""
+"If a value of 0 is specified for the timeout of a top-level transaction (or "
+"no timeout is specified), then <emphasis>JBossTS</emphasis> will not impose "
+"any timeout on the transaction, i.e., it will be allowed to run "
+"indefinitely. This default timeout can be overridden by setting the "
+"<literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> property "
+"variable when using <emphasis>ArjunaCore</emphasis> or <emphasis>ArjunaJTS</"
+"emphasis>, or <literal>com.arjuna.ats.jts.defaultTimeout</literal> if using "
+"<emphasis>ArjunaJTS</emphasis>, to the required timeout value in seconds."
+msgstr ""
+"如果为某个顶层事务指定了零值的超时时间(或未指定超时时间),<emphasis>JBossTS</emphasis> 将不会将任何超时时间强加于该事务上,也就是说,它将允许该事务无限期地运行。当使用 <emphasis>ArjunaCore</emphasis> 或 <emphasis>ArjunaJTS</emphasis> 时,你可以设置 <literal>com.arjuna.ats.arjuna.coordinator.defaultTimeout</literal> 来覆盖缺省超时时间,或是使用 <emphasis>ArjunaJTS</emphasis> 时设置 <literal>com."
+"arjuna.ats.jts.defaultTimeout</literal> 进行覆盖。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_04.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_04.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,329 @@
+# translation of Chapter_04.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_04\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-30 15:42+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_04.xml:6
+#, no-c-format
+msgid "Hints and tips"
+msgstr "提示和建议"
+
+#. Tag: title
+#: Chapter_04.xml:9
+#, no-c-format
+msgid "General"
+msgstr "一般建议"
+
+#. Tag: title
+#: Chapter_04.xml:12
+#, no-c-format
+msgid "Using transactions in constructors"
+msgstr "在构造函数里使用事务"
+
+#. Tag: para
+#: Chapter_04.xml:14
+#, no-c-format
+msgid ""
+"Examples throughout this manual have used transactions in the implementation "
+"of constructors for new persistent objects. This is deliberate because it "
+"guarantees correct propagation of the state of the object to the object "
+"store. Recall that the state of a modified persistent object is only written "
+"to the object store when the top-level transaction commits. Thus, if the "
+"constructor transaction is top-level and it commits, then the newly created "
+"object is written to the store and becomes available immediately. If "
+"however, the constructor transaction commits but is nested because some "
+"other transaction started prior to object creation is running, then the "
+"state will be written only if all of the parent transactions commit."
+msgstr "在本手册的例子中,构造函数的实现里都使用了事务来创建新的持久性对象。我们是有意为之,因为这保证了对象状态正确传递到 Object Store 里。如之前提到的,有修改的持久性对象的状态只在顶层事务提交时才写入到 Object Store 里。因此,如果构造函数里的事务是顶层的且被提交,那么最近创建的对象都会被写入到 Object Store 里并马上可用。然而,如果构造函数里的事务提交了但却是嵌套的(因为在对象创建之前启动的某些其他事务仍在运行),那么相关状态只有在所有的父事务提交时才被写入。"
+
+#. Tag: para
+#: Chapter_04.xml:16
+#, no-c-format
+msgid ""
+"On the other hand, if the constructor does not use transactions then it is "
+"possible for inconsistencies in the system to arise. For example, if no "
+"transaction is active when the object is created then its state will not be "
+"saved to the store until the next time the object is modified under the "
+"control of some transaction."
+msgstr "从另外一方面来说,如果构造函数没有使用事务,那么系统里的不一致性就可能增加。例如,如果在创建对象时没有活动的事务,它的状态将直到下次对象在某个事务里被修改时才会保存到 Object Store 里,。"
+
+#. Tag: para
+#: Chapter_04.xml:18
+#, no-c-format
+msgid "Consider this simple example:"
+msgstr "让我们看看这个简单的例子:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:20
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"Object obj1;\n"
+"Object obj2;\n"
+"\n"
+"obj1 = new Object();                        // create new object\n"
+"obj2 = new Object(\"old\");                // existing object\n"
+"\n"
+"A.begin(0);\n"
+"obj2.remember(obj1.get_uid());        // obj2 now contains reference to "
+"obj1\n"
+"A.commit(true);                                // obj2 saved but obj1 is not"
+
+#. Tag: para
+#: Chapter_04.xml:22
+#, no-c-format
+msgid ""
+"Here the two objects are created outside of the control of the top-level "
+"action A. <literal>obj1</literal> is a new object; <literal>obj2</literal> "
+"an old existing object. When the remember operation of <literal>obj2</"
+"literal> is invoked the object will be activated and the Uid of "
+"<literal>obj1</literal> remembered. Since this action commits the persistent "
+"state of <literal>obj2</literal> could now contain the Uid of <literal>obj1</"
+"literal>. However, the state of <literal>obj1</literal> itself has not been "
+"saved since it has not been manipulated under the control of any action. In "
+"fact, unless it is modified under the control of some action later in the "
+"application it will never be saved. If, however, the constructor had used an "
+"atomic action the state of <literal>obj1</literal> would have automatically "
+"been saved at the time it was constructed and this inconsistency could not "
+"arise."
+msgstr ""
+"这里是在顶层动作 A 的控制之外创建的两个对象。<literal>obj1</literal> 是一个新的对象;<literal>obj2</literal> 则是一现有的对象。当 <literal>obj2</"
+"literal> 的 remember 操作被调用时,它将被激活且记住 <literal>obj1</literal> 的 Uid。虽然这个提交 <literal>obj2</literal> 的持久状态的动作现在可以包含 <literal>obj1</"
+"literal> 的 UID,但 <literal>obj1</literal> 自己的状态还没有保存,因为它还没有被任何动作所操纵。实际上,除非之后它被应用程序的某个动作修改,它的状态永不会被保存。然而,如果构造函数已经使用了一个原子动作,<literal>obj1</literal> 的状态将在构建时自动保存且不会出现这样的不一致性。"
+
+#. Tag: title
+#: Chapter_04.xml:26
+#, no-c-format
+msgid "More on save_state and restore_state"
+msgstr "save_state 和 restore_state 的更多细节"
+
+#. Tag: para
+#: Chapter_04.xml:28
+#, no-c-format
+msgid ""
+"<emphasis>TxCore</emphasis> may invoke the user-defined <command>save_state</"
+"command> operation of an object effectively at any time during the lifetime "
+"of an object including during the execution of the body of the object’s "
+"constructor (particularly if it uses atomic actions). It is important, "
+"therefore, that all of the variables saved by save_state are correctly "
+"initialised."
+msgstr ""
+"<emphasis>TxCore</emphasis> 可能在对象的生存期间的任何时候调用用户定义的 <command>save_state</"
+"command> 操作,包括在执行对象的构造函数(尤其是使用原子动作时)的主体时。因此,正确初始化 save_state 保存的所有变量是很重要的。"
+
+#. Tag: para
+#: Chapter_04.xml:30
+#, no-c-format
+msgid ""
+"Caution must be also exercised when writing the <command>save_state</"
+"command> and <command>restore_state</command> operations to ensure that no "
+"transactions are started (either explicitly in the operation or implicitly "
+"through use of some other operation). This restriction arises due to the "
+"fact that <emphasis>TxCore</emphasis> may invoke <command>restore_state</"
+"command> as part of its commit processing resulting in the attempt to "
+"execute an atomic transaction during the commit or abort phase of another "
+"transaction. This might violate the atomicity properties of the transaction "
+"being committed (aborted) and is thus discouraged."
+msgstr ""
+"当编写 <command>save_state</"
+"command> 和 <command>restore_state</command> 操作时需要小心确保没有启动任何事务(在操作里显性地启动或通过使用其他操作隐形地启动)。这个限制是由于 <emphasis>TxCore</emphasis> 可能把 <command>restore_state</"
+"command> 作为其提交过程的一部分来调用,从而导致了在一个事务的提交或中止阶段试图执行另外一个原子事务。这可能违背了被提交(中止)的事务的原子属性,因此不应该使用。"
+
+#. Tag: para
+#: Chapter_04.xml:32
+#, no-c-format
+msgid ""
+"In order to support crash recovery for persistent objects it is necessary "
+"for all <literal>save_state</literal> and <literal>restore_state</literal> "
+"methods of user objects to call <command>super.save_state</command> and "
+"<command>super.restore_state</command>."
+msgstr ""
+"为了支持持久性对象的崩溃恢复(Crash Recovery),你有必要让用户对象的所有 <literal>save_state</literal> 和 <literal>restore_state</literal> 方法调用 <command>super.save_state</command> 和 "
+"<command>super.restore_state</command>。"
+
+#. Tag: title
+#: Chapter_04.xml:37
+#, no-c-format
+msgid "Packing Objects"
+msgstr "Packing Objects"
+
+#. Tag: para
+#: Chapter_04.xml:39
+#, no-c-format
+msgid ""
+"All of the basic types of Java (int, long, etc.) can be saved and restored "
+"from an <classname>Input/OutputObjectState</classname> instance by using the "
+"pack (and unpack) routines provided by <classname>Input/OutputObjectState</"
+"classname>. However packing and unpacking objects should be handled "
+"differently. This is because packing objects brings in the additional "
+"problems of aliasing. That is two different object references may in actual "
+"fact point at the same item. For example:"
+msgstr ""
+"所有的 Java 基本类型(int、long 等)都可以使用 <classname>Input/OutputObjectState</"
+"classname> 提供的 pack(和 unpack)保存到和从 <classname>Input/OutputObjectState</classname> 实例中恢复。然而,对象的打包和解包应该进行不同的处理。这是因为对象打包会带来额外的别名问题,也就是两个不同的对象引用可能实际上指向的是同一个对象。例如:"
+
+#. Tag: programlisting
+#: Chapter_04.xml:41
+#, no-c-format
+msgid ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+msgstr ""
+"public class Test\n"
+"{\n"
+"    public Test (String s);\n"
+"    ...\n"
+"    private String s1;\n"
+"    private String s2;\n"
+"};\n"
+"\n"
+"public Test (String s)\n"
+"{\n"
+"    s1 = s;\n"
+"    s2 = s;\n"
+"}"
+
+#. Tag: para
+#: Chapter_04.xml:43
+#, no-c-format
+msgid ""
+"Here, both s1 and s2 point at the same string and a naive implementation of "
+"<command>save_state</command> could end up by copying the string twice. From "
+"a <command>save_state</command> perspective this is simply inefficient. "
+"However, it makes <command>restore_state</command> incorrect since it would "
+"unpack the two strings into different areas of memory destroying the "
+"original aliasing information. The current version of TxCore will pack and "
+"unpack separate object references."
+msgstr "在这里,由于 s1 和 s2 都指向相同的字符串,<command>save_state</command> 实现可能会将其复制两次。从 <command>save_state</command> 的角度来说,这样的效率很低。然而,这会使 <command>restore_state</command> 出错,因为它会把两个字符串都解包到不同的内存区域而毁坏原始的别名信息。目前的 TxCore 版本将打包和解包不同的对象引用。"
+
+#. Tag: title
+#: Chapter_04.xml:49
+#, no-c-format
+msgid "Direct use of StateManager"
+msgstr "直接使用 StateManager"
+
+#. Tag: para
+#: Chapter_04.xml:51
+#, no-c-format
+msgid ""
+"The examples throughout this manual have always derived user classes from "
+"<classname>LockManager</classname>. The reasons for this are twofold. "
+"Firstly, and most importantly, the serialisability constraints of atomic "
+"actions require it, and secondly it reduces the need for programmer "
+"intervention. However, if only access to <emphasis>TxCore</emphasis>'s "
+"persistence and recovery mechanisms is required, direct derivation of a user "
+"class from <classname>StateManager</classname> is possible."
+msgstr "本手册的所有例子中的用户类都源自 <classname>LockManager</classname>。其原因是两方面的。首先,也是最重要的一点,这是原子动作的串行性限制所要求的;其次,它减少了对程序员干涉的需要。然而,如果只要求对 <emphasis>TxCore</emphasis> 的访问的持久性和恢复机制,用户了也可以直接继承 <classname>StateManager</classname>。"
+
+#. Tag: para
+#: Chapter_04.xml:53
+#, no-c-format
+msgid ""
+"Classes derived directly from <classname>StateManager</classname> must make "
+"use of its state management mechanisms explicitly (these interactions are "
+"normally undertaken by <classname>LockManager</classname>). From a "
+"programmer's point of view this amounts to making appropriate use of the "
+"operations activate, deactivate and modified, since <classname>StateManager</"
+"classname>'s constructors are effectively identical to those of "
+"<classname>LockManager</classname>."
+msgstr ""
+"直接继承 <classname>StateManager</classname> 的类必须显性地利用其状态管理机制(这些通常由 <classname>LockManager</classname> 来承担)。从程序员的角度来看,既然 <classname>StateManager</"
+"classname> 的构造函数和 <classname>LockManager</classname> 的构造函数实际上是相等的,这就合适地利用了操作的激活、取消激活和修改。"
+
+#. Tag: programlisting
+#: Chapter_04.xml:55
+#, no-c-format
+msgid ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+msgstr ""
+"boolean activate ()\n"
+"boolean activate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:57
+#, no-c-format
+msgid ""
+"<command>Activate</command> loads an object from the object store. The "
+"object’s UID must already have been set via the constructor and the object "
+"must exist in the store. If the object is successfully read then "
+"<command>restore_state</command> is called to build the object in memory. "
+"<command>Activate</command> is idempotent so that once an object has been "
+"activated further calls are ignored. The parameter represents the root name "
+"of the object store to search for the object. A value of null means use the "
+"default store."
+msgstr "<command>Activate</command> 从 Object Store 里加载了一个对象。这个对象的 UID 必须已经通过构造函数设置且对象必须存在于 Object Store 里。如果成功地读取了这个对象,那么   <command>restore_state</command> 将被调用来在内存里构建它。<command>Activate</command> 是幂等的(idempotent),所以对象一旦被激活,后续的调用将被忽略。这里的参数代表用于搜索对象的 Object Store 的根名称。Null 值表示使用缺省的 Object Store。"
+
+#. Tag: programlisting
+#: Chapter_04.xml:59
+#, no-c-format
+msgid ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+msgstr ""
+"boolean deactivate ()\n"
+"boolean deactivate (String storeRoot)"
+
+#. Tag: para
+#: Chapter_04.xml:61
+#, no-c-format
+msgid ""
+"The inverse of activate. First calls <command>save_state</command> to build "
+"the compacted image of the object which is then saved in the object store. "
+"Objects are only saved if they have been modified since they were activated. "
+"The parameter represents the root name of the object store into which the "
+"object should be saved. A value of null means use the default store."
+msgstr "它是激活的反操作。首先调用 <command>save_state</command> 来构建对象的压缩映像,然后将其保存在 Object Store 里。对象只有在激活后被修改过才能保存。这里的参数代表用于搜索对象的 Object Store 的根名称。Null 值表示使用缺省的 Object Store。"
+
+#. Tag: programlisting
+#: Chapter_04.xml:63
+#, no-c-format
+msgid "void modified ()"
+msgstr "void modified ()"
+
+#. Tag: para
+#: Chapter_04.xml:65
+#, no-c-format
+msgid ""
+"<emphasis>Must</emphasis> be called prior to modifying the object in memory. "
+"If it is not called the object will not be saved in the object store by "
+"deactivate."
+msgstr "<emphasis>必须</emphasis>在修改内存里的对象前被调用。如果它没有被调用,对象将不能通过 deactivate 保存在 Object Store 里。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_05.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_05.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1052 @@
+# translation of Chapter_05.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_05\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-07-08 01:17+0000\n"
+"PO-Revision-Date: 2008-07-08 11:31+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Chapter_05.xml:6
+#, no-c-format
+msgid "Tools"
+msgstr "工具"
+
+#. Tag: title
+#: Chapter_05.xml:9
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Chapter_05.xml:11
+#, no-c-format
+msgid ""
+"This chapter explains how to start and use the tools framework and what "
+"tools are available."
+msgstr "本章介绍如何启动和使用工具框架以及可用的工具。"
+
+#. Tag: title
+#: Chapter_05.xml:16
+#, no-c-format
+msgid "Starting the Transaction Service tools"
+msgstr "启动事务服务工具"
+
+#. Tag: para
+#: Chapter_05.xml:18
+#, no-c-format
+msgid ""
+"The way to start the transaction service tools differs on the operating "
+"system being used:"
+msgstr "启动事务服务工具的方法根据操作系统的不同而不同:"
+
+#. Tag: title
+#: Chapter_05.xml:21
+#, no-c-format
+msgid "Windows"
+msgstr "Windows"
+
+#. Tag: para
+#: Chapter_05.xml:23
+#, no-c-format
+msgid ""
+"Double click on the ‘Start Tools’ link in the JBoss Transaction Service "
+"program group in the start menu."
+msgstr "在启动菜单的“JBoss Transaction Service”程序组里双击“Start Tools”链接。"
+
+#. Tag: title
+#: Chapter_05.xml:27
+#, no-c-format
+msgid "Unix"
+msgstr "Unix"
+
+#. Tag: para
+#: Chapter_05.xml:29
+#, no-c-format
+msgid "Start a bash shell and type:"
+msgstr "启动一个 bash shell 并输入:"
+
+#. Tag: programlisting
+#: Chapter_05.xml:34
+#, no-c-format
+msgid ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+msgstr ""
+"cd &lt;JBossTS INSTALL DIRECTORY&gt;\n"
+"./run-tools.sh"
+
+#. Tag: para
+#: Chapter_05.xml:36
+#, no-c-format
+msgid ""
+"Once you have done this the tools window will appear. This is the launch "
+"area for all of the tools shipped with the <emphasis>JBoss Transaction "
+"Service</emphasis>. At the top of the window you will notice a menu bar. "
+"This menu bar has four items:"
+msgstr ""
+"之后“Tools”窗口将出现。这是 <emphasis>JBoss Transaction Service</emphasis> 所"
+"附带的所有工具的启动区。在窗口的顶部,你将看到一个菜单条。这个菜单条有 4 个选"
+"项:"
+
+#. Tag: caption
+#: Chapter_05.xml:42
+#, no-c-format
+msgid "Menu bar"
+msgstr "菜单条"
+
+#. Tag: title
+#: Chapter_05.xml:46
+#, no-c-format
+msgid "The <menuchoice><guimenu>File</guimenu></menuchoice> Menu"
+msgstr "<menuchoice><guimenu>File</guimenu></menuchoice> 菜单"
+
+#. Tag: para
+#: Chapter_05.xml:47 Chapter_05.xml:82 Chapter_05.xml:108 Chapter_05.xml:132
+#, no-c-format
+msgid "&nbsp;"
+msgstr "&nbsp;"
+
+#. Tag: term
+#: Chapter_05.xml:58
+#, no-c-format
+msgid "Open JMX Browser"
+msgstr "Open JMX Browser"
+
+#. Tag: para
+#: Chapter_05.xml:59
+#, no-c-format
+msgid ""
+"This displays the JMX browser window (see ***Using the JMX Browser for more "
+"information on how to use the JMX browser)."
+msgstr ""
+"这将显示 JMX 浏览器窗口(关于使用 JMX 浏览器的更多信息,请参考《使用 JMX 浏览"
+"器》)。"
+
+#. Tag: term
+#: Chapter_05.xml:63
+#, no-c-format
+msgid "Open Object Store Browser"
+msgstr "Open Object Store Browser"
+
+#. Tag: para
+#: Chapter_05.xml:64
+#, no-c-format
+msgid ""
+"This displays the JBossTS Object Store browser window (see ***Using the "
+"Object Store Browser for more information on how to use the Object Store "
+"browser)."
+msgstr ""
+"这将显示 JBossTS Object Store 浏览器窗口(关于使用 Object Store 浏览器的更多"
+"信息,请参考《使用 Object Store 浏览器》)。"
+
+#. Tag: term
+#: Chapter_05.xml:68
+#, no-c-format
+msgid "Settings"
+msgstr "Settings"
+
+#. Tag: para
+#: Chapter_05.xml:69
+#, no-c-format
+msgid ""
+"This option opens the settings dialog which lets you configure the different "
+"tools available."
+msgstr "这个选项将打开“Setting”对话框,你可以配置不同的可用工具。"
+
+#. Tag: term
+#: Chapter_05.xml:72
+#, no-c-format
+msgid "Exit"
+msgstr "Exit"
+
+#. Tag: para
+#: Chapter_05.xml:73
+#, no-c-format
+msgid ""
+"This closes the tools window and exits the application, any unsaved/"
+"unconfirmed changes will be lost."
+msgstr "这将关闭“Tools”窗口并退出应用程序,任何未保存/确认的修改都会丢失。"
+
+#. Tag: title
+#: Chapter_05.xml:81
+#, no-c-format
+msgid "The <menuchoice><guimenu>Performance</guimenu></menuchoice> Menu"
+msgstr "<menuchoice><guimenu>Performance</guimenu></menuchoice> 菜单"
+
+#. Tag: term
+#: Chapter_05.xml:93
+#, no-c-format
+msgid "Open"
+msgstr "Open"
+
+#. Tag: para
+#: Chapter_05.xml:94
+#, no-c-format
+msgid ""
+"This opens a performance window – see <xref linkend=\"Performance_Tool\"/> "
+"for more information on the performance tool."
+msgstr ""
+"这将打开“performance”窗口 - 关于性能工具的更多信息,请参考 <xref linkend="
+"\"Performance_Tool\"/>。"
+
+#. Tag: term
+#: Chapter_05.xml:98
+#, no-c-format
+msgid "Close All"
+msgstr "Close All"
+
+#. Tag: para
+#: Chapter_05.xml:99
+#, no-c-format
+msgid ""
+"this closes all of the currently open performance windows – see <xref "
+"linkend=\"Performance_Tool\"/> for more information on the performance tool."
+msgstr ""
+"这将关闭当前所有打开的“performance”窗口 - 关于性能工具的更多信息,请参考 "
+"<xref linkend=\"Performance_Tool\"/>。"
+
+#. Tag: title
+#: Chapter_05.xml:107
+#, no-c-format
+msgid "The <menuchoice><guimenu>Window</guimenu></menuchoice> Menu"
+msgstr "<menuchoice><guimenu>Window</guimenu></menuchoice> 菜单"
+
+#. Tag: term
+#: Chapter_05.xml:118
+#, no-c-format
+msgid "Cascade Windows"
+msgstr "Cascade Windows"
+
+#. Tag: para
+#: Chapter_05.xml:119
+#, no-c-format
+msgid ""
+"This arranges the windows in a diagonal line to you find a specific window."
+msgstr "这将把窗口按对角线排列,方便你查找所需的窗口。"
+
+#. Tag: term
+#: Chapter_05.xml:123
+#, no-c-format
+msgid "1. XXXXXXX"
+msgstr "1. XXXXXXX"
+
+#. Tag: para
+#: Chapter_05.xml:124
+#, no-c-format
+msgid ""
+"For each window currently visible an extra menu option will be available "
+"here. Selecting this menu option will bring the associated window to the "
+"front of the desktop."
+msgstr ""
+"对于当前每个可见的窗口,这里将出现一个额外的菜单选项。选择这个菜单选项将把相"
+"关联的窗口置于桌面上。"
+
+#. Tag: title
+#: Chapter_05.xml:131
+#, no-c-format
+msgid "The <menuchoice><guimenu>Help</guimenu></menuchoice> Menu"
+msgstr "<menuchoice><guimenu>Help</guimenu></menuchoice> 菜单"
+
+#. Tag: term
+#: Chapter_05.xml:142
+#, no-c-format
+msgid "About"
+msgstr "About"
+
+#. Tag: para
+#: Chapter_05.xml:143
+#, no-c-format
+msgid "This displays the about window containing the product information."
+msgstr "这会显示包含产品信息的“About”窗口。"
+
+#. Tag: title
+#: Chapter_05.xml:153
+#, no-c-format
+msgid "Using the Performance Tool"
+msgstr "使用性能工具"
+
+#. Tag: para
+#: Chapter_05.xml:155
+#, no-c-format
+msgid ""
+"The performance tool can be used to display performance information about "
+"the transaction service. This information is gathered using the Performance "
+"JMX bean which means that the transaction service needs to be integrated "
+"into an Application Server to give any performance information."
+msgstr ""
+"性能工具可以用来显示事务服务的性能方面的信息。这些信息是通过 Performance JMX "
+"bean 收集的,这表示事务服务需要集成到应用服务器里来提供任何性能方面的信息。"
+
+#. Tag: para
+#: Chapter_05.xml:157
+#, no-c-format
+msgid ""
+"The performance information is displayed via a multi-series graph. To view "
+"this graph simply open a performance window by selecting "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+"性能信息通过 multi-series 图表显示。要查看这个图表,你只需简单地选择 "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> &gt; "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice> 打开一"
+"个“performance”窗口就可以了。"
+
+#. Tag: para
+#: Chapter_05.xml:165
+#, no-c-format
+msgid ""
+"The window now on screen contains a multi-serise graph which can display the "
+"following information:"
+msgstr "现在屏幕上的窗口包含了一个 multi-series 图表,它显示下面的信息:"
+
+#. Tag: para
+#: Chapter_05.xml:170
+#, no-c-format
+msgid "Number of transactions."
+msgstr "事务的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:175
+#, no-c-format
+msgid "Number of committed transactions."
+msgstr "提交的事务的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:180
+#, no-c-format
+msgid "Number of aborted transactions."
+msgstr "中止的事务的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:185
+#, no-c-format
+msgid "Number of nested transactions."
+msgstr "嵌套的事务的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:190
+#, no-c-format
+msgid "Number of heuristics raised."
+msgstr "heuristics raised 事务的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:195
+#, no-c-format
+msgid ""
+"To turn these series on and off simply select the menu option from the "
+"series menu."
+msgstr "只要在 Series 菜单里选择不同的选项,你就可以启用或关闭相应的系列。"
+
+#. Tag: para
+#: Chapter_05.xml:203
+#, no-c-format
+msgid ""
+"When series are turned on they appear in the legend at the bottom of the "
+"graph. The colour next to the series name (for example, Transactions "
+"Created) is the colour of the line representing that data."
+msgstr ""
+"当某个系列被启用,它将显示在图表的底部的图例里。系列名称(例如所创建的事务)"
+"后面的颜色就是代表该类数据的线条的颜色。"
+
+#. Tag: para
+#: Chapter_05.xml:211
+#, no-c-format
+msgid ""
+"The data shown is graphed against time. The Y-axis represents the number of "
+"transactions and the X-axis represents time."
+msgstr "图表里显示的数据是针对时间的。Y 轴代表事务的数量而 X 轴代表时间。"
+
+#. Tag: para
+#: Chapter_05.xml:214
+#, no-c-format
+msgid ""
+"At any point the sampling of data can be stopped and restarted using the "
+"<menuchoice><guimenu>Sampling</guimenu></menuchoice> menu and the data "
+"currently visible in the graph can be saved to a Comma Separate Values (CSV) "
+"file for importing the data into a spreadsheet application using the "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> menu option from "
+"the <menuchoice><guimenu>Data</guimenu></menuchoice> menu."
+msgstr ""
+"在任何时候,数据抽样都可以用 <menuchoice><guimenu>Sampling</guimenu></"
+"menuchoice> 菜单来停止和重启,当前图表上可见的数据可以通过 "
+"<menuchoice><guimenu>Data</guimenu></menuchoice> 菜单里的 "
+"<menuchoice><guimenu>Save to .csv</guimenu></menuchoice> 菜单选项保存到一个可"
+"输出到电子表格程序里的 Comma Separate Values (CSV) 文件。"
+
+#. Tag: title
+#: Chapter_05.xml:219
+#, no-c-format
+msgid "Using the JMX Browser"
+msgstr "使用 JXM 浏览器"
+
+#. Tag: para
+#: Chapter_05.xml:220
+#, no-c-format
+msgid ""
+"To open the JMX browser window click on the <menuchoice><guimenu>File</"
+"guimenu></menuchoice> menu and then click the <menuchoice><guimenu>Open JMX "
+"Browser</guimenu></menuchoice> option. The JMX browser window will then be "
+"displayed."
+msgstr ""
+"要打开 JMX 浏览器窗口,你可以点击 <menuchoice><guimenu>File</guimenu></"
+"menuchoice> 菜单并选择 <menuchoice><guimenu>Open JMX Browser</guimenu></"
+"menuchoice> 选项。然后 JMX 浏览器窗口就会显示。"
+
+#. Tag: para
+#: Chapter_05.xml:228
+#, no-c-format
+msgid ""
+"The window is made up of two main sections:the details panel and the MBean "
+"panel. The MBean panel displays the MBeans exposed by the MBean server. "
+"These are grouped by domain name. The details panel displays information "
+"about the currently selected MBean. To select an MBean just left-click it "
+"with the mouse and it will become highlighted. The information displayed in "
+"the details panel is as follows:"
+msgstr ""
+"这个窗口由两个主要部分组成:Details 面板和 MBean 面板。MBean 面板显示 MBean "
+"服务所开放的 MBean。它们通过域名分组。Details 面板显示当前所选择的 MBean 的信"
+"息。要选择某个 MBean,只要用鼠标点击它使其高亮显示就可以了。Details 面板显示"
+"的信息如下:"
+
+#. Tag: para
+#: Chapter_05.xml:233
+#, no-c-format
+msgid "The total number of MBeans registered on this server."
+msgstr "在这个服务器里注册的 MBean 的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:238
+#, no-c-format
+msgid "The number of constructors exposed by this MBean."
+msgstr "这个 MBean 开放的构造函数的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:243
+#, no-c-format
+msgid "The number of attributes exposed by this MBean."
+msgstr "这个 MBean 开放的属性的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:248
+#, no-c-format
+msgid "The number of operations exposed by this MBean."
+msgstr "这个 MBean 开放的操作的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:253
+#, no-c-format
+msgid "The number of notifications exposed by this MBean."
+msgstr "这个 MBean 开放的通知的数量。"
+
+#. Tag: para
+#: Chapter_05.xml:258
+#, no-c-format
+msgid "A brief description of the MBean."
+msgstr "对这个 MBean 的简短描述。"
+
+#. Tag: para
+#: Chapter_05.xml:263
+#, no-c-format
+msgid ""
+"There is also a <menuchoice><guimenu>View</guimenu></menuchoice> link which "
+"when clicked displays the attributes and operations exposed by this MBean. "
+"From there you can view readable attributes, alter writeable attributes and "
+"invoke operations."
+msgstr ""
+"这里也有一个 <menuchoice><guimenu>View</guimenu></menuchoice> 链接,点击它将"
+"显示这个 MBean 开放的属性和操作。在这里你可以查看可读的属性、修改可写的属性并"
+"调用操作。"
+
+#. Tag: caption
+#: Chapter_05.xml:270
+#, no-c-format
+msgid "An example of what the details panel displays"
+msgstr "Details 面板显示的例子"
+
+#. Tag: title
+#: Chapter_05.xml:273
+#, no-c-format
+msgid "Using Attributes and Operations"
+msgstr "使用属性和操作"
+
+#. Tag: para
+#: Chapter_05.xml:274
+#, no-c-format
+msgid ""
+"When the <menuchoice><guimenu>View</guimenu></menuchoice> link is clicked "
+"the View JMX Attributes and Operations window is displayed. From here you "
+"can view all readable attributes exposed by the selected MBean. You can also "
+"alter writeable attributes. If an attribute is read-only then you will not "
+"be able to alter an attributes value. To alter an attributes value just "
+"double click on the current value and enter the new value. If the "
+"<guibutton>...</guibutton> button is enabled then you can click this to view "
+"a more suitable editing method. If the attribute type is a JMX object name "
+"then clicking this button will display the JMX attributes and operations for "
+"that object."
+msgstr ""
+"当点击 <menuchoice><guimenu>View</guimenu></menuchoice> 链接时,“View JMX "
+"Attributes and Operations”窗口将显示。在这里你可以查看所选择的 MBean 开放的所"
+"有可读属性。你也可以修改可写属性。如果某个属性是只读的,你将不能修改其属性"
+"值。要修改某个属性值,你只需双击当前值并输入新的值就可以了。如果启用"
+"了“<guibutton>...</guibutton>”按钮,你就可以点击它来查看更合适的编辑方法。如"
+"果这个属性的类型是 JMX 对象名,点击这个按钮将显示该对象的 JMX 属性和操作。"
+
+#. Tag: para
+#: Chapter_05.xml:277
+#, no-c-format
+msgid ""
+"At any point you can click the <guibutton>Refresh</guibutton> button to "
+"refresh the attribute values. If an exception occurs while retrieving the "
+"value of an attribute the exception will be displayed in place of the "
+"attributes value."
+msgstr ""
+"在任何时候你都可以点击“<guibutton>Refresh</guibutton>”按钮来刷新属性值。在获"
+"取属性值时如果发生了异常,这个异常将被显示来替代属性值。"
+
+#. Tag: para
+#: Chapter_05.xml:280
+#, no-c-format
+msgid ""
+"You can also invoke operations upon an MBean. A list of operations exposed "
+"by an MBean is displayed below the attributes list. To invoke an operation "
+"simply select it from the list and click the <guibutton>Invoke</guibutton> "
+"button. If the operation requires parameters a further window will be "
+"displayed, from this window you must specify values for each of the "
+"parameters required. You specify parameter values in the same way as you "
+"specify JMX attribute values. Once you have specified a value for each of "
+"the parameters click the <guibutton>Invoke</guibutton> button to perform the "
+"invocation."
+msgstr ""
+"你也可以调用 MBean 的操作。MBean 开放的操作显示在属性列表下面。要调用某个操"
+"作,只要简单地从列表里选择它并点击“<guibutton>Invoke</guibutton>”按钮。如果这"
+"个操作要求输入参数,另外一个窗口将出现,你必须指定每个必需参数的值。你可以用"
+"和指定 JMX 属性值相同的方法来指定参数值。在指定了参数值后,你可以点"
+"击“<guibutton>Invoke</guibutton>”按钮来执行该操作。"
+
+#. Tag: para
+#: Chapter_05.xml:283
+#, no-c-format
+msgid ""
+"Once the method invocation has completed its return value will be displayed."
+msgstr "方法调用完毕后,它的返回值将被显示。"
+
+#. Tag: caption
+#: Chapter_05.xml:290
+#, no-c-format
+msgid "View JMX Attributes and Operations window"
+msgstr "查看 JMX Attributes and Operations 窗口"
+
+#. Tag: caption
+#: Chapter_05.xml:296
+#, no-c-format
+msgid "Invoke Operation Parameters"
+msgstr "调用操作的参数"
+
+#. Tag: title
+#: Chapter_05.xml:300
+#, no-c-format
+msgid "Using the Object Store Browser"
+msgstr "使用 Object Store 浏览器"
+
+#. Tag: para
+#: Chapter_05.xml:301
+#, no-c-format
+msgid ""
+"To open the Object Store browser window click on the "
+"<menuchoice><guimenu>File</guimenu></menuchoice> menu and then click the "
+"<menuchoice><guimenu>Open Object Store Browser</guimenu></menuchoice> "
+"option. The Object Store browser window will then be displayed."
+msgstr ""
+"要打开 Object Store browser 窗口,你可以点击 <menuchoice><guimenu>File</"
+"guimenu></menuchoice> 菜单并选择 <menuchoice><guimenu>Open Object Store "
+"Browser</guimenu></menuchoice> 选项。然后 Object Store browser 窗口将出现。"
+
+#. Tag: para
+#: Chapter_05.xml:309
+#, no-c-format
+msgid "The object store browser window is split into four sections:"
+msgstr "object store browser 窗口分成 4 个部分:"
+
+#. Tag: para
+#: Chapter_05.xml:319
+#, no-c-format
+msgid ""
+"Object Store Roots - this is a pull down of the currently avaliable object "
+"store roots. Selecting an option from the list will repopulate the hierachy "
+"view with the contents of the selected root."
+msgstr ""
+"Object Store Roots - 这是当前可用 Object Store 根的列表。从这个列表里进行选"
+"择将重新构成所选根的内容的层次结构。"
+
+#. Tag: para
+#: Chapter_05.xml:324
+#, no-c-format
+msgid ""
+"Object Store Hierarchy – this is a tree which shows the current object store "
+"hierarchy. Selecting a node from this tree will display the objects stored "
+"in that location."
+msgstr ""
+"Object Store Hierarchy – 这是表示当前 Object Store 层次结构的树。从这个树里选"
+"择一个节点将显示它存储的对象。"
+
+#. Tag: para
+#: Chapter_05.xml:329
+#, no-c-format
+msgid ""
+"Objects – this is a list of icons which represent the objects stored in the "
+"selected location."
+msgstr "Objects – 这是一个图标列表,它代表存储在所选位置的对象。"
+
+#. Tag: para
+#: Chapter_05.xml:334
+#, no-c-format
+msgid ""
+"Object Details – this shows information about the currently selected object "
+"(only if the object’s type is known to the state viewer repository see "
+"Writing an OSV for information on how to write a object state viewers)."
+msgstr ""
+"Object Details – 它显示当前所选的对象的信息(只有这个对象的类型为状态查看器库"
+"所知时才适用,请参考《Writing an OSV》里关于如何编写对象状态查看器里的信息)"
+
+#. Tag: title
+#: Chapter_05.xml:341
+#, no-c-format
+msgid "Object State Viewers (OSV)"
+msgstr "对象状态查看器(Object State Viewer,OSV)"
+
+#. Tag: para
+#: Chapter_05.xml:342
+#, no-c-format
+msgid ""
+"When an object is selected in the objects pane of the main window the "
+"registered Object State Viewer (or OSV) for that object type is invoked. An "
+"OSV’s job is to make information available via the user interface to the "
+"user to show information about the selected object. Distributed with the "
+"standard tools is an OSV for Atomic Actions, the OSV displays information on "
+"the Abstract Records in it’s various lists (e.g. heuristic, failed, read-"
+"only, etc). It is also possible to write your own OSVs which can be used to "
+"display information about object types you have defined. This subject is "
+"covered next."
+msgstr ""
+"当主窗口的 Objects 面板里的对象被选择时,用于该对象的已注册对象状态查看器"
+"(Object State Viewer,或 OSV)将被调用。OSV 的任务是通过用户界面使用户可以获"
+"得所选对象的信息。随标准工具一起发布的有用于原子动作的 OSV,它在不同的列表里"
+"(如 heuristic、failed、read-only等)显示抽象记录(Abstract Record)信息。你"
+"也可以编写自己的 OSV 来显示自定义的对象类型的信息。后面我们将涵盖这方面的内"
+"容。"
+
+#. Tag: title
+#: Chapter_05.xml:346
+#, no-c-format
+msgid "Writing an OSV"
+msgstr "编写 OSV"
+
+#. Tag: para
+#: Chapter_05.xml:347
+#, no-c-format
+msgid ""
+"Writing an OSV plugin allows you to extend the capabilities of the Object "
+"Store browser to show the state of user defined abstract records. An OSV "
+"plug-in is simply a class which implements the interface:"
+msgstr ""
+"编写 OSV 插件允许你扩展 Object Store 浏览器的能力来显示用户自定义的抽象记录"
+"(Abstract Record)的状态。OSV 插件其实只是实现下面接口的类:"
+
+#. Tag: code
+#: Chapter_05.xml:352
+#, no-c-format
+msgid ""
+"com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+msgstr ""
+"com.arjuna.ats.tools.objectstorebrowser.stateviewers.StateViewerInterface"
+
+#. Tag: para
+#: Chapter_05.xml:354
+#, no-c-format
+msgid ""
+"It must be packaged in a JAR within the plugins directory. This example "
+"shows how to create an OSV plugin for an abstract record subclass which "
+"looks as follows:"
+msgstr ""
+"它必须打包在 plugins 目录里的某个 JAR 里。这个例子展示了如何创建一个用于如下"
+"的抽象记录(Abstract Record)子类的 OSV 插件:"
+
+#. Tag: screen
+#: Chapter_05.xml:357
+#, no-c-format
+msgid ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecord extends AbstractRecord\n"
+"{\n"
+"        private int _value = 0;\n"
+"        \n"
+"        .....\n"
+"        \n"
+"        public void increase()\n"
+"        {\n"
+"                _value++;\n"
+"        }\n"
+"        \n"
+"        public int get()\n"
+"        {\n"
+"                return _value;\n"
+"        }\n"
+"        \n"
+"        public String type()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"        \n"
+"        public boolean restore_state(InputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        _value = os.unpackInt();\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"        \n"
+"        public boolean save_state(OutputObjectState os, int i)\n"
+"        {\n"
+"                boolean returnValue = true;\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        os.packInt(_value);\n"
+"                }\n"
+"                catch (java.io.IOException e)\n"
+"                {\n"
+"                        returnValue = false;\n"
+"                }\n"
+"        \n"
+"                return returnValue;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:358
+#, no-c-format
+msgid ""
+"When this abstract record is viewed in the object store browser it would be "
+"nice to see the current value. This is easy to do as we can read the state "
+"into an instance of our abstract record and call <methodname>getValue()</"
+"methodname>. The following is the object store browser plug-in source code:"
+msgstr ""
+"当用 Object Store 浏览器查看这个抽象记录时,查看当前值是个不错的主意。我们可"
+"以把状态读入绝对记录的实例并调用 <methodname>getValue()</methodname>。下面是 "
+"Object Store 浏览器插件的源代码:"
+
+#. Tag: screen
+#: Chapter_05.xml:361
+#, no-c-format
+msgid ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+msgstr ""
+"public class SimpleRecordOSVPlugin implements StateViewerInterface\n"
+"{\n"
+"        /**\n"
+"        * A uid node of the type this viewer is registered against has been "
+"expanded.\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param manipulator\n"
+"        * @param node\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void uidNodeExpanded(ObjectStore os,\n"
+"        String type,\n"
+"        ObjectStoreBrowserTreeManipulationInterface \n"
+"        manipulator,\n"
+"        UidNode node,\n"
+"        StatePanel infoPanel)\n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                // Do nothing\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * An entry has been selected of the type this viewer is registered "
+"against.\n"
+"        *\n"
+"        * @param os\n"
+"        * @param type\n"
+"        * @param uid\n"
+"        * @param entry\n"
+"        * @param statePanel\n"
+"        * @throws ObjectStoreException\n"
+"        */\n"
+"        public void entrySelected(ObjectStore os,\n"
+"        String type,\n"
+"        Uid uid,\n"
+"        ObjectStoreViewEntry entry,\n"
+"        StatePanel statePanel) \n"
+"        throws ObjectStoreException\n"
+"        {\n"
+"                SimpleRecord rec = new SimpleRecord();\n"
+"        \n"
+"                if ( rec.restore_state( os.read_committed(uid, type), "
+"ObjectType.ANDPERSISTENT ) )\n"
+"                {\n"
+"                        statePanel.setData( “Value”, rec.getValue() );\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        /**\n"
+"        * Get the type this state viewer is intended to be registered "
+"against.\n"
+"        * @return\n"
+"        */\n"
+"        public String getType()\n"
+"        {\n"
+"                return “/StateManager/AbstractRecord/SimpleRecord”;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_05.xml:362
+#, no-c-format
+msgid ""
+"The method <methodname>uidNodeExpanded</methodname> is invoked when a UID "
+"(Unique Identification) representing the given type is expanded in the "
+"object store hierarchy tree. This is not required by this plugin as this "
+"abstract record is not visible in the object store directly it is only "
+"viewable via one of the lists in an atomic action. The method "
+"<methodname>entrySelected</methodname> is invoked when an entry is selected "
+"from the object view which represents an object with the given type. In both "
+"methods the StatePanel is used to display information regarding the state of "
+"the object. The state panel has the following methods that assist in display "
+"this information:"
+msgstr ""
+"当在 Object Store 层次结构树里展开代表给定类型的 UID(Unique Identification)"
+"时,<methodname>uidNodeExpanded</methodname> 方法将被调用。这个插件不要求这"
+"样,因为绝对记录并不在 Object Store 里直接可见,它只有通过某个原子动作里的列"
+"表才可见。当从代表给定类型的对象视图里选择一个条目时,"
+"<methodname>entrySelected</methodname> 方法将被调用。在这两个方法里,"
+"StatePanel 都被用来显示对象状态的信息。StatePanel 具有如下的有助这些信息显示"
+"的方法:"
+
+#. Tag: para
+#: Chapter_05.xml:367
+#, no-c-format
+msgid ""
+"<methodname>setInfo(String info)</methodname>: This method can be used to "
+"show general information."
+msgstr "<methodname>setInfo(String info)</methodname>:这个方法可以用来显示一般信息。"
+
+#. Tag: para
+#: Chapter_05.xml:372
+#, no-c-format
+msgid ""
+"<methodname>setData(String name, String value)</methodname>: This method is "
+"used to put information into the table which is displayed by the object "
+"store browser tool."
+msgstr ""
+"<methodname>setData(String name, String value)</methodname>:这个方法用来把信"
+"息放入 Object Store 浏览器工具显示的表里。"
+
+#. Tag: para
+#: Chapter_05.xml:377
+#, no-c-format
+msgid ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>: This method is used to enable the details button. The listener "
+"interface allows a plug-in to be informed when the button is pressed. It is "
+"up to the plug-in developer to decide how to display this further "
+"information."
+msgstr ""
+"<methodname>enableDetailsButton(DetailsButtonListener listener)</"
+"methodname>:这个方法用来启用 Details 按钮。Listener 接口允许按钮被按下时通知"
+"插件。怎样显示进一步的信息可由插件开发人员来决定。"
+
+#. Tag: para
+#: Chapter_05.xml:382
+#, no-c-format
+msgid ""
+"In this example we read the state from the object store and use the value "
+"returned by getValue() to put an entry into the state panel table. The "
+"getType() method returns the type this plug-in is to be registered against."
+msgstr ""
+"在这个例子里,我们从 Object Store 里读取状态并使用 getValue() 返回的值来把一"
+"个条目放入 StatePanel 表。getType() 方法返回这个插件用来注册的类型。"
+
+#. Tag: para
+#: Chapter_05.xml:385
+#, no-c-format
+msgid ""
+"To add this plug-in to the object store browser it is necessary to package "
+"it into a JAR (Java Archive) file with a name that is prefixed with 'osbv-'. "
+"The JAR file must contain certain information within the manifest file so "
+"that the object store browser knows which classes are plug-ins. All of this "
+"can be performed using an <ulink url=\"http://ant.apache.org\">Apache ANT</"
+"ulink> script, as follows:"
+msgstr ""
+"要把这个插件添加到 Object Store 浏览器里,我们有必要把它打包至一个 JAR 文件"
+"里,其名称前缀为 'osbv-'。这个 JAR 文件必须包含 manifest 文件里的某些信息,这"
+"样 Object Store 浏览器就知道哪些类是插件。所有这些都可以用 <ulink url="
+"\"http://ant.apache.org\">Apache ANT</ulink> 脚本来执行,如:"
+
+#. Tag: screen
+#: Chapter_05.xml:388
+#, no-c-format
+msgid ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+msgstr ""
+"&lt;jar jarfile=\"osbv-simplerecord.jar\"&gt;\n"
+"        &lt;fileset dir=\"build\" includes=\"*.class”/&gt;\n"
+"        &lt;manifest&gt;\n"
+"                &lt;section name=\"arjuna-tools-objectstorebrowser\"&gt;\n"
+"                        &lt;attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/&gt;\n"
+"                &lt;/section&gt;\n"
+"        &lt;/manifest&gt;\n"
+"&lt;/jar&gt;"
+
+#. Tag: para
+#: Chapter_05.xml:389
+#, no-c-format
+msgid ""
+"Once the JAR has been created with the correct information in the manifest "
+"file it just needs to be placed in the <emphasis>bin/tools/plugins</"
+"emphasis> directory."
+msgstr ""
+"用 manifest 文件里的正确信息创建了 JAR 文件后,我们需要把它放入 "
+"<emphasis>bin/tools/plugins</emphasis> 目录里。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_06.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_06.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,872 @@
+# translation of Chapter_06.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_06\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-30 10:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_06.xml:6
+#, no-c-format
+msgid "Constructing a Transactional objects for Java application"
+msgstr "构建用于 Java 应用程序的事务性对象"
+
+#. Tag: title
+#: Chapter_06.xml:9
+#, no-c-format
+msgid "Application construction"
+msgstr "应用程序构建"
+
+#. Tag: para
+#: Chapter_06.xml:10
+#, no-c-format
+msgid "There are two distinct phases to the development of a TxCore application:"
+msgstr "开发 TxCore 应用程序分为两个不同的阶段:"
+
+#. Tag: para
+#: Chapter_06.xml:15
+#, no-c-format
+msgid ""
+"Developing new classes with certain characteristics (for example, "
+"Persistent, Recoverable, Concurrency Controlled)."
+msgstr "采用某些特征(如:持久的、可恢复的、并行控制)开发新的类。"
+
+#. Tag: para
+#: Chapter_06.xml:20
+#, no-c-format
+msgid "Developing the application(s) that make use of the new classes of objects."
+msgstr "开发利用新类的应用程序。"
+
+#. Tag: para
+#: Chapter_06.xml:25
+#, no-c-format
+msgid ""
+"Although these two phases may be performed in parallel and by a single "
+"person, we shall refer to the first step as the job of the class developer "
+"and the second as the job of the applications developer. The class developer "
+"will be concerned about defining appropriate <code>save_state</code> and "
+"<code>restore_state</code> operations for the class, setting appropriate "
+"locks in operations, and invoking the appropriate TxCore class constructors. "
+"The applications developer will be more concerned with defining the general "
+"structure of the application, particularly with regard to the use of atomic "
+"actions."
+msgstr ""
+"虽然这两个阶段可以由同一个人同时进行,但我们宁愿把第一个步骤分配给类开发人员而把第二个分配给应用程序开发人员。类开发人员将关心如何定义合适的 <code>save_state</code> 和 "
+"<code>restore_state</code> 操作、为操作设置合适的锁以及调用合适的 TxCode 类构造函数。应用程序开发人员则更关心定义应用程序的通用结构,尤其是关于原子动作(atomic action)的使用。"
+
+#. Tag: para
+#: Chapter_06.xml:28
+#, no-c-format
+msgid ""
+"This chapter illustrates the points made in previous sections by outlining a "
+"simple application: in this case a simple FIFO Queue class for integer "
+"values will be developed. The implementation of the Queue will be with a "
+"doubly linked list structure, and it will be implemented as a single object. "
+"We shall be using this example throughout the rest of this manual to help "
+"illustrate the various mechanisms provided by TxCore. While this is an "
+"unrealistic example application it enables all of the TxCore modifications "
+"to be described without requiring in depth knowledge of the application code."
+msgstr "本章将通过一个简单例子解释前面提及的内容,我们将开发一个简单的使用整形值的 FIFO Queue 类。队列的实现将使用一个双重链表的结构,且将作为单个对象来实现。我们将在整个手册里使用这个例子来帮助解释 TxCore 提供的不同机制。虽然这只是一个不实用的例程,但你不需要对程序代码有很深的知识就可以通过它了解所有的 TxCore 修改。"
+
+#. Tag: para
+#: Chapter_06.xml:31
+#, no-c-format
+msgid ""
+"In the rest of this chapter we shall assume that the application is not "
+"distributed. If this is not the case, then context information must be "
+"propagated either implicitly or explicitly."
+msgstr "在本章的剩余部分我们将假定这个程序是非分布式的。否则上下文信息必须显性或隐形地传递。"
+
+#. Tag: title
+#: Chapter_06.xml:35
+#, no-c-format
+msgid "Queue description"
+msgstr "队列描述"
+
+#. Tag: para
+#: Chapter_06.xml:36
+#, no-c-format
+msgid ""
+"The queue is a traditional FIFO queue, where elements are added to the front "
+"and removed from the back. The operations provided by the queue class allow "
+"the values to be placed on to the queue (enqueue) and to be removed from it "
+"(dequeue), and it is also possible to change or inspect the values of "
+"elements in the queue. In this example implementation, an array is used to "
+"represent the queue. A limit of <code>QUEUE_SIZE</code> elements has been "
+"imposed for this example."
+msgstr "这个队列是一个传统的 FIFO 对列,元素被加入到前面并从后面进行删除。队列类提供的操作允许往队列里放入值(enqueue)并可以从中进行删除(dequeue),而且可以修改或查看队列里的值。在这个例子里,我们使用一个数组来代表队列。在这个例子里,我们将限制最大元素个数为 <code>QUEUE_SIZE</code>。"
+
+#. Tag: para
+#: Chapter_06.xml:40
+#, no-c-format
+msgid "The Java interface definition of this simple queue class is given below:"
+msgstr "这个简单的队列类的 Java 接口定义如下:"
+
+#. Tag: screen
+#: Chapter_06.xml:43
+#, no-c-format
+msgid ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+msgstr ""
+"public class TransactionalQueue extends LockManager\n"
+"{\n"
+"        public TransactionalQueue (Uid uid);\n"
+"        public TransactionalQueue ();\n"
+"        public void finalize ();\n"
+"        \n"
+"        public void enqueue (int v) throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        public int dequeue  () throws OverFlow, UnderFlow,\n"
+"        QueueError, Conflict;\n"
+"        \n"
+"        public int queueSize ();\n"
+"        public int inspectValue (int i) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        public void setValue (int i, int v) throws OverFlow,\n"
+"        UnderFlow, QueueError, Conflict;\n"
+"        \n"
+"        public boolean save_state (OutputObjectState os, int ObjectType);\n"
+"        public boolean restore_state (InputObjectState os, int ObjectType);\n"
+"        public String type ();\n"
+"        \n"
+"        public static final int QUEUE_SIZE = 40; // maximum size of the "
+"queue\n"
+"        \n"
+"        private int[QUEUE_SIZE] elements;\n"
+"        private int numberOfElements;\n"
+"};"
+
+#. Tag: title
+#: Chapter_06.xml:45
+#, no-c-format
+msgid "Constructors and deconstructors"
+msgstr "构造函数和构析函数 "
+
+#. Tag: para
+#: Chapter_06.xml:46
+#, no-c-format
+msgid ""
+"As stated in the previous section, to use an existing persistent object "
+"requires the use of a special constructor that is required to take the Uid "
+"of the persistent object; the implementation of such a constructor is given "
+"below:"
+msgstr "如之前章节所述,要使用一个现有的持久性对象,你需要使用特殊的构造函数来获取持久性对象的 UID;下面是一个这样的构造函数实现:"
+
+#. Tag: screen
+#: Chapter_06.xml:50
+#, no-c-format
+msgid ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+msgstr ""
+"public TransactionalQueue (Uid u)\n"
+"{\n"
+"        super(u);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:51
+#, no-c-format
+msgid "The constructor that creates a new persistent object is similar:"
+msgstr "创建新的持久性对象的构造函数是相似的:"
+
+#. Tag: screen
+#: Chapter_06.xml:54
+#, no-c-format
+msgid ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+msgstr ""
+"public TransactionalQueue ()\n"
+"{\n"
+"        super(ObjectType.ANDPERSISTENT);\n"
+"        \n"
+"        numberOfElements = 0;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                AtomicAction A = new AtomicAction();\n"
+"        \n"
+"                A.begin(0);        // Try to start atomic action\n"
+"        \n"
+"                // Try to set lock\n"
+"        \n"
+"                        if (setlock(new Lock(LockMode.WRITE), 0) == "
+"LockResult.GRANTED)\n"
+"                        {\n"
+"                                A.commit(true);        // Commit\n"
+"                        }\n"
+"                        else         // Lock refused so abort the atomic "
+"action\n"
+"                                A.rollback();\n"
+"                        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                System.err.println(“Object construction error: “+e);\n"
+"                System.exit(1);\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:55
+#, no-c-format
+msgid ""
+"The use of an atomic action within the constructor for a new object follows "
+"the guidelines outlined earlier and ensures that the object’s state will be "
+"written to the object store when the appropriate top level atomic action "
+"commits (which will either be the action A or some enclosing action active "
+"when the <code>TransactionalQueue</code> was constructed). The use of atomic "
+"actions in a constructor is simple: an action must first be declared and its "
+"begin operation invoked; the operation must then set an appropriate lock on "
+"the object (in this case a <code>WRITE</code> lock must be acquired), then "
+"the main body of the constructor is executed. If this is successful the "
+"atomic action can be committed, otherwise it is aborted."
+msgstr "在新对象的构造函数里使用原子动作(atomic action)遵循了之前描述的准则,这也确保了当合适的顶层原子动作提交时(也可以是动作 A 或者 <code>TransactionalQueue</code> 构造时活动的某个封装的动作),对象的状态将被写入到 Object Store。在构造函数里使用原子动作很简单:动作首先必须被声明并调用 begin 操作;操作然后必须为对象设置合适的锁(在这个例子里需要 <code>WRITE</code> 锁),最后再执行构造函数的主体。如果这个过程成功完成的话,原子动作将被提交,否则会被中止。"
+
+#. Tag: para
+#: Chapter_06.xml:58
+#, no-c-format
+msgid ""
+"The destructor of the queue class is only required to call the terminate "
+"operation of <methodname>LockManager</methodname>"
+msgstr "这个 Queue 类的构析函数只需要调用 <methodname>LockManager</methodname> 的 terminate 操作。"
+
+#. Tag: screen
+#: Chapter_06.xml:61
+#, no-c-format
+msgid ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+msgstr ""
+"public void finalize ()\n"
+"{\n"
+"        super.terminate();\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:63
+#, no-c-format
+msgid "save_state, resotre_state and type"
+msgstr "save_state、resotre_state 和 type"
+
+#. Tag: para
+#: Chapter_06.xml:64
+#, no-c-format
+msgid ""
+"The implementations of save_state and restore_state are relatively simple "
+"for this example:"
+msgstr "这个例子的 save_state 和 restore_state 的实现相对简单:"
+
+#. Tag: screen
+#: Chapter_06.xml:68
+#, no-c-format
+msgid ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+msgstr ""
+"public boolean save_state (OutputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.save_state(os, ObjectType))\n"
+"        return false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                os.packInt(numberOfElements);\n"
+"        \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                            os.packInt(elements[i]);\n"
+"                }\n"
+"                            \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}\n"
+"\n"
+"public boolean restore_state (InputObjectState os, int ObjectType)\n"
+"{\n"
+"        if (!super.restore_state(os, ObjectType))\n"
+"                return false;\n"
+"                    \n"
+"        try\n"
+"        {\n"
+"                numberOfElements = os.unpackInt();\n"
+"                    \n"
+"                if (numberOfElements &gt; 0)\n"
+"                {\n"
+"                        for (int i = 0; i &lt; numberOfElements; i++)\n"
+"                                    elements[i] = os.unpackInt();\n"
+"                }\n"
+"                    \n"
+"                return true;\n"
+"        }\n"
+"        catch (IOException e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"}"
+
+#. Tag: para
+#: Chapter_06.xml:69
+#, no-c-format
+msgid ""
+"Because the Queue class is derived from the <classname>LockManager</"
+"classname> class, the operation type should be:"
+msgstr ""
+"因为 Queue 类源自 <classname>LockManager</"
+"classname> 类,所以 type 操作应该为:"
+
+#. Tag: screen
+#: Chapter_06.xml:72
+#, no-c-format
+msgid ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+msgstr ""
+"public String type ()\n"
+"{\n"
+"        return \"/StateManager/LockManager/TransactionalQueue\";\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:74
+#, no-c-format
+msgid "enqueue/dequeue operations"
+msgstr "enqueue/dequeue 操作"
+
+#. Tag: para
+#: Chapter_06.xml:75
+#, no-c-format
+msgid ""
+"If the operations of the queue class are to be coded as atomic actions, then "
+"the enqueue operation could have the structure given below (the dequeue "
+"operation would be similarly structured):"
+msgstr "如果把 Queue 类的操作编写为原子动作,enqueue 操作可以具有下面的结构(dequeue 操作的结构将很类似):"
+
+#. Tag: screen
+#: Chapter_06.xml:79
+#, no-c-format
+msgid ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+msgstr ""
+"public void enqueue (int v) throws OverFlow, UnderFlow, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.WRITE), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (numberOfElements &lt; QUEUE_SIZE)\n"
+"                               {\n"
+"                                               elements[numberOfElements] = "
+"v;\n"
+"                                               numberOfElements++;\n"
+"                                               res = true;\n"
+"                               }\n"
+"                               else\n"
+"                               {\n"
+"                                               A.rollback();\n"
+"                                              throw new UnderFlow();\n"
+"                               }\n"
+"                }\n"
+"                               \n"
+"                if (res)\n"
+"                         A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                         A.rollback();\n"
+"                                               throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:81
+#, no-c-format
+msgid "queueSize"
+msgstr "queueSize"
+
+#. Tag: para
+#: Chapter_06.xml:82
+#, no-c-format
+msgid "The implementation of <methodname>queueSize</methodname> is shown below:"
+msgstr "下面是 <methodname>queueSize</methodname> 的实现:"
+
+#. Tag: screen
+#: Chapter_06.xml:84
+#, no-c-format
+msgid ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+msgstr ""
+"public int queueSize () throws QueueError, Conflict\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        int size = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin(0);\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                        size = numberOfElements;\n"
+"        \n"
+"                if (size != -1)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"        \n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"        \n"
+"        return size;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:86
+#, no-c-format
+msgid "inspectValue/setValue operations"
+msgstr "inspectValue/setValue 操作"
+
+#. Tag: para
+#: Chapter_06.xml:87
+#, no-c-format
+msgid ""
+"The implementation of <methodname>inspectValue</methodname> is shown below. "
+"<methodname>setValue</methodname> is similar, and not shown."
+msgstr "下面是 <methodname>inspectValue</methodname> 的实现。这里没有列出类似的 <methodname>setValue</methodname>。"
+
+#. Tag: screen
+#: Chapter_06.xml:91
+#, no-c-format
+msgid ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+msgstr ""
+"public int inspectValue (int index) throws UnderFlow,\n"
+"        OverFlow, Conflict, QueueError\n"
+"{\n"
+"        AtomicAction A = new AtomicAction();\n"
+"        boolean res = false;\n"
+"        int val = -1;\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                A.begin();\n"
+"        \n"
+"                if (setlock(new Lock(LockMode.READ), 0) == LockResult."
+"GRANTED)\n"
+"                {\n"
+"                        if (index &lt; 0)\n"
+"                            {\n"
+"                                    A.rollback();\n"
+"                                    throw new UnderFlow();\n"
+"                            }\n"
+"                else\n"
+"                {\n"
+"                    // array is 0 - numberOfElements -1\n"
+"                    \n"
+"                    if (index &gt; numberOfElements -1)\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new OverFlow();\n"
+"                }\n"
+"                else\n"
+"                {\n"
+"                        val = elements[index];\n"
+"                        res = true;\n"
+"                }\n"
+"                }\n"
+"                }\n"
+"                \n"
+"                if (res)\n"
+"                        A.commit(true);\n"
+"                else\n"
+"                {\n"
+"                        A.rollback();\n"
+"                        throw new Conflict();\n"
+"                }\n"
+"        }\n"
+"        catch (Exception e1)\n"
+"        {\n"
+"                throw new QueueError();\n"
+"        }\n"
+"                \n"
+"        return val;\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:93
+#, no-c-format
+msgid "The client"
+msgstr "客户端"
+
+#. Tag: para
+#: Chapter_06.xml:94
+#, no-c-format
+msgid ""
+"Rather than show all of the code for the client, we shall concentrate on a "
+"representative portion. Before invoking operations on the object, the client "
+"must obviously first bind to it. In the local case this simply requires the "
+"client to create an instance of the object."
+msgstr "我们不会展示所有的客户端代码,我们将专注于具有代表性的部分。在调用对象的操作之前,显然客户端必须首先绑定该对象。在本地调用的情况下,这只需要客户端简单地创建该对象的实例就可以了。"
+
+#. Tag: screen
+#: Chapter_06.xml:98
+#, no-c-format
+msgid ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+msgstr ""
+"public static void main (String[] args)\n"
+"{\n"
+"TransactionalQueue myQueue = new TransactionalQueue();"
+
+#. Tag: para
+#: Chapter_06.xml:99
+#, no-c-format
+msgid ""
+"Before invoking one of the queue’s operations, the client starts a "
+"transaction. The <methodname>queueSize</methodname> operation is shown below:"
+msgstr "在调用队列的某个操作之前,客户端可以启动一个事务。下面是 <methodname>queueSize</methodname> 操作:"
+
+#. Tag: screen
+#: Chapter_06.xml:102
+#, no-c-format
+msgid ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+msgstr ""
+"AtomicAction A = new AtomicAction();\n"
+"int size = 0;\n"
+"        \n"
+"try\n"
+"{\n"
+"        A.begin(0);\n"
+"s\n"
+"        try\n"
+"        {\n"
+"                size = queue.queueSize();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"        }\n"
+"        \n"
+"        if (size &gt;= 0)\n"
+"        {\n"
+"                A.commit(true);\n"
+"        \n"
+"                System.out.println(“Size of queue: “+size);\n"
+"        }\n"
+"        else\n"
+"                A.rollback();\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"        System.err.println(“Caught unexpected exception!”);\n"
+"}"
+
+#. Tag: title
+#: Chapter_06.xml:104
+#, no-c-format
+msgid "Comments"
+msgstr "注释"
+
+#. Tag: para
+#: Chapter_06.xml:105
+#, no-c-format
+msgid ""
+"Since the queue object is persistent, then the state of the object will "
+"survive any failures of the node on which it is located. The state of the "
+"object that will survive is that produced by the last top-level committed "
+"atomic action performed on the object. If it is the intention of an "
+"application to perform two enqueue operations atomically, for example, then "
+"this can be done by nesting the enqueue operations in another enclosing "
+"atomic action. In addition, concurrent operations on such a persistent "
+"object will be serialised, thereby preventing inconsistencies in the state "
+"of the object. However, since the elements of the queue objects are not "
+"individually concurrency controlled, certain combinations of concurrent "
+"operation invocations will be executed serially, whereas logically they "
+"could be executed concurrently. For example, modifying the states of two "
+"different elements in the queue. In the next section we address some of "
+"these issues."
+msgstr "既然 Queue 对象是持久的,那么不管它所在的节点发生什么故障,它的状态都可以继续生存。这个状态由最后提交的顶层原子动作来产生。如果应用程序的目的是执行两个原子的 enqueue 操作,这可以通过把一个 enqueue 操作嵌套在另外一个里来实现。此外,这样的持久性对象上的并行操作将被序列化,因此防止了对象状态的不一致性。然而,既然 Queue 对象的元素并不是被独立地并行控制的,某些并行操作调用的组合将被串行地执行,而从逻辑上来将它们可以是并行运行的。例如修改队列里的两个不同元素的状态。在下一节,我们将解决其中的一些问题。"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_07.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/Chapter_07.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,346 @@
+# translation of Chapter_07.po to
+# Language zh-CN translations for JBoss_TS_Programmers_Guide package.
+#
+# Automatically generated, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Chapter_07\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-06-05 22:51+0000\n"
+"PO-Revision-Date: 2008-06-26 15:21+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Chapter_07.xml:6
+#, no-c-format
+msgid "Configuration options"
+msgstr "配置选项"
+
+#. Tag: title
+#: Chapter_07.xml:9
+#, no-c-format
+msgid "Options"
+msgstr "选项"
+
+#. Tag: para
+#: Chapter_07.xml:10
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. More details about each option can be found in the "
+"relevant sections of this document."
+msgstr "下表展示了配置特征,斜体字表示缺省值。每个选项的更多细节可以要在本文档的相关部分找到。"
+
+#. Tag: title
+#: Chapter_07.xml:14
+#, no-c-format
+msgid "TxCore configuration options."
+msgstr "TxCore 配置选项。"
+
+#. Tag: entry
+#: Chapter_07.xml:18
+#, no-c-format
+msgid "Configuration Name"
+msgstr "配置名称"
+
+#. Tag: entry
+#: Chapter_07.xml:21
+#, no-c-format
+msgid "Possible Values"
+msgstr "可能的取值"
+
+#. Tag: entry
+#: Chapter_07.xml:24
+#, no-c-format
+msgid "Description"
+msgstr "描述"
+
+#. Tag: entry
+#: Chapter_07.xml:31
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeSync"
+
+#. Tag: entry
+#: Chapter_07.xml:34 Chapter_07.xml:145
+#, no-c-format
+msgid "ON/OFF"
+msgstr "ON/OFF"
+
+#. Tag: entry
+#: Chapter_07.xml:37 Chapter_07.xml:148
+#, no-c-format
+msgid "Turns synchronization of the object store on or off. Use with caution."
+msgstr "启用或关闭 Object Store 的同步。请小心使用本选项。"
+
+#. Tag: entry
+#: Chapter_07.xml:42
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.storeType"
+msgstr "com.arjuna.ats.arjuna.objectstore.storeType"
+
+#. Tag: entry
+#: Chapter_07.xml:45
+#, no-c-format
+msgid "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+msgstr "ShadowStore/ShadowNoFileLockStore/JDBCStore/HashedStore"
+
+#. Tag: entry
+#: Chapter_07.xml:48
+#, no-c-format
+msgid "Specify the type of object store implementation to use."
+msgstr "指定使用的 Object Store 实现的类型。"
+
+#. Tag: entry
+#: Chapter_07.xml:53
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+msgstr "com.arjuna.ats.arjuna.objectstore.hashedDirectories"
+
+#. Tag: entry
+#: Chapter_07.xml:56
+#, no-c-format
+msgid "255/any integer value"
+msgstr "255/任何整型值"
+
+#. Tag: entry
+#: Chapter_07.xml:59
+#, no-c-format
+msgid ""
+"Set the number of directories to hash object states over for the HashedStore "
+"object store implementation."
+msgstr "设置 HasehdStore Object Store 实现的 hash 对象状态的目录数。"
+
+#. Tag: entry
+#: Chapter_07.xml:64
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreType"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreType"
+
+#. Tag: entry
+#: Chapter_07.xml:67
+#, no-c-format
+msgid "BasicLockStore/BasicPersistentLockStore"
+msgstr "BasicLockStore/BasicPersistentLockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:70
+#, no-c-format
+msgid "Specify the type of the lock store implementation to use."
+msgstr "指定所使用的 Lock Store 实现的类型。"
+
+#. Tag: entry
+#: Chapter_07.xml:75
+#, no-c-format
+msgid "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+msgstr "com.arjuna.ats.txoj.lockstore.lockStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:78
+#, no-c-format
+msgid "Windows: .\\LockStore Unix: ./LockStore"
+msgstr "Windows: .\\LockStore Unix: ./LockStore"
+
+#. Tag: entry
+#: Chapter_07.xml:82
+#, no-c-format
+msgid "Specify the location of the lock store."
+msgstr "指定 Lock Store 的位置。"
+
+#. Tag: entry
+#: Chapter_07.xml:87
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+msgstr "com.arjuna.ats.arjuna.objectstore.objectStoreDir"
+
+#. Tag: entry
+#: Chapter_07.xml:90
+#, no-c-format
+msgid "Any location the application can write to."
+msgstr "应用程序可以写入的任何位置。"
+
+#. Tag: entry
+#: Chapter_07.xml:93
+#, no-c-format
+msgid "Specify the location of the object store."
+msgstr "指定 Object Store 的位置。"
+
+#. Tag: entry
+#: Chapter_07.xml:98
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+msgstr "com.arjuna.ats.arjuna.objectstore.localOSRoot"
+
+#. Tag: entry
+#: Chapter_07.xml:101
+#, no-c-format
+msgid "defaultStore"
+msgstr "defaultStore"
+
+#. Tag: entry
+#: Chapter_07.xml:104
+#, no-c-format
+msgid "Specify the name of the object store root."
+msgstr "指定 Object Store 的根名称。"
+
+#. Tag: entry
+#: Chapter_07.xml:109
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.actionStore"
+msgstr "com.arjuna.ats.arjuna.coordinator.actionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:112
+#, no-c-format
+msgid "ActionStore/HashedActionStore/JDBCActionStore"
+msgstr "ActionStore/HashedActionStore/JDBCActionStore"
+
+#. Tag: entry
+#: Chapter_07.xml:115
+#, no-c-format
+msgid "The transaction log implementation to use."
+msgstr "使用的事务日志实现。"
+
+#. Tag: entry
+#: Chapter_07.xml:120
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncCommit"
+
+#. Tag: entry
+#: Chapter_07.xml:123 Chapter_07.xml:134 Chapter_07.xml:178 Chapter_07.xml:189
+#: Chapter_07.xml:200 Chapter_07.xml:211
+#, no-c-format
+msgid "YES/NO"
+msgstr "YES/NO"
+
+#. Tag: entry
+#: Chapter_07.xml:126
+#, no-c-format
+msgid "Turns on or off (default) asynchronous commit."
+msgstr "启用/关闭(缺省)异步提交。"
+
+#. Tag: entry
+#: Chapter_07.xml:131
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+msgstr "com.arjuna.ats.arjuna.coordinator.asyncPrepare"
+
+#. Tag: entry
+#: Chapter_07.xml:137
+#, no-c-format
+msgid "Turns on or off (default) asynchronous prepare."
+msgstr "启用/关闭(缺省)异步 prepare。"
+
+#. Tag: entry
+#: Chapter_07.xml:142
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.transactionSync"
+msgstr "com.arjuna.ats.arjuna.objectstore.transactionSync"
+
+#. Tag: entry
+#: Chapter_07.xml:153
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:156 Chapter_07.xml:167
+#, no-c-format
+msgid "JDBCAccess class name"
+msgstr "JDBCAccess 类名"
+
+#. Tag: entry
+#: Chapter_07.xml:159
+#, no-c-format
+msgid "The JDBCAccess implementation to use for user-level object stores."
+msgstr "用于用户级的 Object Store 的 JDBCAccess 实现。"
+
+#. Tag: entry
+#: Chapter_07.xml:164
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+msgstr "com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
+
+#. Tag: entry
+#: Chapter_07.xml:170
+#, no-c-format
+msgid "The JDBCAccess implementation to use for transaction object stores."
+msgstr "用于事务 Object Store 的 JDBCAccess 实现。"
+
+#. Tag: entry
+#: Chapter_07.xml:175
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+msgstr "com.arjuna.ats.arjuna.coordinator.commitOnePhase"
+
+#. Tag: entry
+#: Chapter_07.xml:181
+#, no-c-format
+msgid "Enable or disable the one-phase commit optimization."
+msgstr "启用/禁用一阶段的提交优化。"
+
+#. Tag: entry
+#: Chapter_07.xml:186
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+msgstr "com.arjuna.ats.arjuna.coordinator.readonlyOptimisation"
+
+#. Tag: entry
+#: Chapter_07.xml:192
+#, no-c-format
+msgid "Enable or disable read-only optimization for the second phase abort."
+msgstr "启用/禁用用于第二阶段终止的只读优化。"
+
+#. Tag: entry
+#: Chapter_07.xml:197
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+msgstr "com.arjuna.ats.arjuna.coordinator.enableStatistics"
+
+#. Tag: entry
+#: Chapter_07.xml:203
+#, no-c-format
+msgid "Start/stop collecting transaction statistic information."
+msgstr "启动/停止收集事务统计信息。"
+
+#. Tag: entry
+#: Chapter_07.xml:208
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.startDisabled"
+msgstr "com.arjuna.ats.arjuna.coordinator.startDisabled"
+
+#. Tag: entry
+#: Chapter_07.xml:214
+#, no-c-format
+msgid ""
+"Start with the transaction system enabled or disabled. Toggle via the com."
+"arjuna.ats.arjuna.coordinator.TxControl class."
+msgstr ""
+"启动时启用或禁用事务系统。用 com."
+"arjuna.ats.arjuna.coordinator.TxControl 类进行切换。"
+
+#. Tag: entry
+#: Chapter_07.xml:219
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+msgstr "com.arjuna.ats.arjuna.coordinator.defaultTimeout"
+
+#. Tag: entry
+#: Chapter_07.xml:222
+#, no-c-format
+msgid "Integer"
+msgstr "æ•´åž‹"
+
+#. Tag: entry
+#: Chapter_07.xml:225
+#, no-c-format
+msgid "Timeout in milliseconds"
+msgstr "超时时间(毫秒)"
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Programmers_Guide/zh-CN/JBoss_TS_Programmers_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,12 @@
+#Makefile for Transactions_Failure_Recovery_Guide
+
+XML_LANG	= en-US
+
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+OTHER_LANGS	= ja-JP
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,745 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager">
+	<title>Architecture of the Recovery Manager</title>
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-Crash_Recovery_Overview">
+		<title>Crash Recovery Overview</title>
+		<para>
+			The main architectural components within Crash Recovery are illustrated in the diagram below:
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Crash_Recovery_Architecture.png" format="PNG" />
+			</imageobject>
+		</mediaobject>
+		<para>
+			The Recovery Manager is a daemon process responsible for performing crash recovery. Only one Recovery Manager runs per node. The Object Store provides persistent data storage for transactions to log data. During normal transaction processing each transaction will log persistent data needed for the commit phase to the Object Store. On successfully committing a transaction this data is removed, however if the transaction fails then this data remains within the Object Store.
+		</para>
+		<para>
+			The Recovery Manager functions by:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Periodically scanning the Object Store for transactions that may have failed. Failed transactions are indicated by the presence of log data after a period of time that the transaction would have normally been expected to finish.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Checking with the application process which originated the transaction whether the transaction is still in progress or not.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Recovering the transaction by re-activating the transaction and then replaying phase two of the commit protocol.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The following sections describe the architectural components in more detail
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-Recovery_Manager">
+		<title>Recovery Manager</title>
+		<para>
+			On initialization the Recovery Manager first loads in configuration information via a properties file. This configuration includes a number of recovery activators and recovery modules, which are then dynamically loaded.
+		</para>
+		<para>
+			Since the version 3.0 of JBossTS, the Recovery Manager is not specifically tied to an Object Request Broker or ORB. Hence, the OTS recovery protocol is not implicitly enabled. To enable such protocol, we use the concept of recovery activator, defined with the interface <interfacename>RecoveryActivator</interfacename>, which is used to instantiate a recovery class related to the underlying communication protocol. For instance, when used with OTS, the <interfacename>RecoveryActivitor</interfacename> has the responsibility to create a RecoveryCoordinator object able to respond to the replay_completion operation.
+		</para>
+		<para>
+			All <interfacename>RecoveryActivator</interfacename> instances inherit the same interface. They are loaded via the following recovery extension property:
+		</para>
+<screen>
+&lt;property  
+		   name="com.arjuna.ats.arjuna.recovery.recoveryActivator_&lt;number&gt;" value="RecoveryClass" /&gt;
+</screen>
+		<para>
+			For instance the <interfacename>RecoveryActivator</interfacename> provided in the distribution of JTS/OTS, which shall not be commented, is as follow:
+		</para>
+<screen>
+&lt;property 
+	name="com.arjuna.ats.arjuna.recovery.recoveryActivator_1" value="com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement/&gt;
+</screen>
+		<para>
+			When loaded all <interfacename>RecoveryActivator</interfacename> instances provide the method <methodname>startRCservice</methodname> invoked by the Recovery Manager and used to create the appropriate Recovery Component able to receive recovery requests according to a particular transaction protocol. For instance the RecoveryCoordinator defined by the OTS protocol.
+		</para>
+		<para>
+			Each recovery module is used to recover a different type of transaction/resource, however each recovery module inherits the same basic behavior.
+		</para>
+		<para>
+			Recovery consists of two separate passes/phases separated by two timeout periods. The first pass examines the object store for potentially failed transactions; the second pass performs crash recovery on failed transactions. The timeout between the first and second pass is known as the backoff period. The timeout between the end of the second pass and the start of the first pass is the recovery period. The recovery period is larger than the backoff period.
+		</para>
+		<para>
+			The Recovery Manager invokes the first pass upon each recovery module, applies the backoff period timeout, invokes the second pass upon each recovery module and finally applies the recovery period timeout before restarting the first pass again.
+		</para>
+		<para>
+			The recovery modules are loaded via the following recovery extension property:
+		</para>
+<screen>
+com.arjuna.ats.arjuna.recovery.recoveryExtension&lt;number&gt;=&lt;RecoveryClass&gt;
+</screen>
+		<para>
+			The backoff period and recovery period are set using the following properties:
+		</para>
+<screen>
+com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod	(default 10 secs)
+com.arjuna.ats.arjuna.recovery.periodicRecovery		(default 120 secs)
+</screen>
+		<para>
+			The following java classes are used to implement the Recovery Manager:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					package <package>com.arjuna.ats.arjuna.recovery</package>:
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							RecoveryManager: The daemon process that starts up by instantiating an instance of the RecoveryManagerImple class.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							RecoveryEnvironment: Properties used by the recovery manager.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							RecoveryConfiguration: Specifies the name of the Recovery Manager property file. (for instance, RecoveryManager-properties.xml)
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					package <package>com.arjuna.ats.internal.ts.arjuna.recovery</package>:
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							RecoveryManagerImple: Creates and starts instances of the RecActivatorLoader, the PeriodicRecovery thread and the ExpiryEntryMonitor thread.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							RecActivatorLoader: Dynamically loads in the RecoveryActivator specified in the Recovery Manager property file. Each RecoveryActicator is specified as a recovery extension in the properties file.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							PeriodicRecovery: Thread which loads each recovery module, then calls the first pass method for each module, applies the backoff period timeout, calls the second pass method for each module and applies the recovery period timeout.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							RecoveryClassLoader: Dynamically loads in the recovery modules specified in the Recovery Manager property file. Each module is specified as a recovery extension in the properties file (for instance, com.arjuna.ats.arjuna.recovery.recoveryExtension1= com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule).
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+		</itemizedlist>
+		<note>
+			<para>
+				By default, the recovery manager listens on the first available port on a given machine. If you wish to control the port number that it uses, you can specify this using the com.arjuna.ats.arjuna.recovery.recoveryPort attribute.
+			</para>
+		</note>
+		<formalpara id="form-Transactions_Failure_Recovery_Guide-Recovery_Manager-Embedding_the_Recovery_Manager">
+			<title>Embedding the Recovery Manager</title>
+			<para>
+				In some situations it may be required to embed the RecoveryManager in the same process as the transaction service. In this case you can create an instance of the RecoveryManager through the manager method on com.arjuna.ats.arjuna.recovery.RecoveryManager. A RecoveryManager can be created in one of two modes, selected via the parameter to the manager method:
+			</para>
+		</formalpara>
+		<orderedlist>
+			<listitem>
+				<para>
+					INDIRECT_MANAGEMENT: the manager runs periodically but can also be instructed to run when desired via the scan operation or through the RecoveryDriver class to be described below.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					DIRECT_MANAGEMENT: the manager does not run periodically and must be driven directly via the scan operation or RecoveryDriver.
+				</para>
+			</listitem>
+		</orderedlist>
+		<formalpara id="form-Transactions_Failure_Recovery_Guide-Recovery_Manager-Managing_recovery_directly">
+			<title>Managing recovery directly</title>
+			<para>
+				As already mentioned, recovery typically happens at periodic intervals. If you require to drive recovery directly, then there are two options, depending upon how the RecoveryManager has been created.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Failure_Recovery_Guide-Recovery_Manager-Seperate_Recovery_Manager">
+			<title>Seperate Recovery Manager</title>
+			<para>
+				You can either use the com.arjuna.ats.arjuna.tools.RecoveryMonitor program to send a message to the Recovery Manager instructing it to perform recovery, or you can create an instance of the com.arjuna.ats.arjuna.recovery.RecoveryDriver class to do likewise. There are two types of recovery scan available:
+			</para>
+		</formalpara>
+		<orderedlist>
+			<listitem>
+				<para>
+					ASYNC_SCAN: here a message is sent to the RecoveryManager to instruct it to perform recovery, but the response returns before recovery has completed.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					SYNC: here a message is sent to the RecoveryManager to instruct it to perform recovery, and the response occurs only when recovery has completed.
+				</para>
+			</listitem>
+		</orderedlist>
+		<formalpara id="form-Transactions_Failure_Recovery_Guide-Recovery_Manager-In_process_Recovery_Manager">
+			<title>In process Recovery Manager</title>
+			<para>
+				You can invoke the scan operation on the RecoveryManager. This operation returns only when recovery has completed. However, if you wish to have an asynchronous interaction pattern, then the RecoveryScan interface is provided:
+			</para>
+		</formalpara>
+<screen>
+public interface RecoveryScan
+{
+	public void completed ();
+}
+</screen>
+		<para>
+			An instance of an object supporting this interface can be passed to the scan operation and its completed method will be called when recovery finishes. The scan operation returns immediately, however.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-Recovery_Modules">
+		<title>Recovery Modules</title>
+		<para>
+			As stated before each recovery module is used to recover a different type of transaction/resource, but each recovery module must implement the following RecoveryModule interface, which defines two methods: <methodname>periodicWorkFirstPass</methodname> and <methodname>periodicWorkSecondPass</methodname> invoked by the Recovery Manager.
+		</para>
+<screen>
+public interface RecoveryModule
+{
+	/**
+	* Called by the RecoveryManager at start up, and then
+	* PERIODIC_RECOVERY_PERIOD seconds after the completion, for all   
+	* RecoveryModules of the second pass
+	*/
+	public void periodicWorkFirstPass ();
+	
+	/**
+	* Called by the RecoveryManager RECOVERY_BACKOFF_PERIOD seconds
+	* after the completion of the first pass
+	*/
+	public void periodicWorkSecondPass ();
+}
+</screen>
+	<formalpara>
+		<title>JBossTS Recovery Module Classes</title>
+		<para>
+			JBossTS provides a set of recovery modules that are responsible to manage recovery according to the nature of the participant and its position in a transactional tree. The provided classes (that all implements the <interfacename>RecoveryModule</interfacename> interface) are:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<formalpara>
+				<title>com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule</title>
+				<para>
+					Recovers AtomicAction transactions. 
+				</para>
+			</formalpara>
+		</listitem>
+		<listitem>
+			<formalpara>
+				<title>com.arjuna.ats.internal.txoj.recovery.TORecoveryModule</title>
+				<para>
+					Recovers Transactional Objects for Java.
+				</para>
+			</formalpara>
+		</listitem>
+		<listitem>
+			<formalpara>
+				<title>com.arjuna.ats.internal.jts.recovery.transactions.TransactionRecoveryModule</title>
+				<para>
+					Recovers JTS Transactions. This is a generic class from which TopLevel and Server transaction recovery modules inherit, respectively 
+				</para>
+			</formalpara>
+		</listitem>
+		<listitem>
+			<formalpara>
+				<title>com.arjuna.ats.internal.jts.recovery.transactions.TopLevelTransactionRecoveryModule</title>
+				<para>
+					Recovers JTS Toplevel Transactions.
+				</para>
+			</formalpara>
+		</listitem>
+		<listitem>
+			<formalpara>
+				<title>com.arjuna.ats.internal.jts.recovery.transactions.ServerTransactionRecoveryModule</title>
+				<para>
+					Recovers JTS Server Transactions.
+				</para>
+			</formalpara>
+		</listitem>
+	</itemizedlist>
+	<para>
+		To illustrate the behavior of a recovery module, the following pseudo code describes the basic algorithm used for Atomic Action transactions and Transactional Objects for java.
+	</para>
+	<formalpara>
+		<title>AtomicAction pseudo code</title>
+		<para>
+			First Pass:
+		</para>
+	</formalpara>
+<screen>
+&lt; create a transaction vector for transaction Uids. &gt;
+&lt; read in all transactions for a transaction type AtomicAction. &gt;
+while &lt; there are transactions in the vector of transactions. &gt;
+do
+	&lt; add the transaction to the vector of transactions. &gt;
+end while.	
+</screen>
+	<para>
+		Second Pass:
+	</para>
+<screen>
+while &lt; there are transactions in the transaction vector &gt;
+do
+	if &lt; the intention list for the transaction still exists &gt;
+	then
+		&lt; create new transaction cached item &gt;
+		&lt; obtain the status of the transaction &gt;
+					
+		if 	&lt; the transaction is not in progress &gt;
+		then
+			&lt; replay phase two of the commit protocol &gt;
+		endif.
+	endif.
+end while.
+</screen>
+	<formalpara>
+		<title>Transactional Object pseudo code</title>
+		<para>First Pass</para>
+	</formalpara>
+<screen>
+&lt; Create a hash table for uncommitted transactional objects. &gt;
+&lt; Read in all transactional objects within the object store. &gt;
+while &lt; there are transactional objects &gt;
+do
+	if 	&lt; the transactional object has an Uncommited status in the object store &gt;
+	then
+		&lt; add the transactional Object o the hash table for uncommitted transactional objects&gt;
+	end if.
+end while.
+</screen>
+	<para>
+		Second Pass:
+	</para>
+<screen>
+while &lt; there are transactions in the hash table for uncommitted transactional objects &gt;
+do
+	if &lt; the transaction is still in the Uncommitted state &gt;
+	then
+		if &lt; the transaction is not in the Transaction Cache &gt;
+		then
+			&lt; check the status of the transaction with the original application process &gt;
+			if &lt; the status is Rolled Back or the application process is inactive &gt;
+				&lt; rollback the transaction by removing the Uncommitted status from the Object Store &gt;
+			endif.
+		endif.
+	endif.
+end while.
+</screen>
+	<formalpara>
+		<title>A Recovery Module for XA Resources</title>
+		<para>
+			To manage recovery, we have seen in the previous chapter that the Recovery Manager triggers a recovery process by calling a set of recovery modules that implements the two methods defined by the <interfacename>RecoveryModule</interfacename> interface. 
+		</para>
+	</formalpara>
+	<para>
+		To enable recovery of participants controlled via the <interfacename>XA</interfacename> interface, a specific recovery module named XARecoveryModule is provided. The XARecoveryModule, defined in the packages <package>com.arjuna.ats.internal.jta.recovery.arjunacore</package> and <package>com.arjuna.ats.internal.jta.recovery.jts</package>, handles recovery of <interfacename>XA</interfacename> resources (for example, databases) used in JTA.
+	</para>
+	<note>
+		<para>
+			JBossTS supports two JTA implementations: a purely local version (no distributed transactions) and a version layered on the JTS. Recovery for the former is straightforward. In the following discussion we shall implicitly consider on the JTS implementation.
+		</para>
+	</note>
+	<para>
+		Its behavior consists of two aspects: <emphasis>transaction-initiated</emphasis> and <emphasis>resource-initiated</emphasis> recovery. Transaction-initiated recovery is possible where the particular transaction branch had progressed far enough for a JTA Resource Record to be written in the ObjectStore, as illustrated in Figure 2.
+	</para>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/ObjectStore.png" format="PNG" />
+		</imageobject>
+		<caption> JTA/JDBC information stored in the ObjectStore</caption>
+	</mediaobject>
+		<para>
+			A JTA Resource record contains the information needed to link the transaction, as known to the rest of JBossTS, to the database. Resource-initiated recovery is necessary for branches where a failure occurred after the database had made a persistent record of the transaction, but before the JTA ResourceRecord was persisted.  Resource-initiated recovery is also necessary for datasources for which it is not possible to hold information in the JTA Resource record that allows the recreation in the RecoveryManager of the XAConnection/XAResource that was used in the original application.
+		</para>
+		<note>
+			<para>
+				When running XA recovery it is necessary to tell JBossTS which types of Xid it can recover. Each Xid that JBossTS creates has a unique node identifier encoded within it and JBossTS will only recover transactions and states that match a specified node identifier. The node identifier to use should be provided to JBossTS via a property that starts with the name <property>com.arjuna.ats.jta.xaRecoveryNode</property>; multiple values may be provided. A value of ‘*’ will force JBossTS to recover (and possibly rollback) all transactions irrespective of their node identifier and should be used with caution. The contents of <property>com.arjuna.ats.jta.xaRecoveryNode</property> should be alphanumeric and match the values of <property>com.arjuna.ats.arjuna.xa.nodeIdentifier</property>.
+			</para>
+		</note>
+		<para>
+			Transaction-initiated recovery is automatic. The XARecoveryModule finds the JTA Resource Record that need recovery, then uses the normal recovery mechanisms to find the status of the transaction it was involved in (i.e., it calls replay_completion on the RecoveryCoordinator for the transaction branch), (re)creates the appropriate XAResource and issues commit or rollback on it as appropriate. The XAResource creation will use the same information, database name, username, password etc., as the original application.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Recovery.png" format="PNG" />
+			</imageobject>
+			<caption>Transaction-Initiated Recovery and XA Recovery</caption>
+		</mediaobject>
+		<para>
+			Resource-initiated recovery has to be specifically configured, by supplying the Recovery Manager with the appropriate information for it to interrogate all the databases (XADataSources) that have been accessed by any JBossTS application. The access to each XADataSource is handled by a class that implements the <interfacename>com.arjuna.ats.jta.recovery.XAResourceRecovery</interfacename> interface, as illustrated in Figure 4. Instances of classes that implements the XAResourceRecovery interface are dynamically loaded, as controlled by properties with names beginning <property>com.arjuna.ats.jta.recovery.XAResourceRecovery</property>.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Resource-Initiated_Recovery.png" format="PNG" />
+			</imageobject>
+			<caption>Resource-initiated recovery and XA Recovery</caption>
+		</mediaobject>
+		<note>
+			<para>
+				JBossTS 3.3 <interfacename>XAConnectionRecovery</interfacename> was deprecated in favor of <interfacename>XAResourceRecovery</interfacename>. Although the old interface still exists at the moment, users are encouraged to migrate to the new interface.
+			</para>
+		</note>
+		<para>
+			The XARecoveryModule will use the XAResourceRecovery implementation to get a XAResource to the target datasource. On each invocation of periodicWorkSecondPass, the recovery module will issue an XAResource.recover request – this will (as described in the XA specification) return a list of the transaction identifiers (Xid’s) that are known to the datasource and are in an indeterminate (in-doubt) state. The list of these in-doubt Xid’s received on successive passes (i.e. periodicWorkSecondPass-es) is compared. Any Xid that appears in both lists, and for which no JTA ResourceRecord was found by the intervening transaction-initiated recovery is assumed to belong to a transaction that was involved in a crash before any JTA ResourceRecord was written, and a rollback is issued for that transaction on the XAResource.
+		</para>
+		<para>
+			This double-scan mechanism is used because it is possible the Xid was obtained from the datasource just as the original application process was about to create the corresponding JTA_ResourceRecord. The interval between the scans should allow time for the record to be written unless the application crashes (and if it does, rollback is the right answer).
+		</para>
+		<para>
+			An <classname>XAResourceRecovery</classname> implementation class can be written to contain all the information needed to perform recovery to some datasource. Alternatively, a single class can handle multiple datasources. The constructor of the implementation class must have an empty parameter list (because it is loaded dynamically), but the interface includes an initialise method which passes in further information as a string. The content of the string is taken from the property value that provides the class name: everything after the first semi-colon is passed as the value of the string. The use made of this string is determined by the <classname>XAResourceRecovery</classname> implementation class.
+		</para>
+		<para>
+			For further details on the way to implement a class that implements the interface <interfacename>XAResourceRecovery</interfacename>, read the JDBC chapter of the JTA Programming Guide. An implementation class is provided that supports resource-initiated recovery for any XADataSource. This class could be used as a template to build your own implementation class. 
+		</para>
+		<formalpara>
+			<title>Writing a Recovery Module</title>
+			<para>In order to recover from failure, we have seen that the Recovery Manager contacts recovery modules by invoking periodically the methods <methodname>periodicWorkFirstPass</methodname> and <methodname>periodicWorkSecondPass</methodname>. Each Recovery Module is then able to manage recovery according to the type of resources that need to be recovered. The JBoss Transaction product is shipped with a set of recovery modules (TOReceveryModule, XARecoveryModule…), but it is possible for a user to define their own recovery module to fit their application. The following basic example illustrates the steps needed to build such recovery module</para>
+		</formalpara>
+		<formalpara>
+			<title>A basic scenario</title>
+			<para>This basic example does not aim to present a complete process to recover from failure, but mainly to illustrate the way to implement a recovery module. </para>
+		</formalpara>
+		<para>
+			The application used here consists to create an atomic transaction, to register a participant within the created transaction and finally to terminate it either by commit or abort. A set of arguments are provided:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					to decide to commit or abort the transaction,
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					to decide generating a crash during the commitment process.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The code of the main class that control the application is given below
+		</para>
+<screen>
+package com.arjuna.demo.recoverymodule;
+	
+import com.arjuna.ats.arjuna.AtomicAction;
+import com.arjuna.ats.arjuna.coordinator.*;
+	
+public class TestRecoveryModule
+{
+	public static void main(String args[])
+	{
+		try 
+		{
+			AtomicAction tx = new AtomicAction();
+			tx.begin(); // Top level begin
+	
+			// enlist the participant 
+			tx.add(SimpleRecord.create());
+	
+			System.out.println("About to complete the transaction ");
+			for (int i = 0; i &lt; args.length; i++)
+			{
+				if ((args[i].compareTo("-commit") == 0))
+				_commit = true;
+				if ((args[i].compareTo("-rollback") == 0))
+				_commit = false;
+				if ((args[i].compareTo("-crash") == 0))
+				_crash = true;
+			}
+			if (_commit)
+				tx.commit();  // Top level commit
+			else 
+				tx.abort();  // Top level rollback
+			} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+	protected static boolean _commit = true;
+	protected static boolean _crash = false;
+}
+</screen>
+	<para>
+		The registered participant has the following behavior:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				During the prepare phase, it writes a simple message - <emphasis>I’m prepared</emphasis>- on the disk such The message is written in a well known file.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				During the commit phase, it writes another message - <emphasis>I’m committed</emphasis>- in the same file used during prepare.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				If it receives an abort message, it removes from the disk the file used for prepare if any.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				If a crash has been decided for the test, then it crashes during the commit phase – the file remains with the message <emphasis>I’m prepared</emphasis>.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The main portion of the code illustrating such behavior is described hereafter.
+	</para>
+	<note>
+		<para>
+			The location of the file given in variable filename can be changed
+		</para>
+	</note>
+<screen>
+package com.arjuna.demo.recoverymodule;
+	
+import com.arjuna.ats.arjuna.coordinator.*;
+import java.io.File;
+	
+public class SimpleRecord extends AbstractRecord {
+	public String filename = "c:/tmp/RecordState";
+	public SimpleRecord() {
+		System.out.println("Creating new resource");
+	}
+	
+	public static AbstractRecord create()
+	{
+		return new SimpleRecord() ;
+	}
+	
+	public int topLevelAbort()
+	{
+		try {
+			File fd = new File(filename);
+			if (fd.exists()){
+				if (fd.delete())
+					System.out.println("File Deleted");
+			}
+	}
+	catch(Exception ex){…}
+		return TwoPhaseOutcome.FINISH_OK;
+	}
+	
+	public int topLevelCommit()
+	{
+		if (TestRecoveryModule._crash)
+			System.exit(0);
+		try  {
+			java.io.FileOutputStream file = new    
+				java.io.FileOutputStream(filename);
+			java.io.PrintStream pfile = new java.io.PrintStream(file);
+			pfile.println("I'm Committed");
+			file.close();
+		}
+		catch (java.io.IOException ex) {...}
+		return TwoPhaseOutcome.FINISH_OK ;
+	}
+	
+	public int topLevelPrepare()
+	{
+		try {
+			java.io.FileOutputStream file = new
+				java.io.FileOutputStream(filename);
+			java.io.PrintStream pfile = new java.io.PrintStream(file);
+			pfile.println("I'm prepared");
+			file.close();
+		}
+		catch (java.io.IOException ex)  {...}
+		return  TwoPhaseOutcome.PREPARE_OK ;
+	}
+	…
+}
+</screen>
+	<para>
+		The role of the Recovery Module in such application consists to read the content of the file used to store the status of the participant, to determine that status and print a message indicating if a recovery action is needed or not. 
+	</para>
+<screen>
+package com.arjuna.demo.recoverymodule;
+	
+import com.arjuna.ats.arjuna.recovery.RecoveryModule;
+	
+public class SimpleRecoveryModule implements RecoveryModule
+{
+	public String filename = "c:/tmp/RecordState";
+	public SimpleRecoveryModule ()
+	{
+		System.out.println("The SimpleRecoveryModule is loaded");
+	};
+	
+	public void periodicWorkFirstPass ()
+	{
+		try
+		{
+			java.io.FileInputStream file = new 
+				java.io.FileInputStream(filename);
+			java.io.InputStreamReader input = new 
+				java.io.InputStreamReader(file);
+			java.io.BufferedReader reader = new java.io.BufferedReader(input);
+			String stringState = reader.readLine();
+			if (stringState.compareTo("I'm prepared") == 0)
+				System.out.println("The transaction is in the prepared state");
+			file.close();
+		}
+		catch (java.io.IOException ex)
+		{ System.out.println("Nothing found on the Disk"); }
+	}
+	
+	public void periodicWorkSecondPass ()
+	{
+		try
+		{
+			java.io.FileInputStream file = new 
+				java.io.FileInputStream(filename);
+			java.io.InputStreamReader input = new 
+				java.io.InputStreamReader(file);
+			java.io.BufferedReader reader = new java.io.BufferedReader(input);
+			String stringState = reader.readLine();
+			if (stringState.compareTo("I'm prepared") == 0)
+			{
+				System.out.println("The record is still in the prepared state – Recovery is needed");
+			}
+			else if (stringState.compareTo("I'm Committed") == 0)
+			{
+				System.out.println("The transaction has completed and committed");     
+			}
+			file.close();
+		}
+		catch (java.io.IOException ex)
+		{ System.out.println("Nothing found on the Disk - Either there was 
+			no transaction or it as been rolled back"); }
+	}
+}
+</screen>
+	<para>
+		The recovery module should now be deployed in order to be called by the Recovery Manager. To do so, we just need to add an entry in the <filename>RecoveryManager-properties.xml</filename> by adding a new property as follow: 
+	</para>
+<screen>
+	&lt;property
+		 name="com.arjuna.ats.arjuna.recovery.recoveryExtension&lt;i&gt;"
+        value="com.arjuna.demo.recoverymodule.SimpleRecoveryModule"/&gt;
+</screen>
+	<para>
+		Where &lt;i&gt; represent the new occurrence number that follows the last that already exists in the file. Once started, the Recovery Manager will automatically load the added Recovery module.
+	</para>
+	<note>
+		<para>
+			The source of the code can be retrieved under the trailmap directory of the JBossTS installation. 
+		</para>
+	</note>
+	<formalpara>
+		<title>Another scenario</title>
+		<para>
+			As mentioned, the basic application presented above does not present the complete process to recover from failure, but it was just presented to describe how the build a recovery module. In case of the OTS protocol, let’s consider how a recovery module that manages recovery of OTS resources can be configured. 
+		</para>
+	</formalpara>
+		<para>
+			To manage recovery in case of failure, the OTS specification has defined a recovery protocol. Transaction’s participants in a doubt status could use the RecoveryCoordinator to determine the status of the transaction. According to that transaction status, those participants can take appropriate decision either by roll backing or committing. Asking the RecoveryCoordinator object to determine the status consists to invoke the replay_completion operation on the RecoveryCoordinator.
+		</para>
+		<para>
+			For each OTS Resource in a doubt status, it is well known which RecoveyCoordinator to invoke to determine the status of the transaction in which the Resource is involved – It’s the RecoveryCoordinator returned during the Resource registration process. Retrieving such RecoveryCoordinator per resource means that it has been stored in addition to other information describing the resource. 
+		</para>
+		<para>
+			A recovery module dedicated to recover OTS Resources could have the following behavior. When requested by the recovery Manager on the first pass it retrieves from the disk the list of resources that are in the doubt status. During the second pass, if the resources that were retrieved in the first pass still remain in the disk then they are considered as candidates for recovery. Therefore, the Recovery Module retrieves for each candidate its associated RecoveryCoordinator and invokes the replay_completion operation that the status of the transaction. According to the returned status, an appropriate action would be taken (for instance, rollback the resource is the status is aborted or inactive).
+		</para>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-TransactionStatusConnectionManager">
+		<title>TransactionStatusConnectionManager</title>
+		<para>
+			The TransactionStatusConnectionManager object is used by the recovery modules to retrieve the status of transactions and acts like a proxy for TransactionStatusManager objects. It maintains a table of TransactionStatusConnector obects each of which connects to a TransactionStatusManager object in an Application Process.
+		</para>
+		<para>
+			The transactions status is retrieved using the getTransactionStatus methods which take a transaction Uid and if available a transaction type as parameters. The process Uid field in the transactions Uid parameter is used to lookup the target TransactionStatusManagerItem host/port pair in the Object Store. The host/port pair are used to make a TCP connection to the target TransactionStatusManager object by a TransactionStatusConnector object. The TransactionStatusConnector passes the transaction Uid/transaction type to the TransactionStatusManager in order to retrieve the transactions status.
+		</para>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-Expired_Scanner_Thread">
+		<title>Expired Scanner Thread</title>
+		<para>
+			When the Recovery Manager initialises an expiry scanner thread ExpiryEntryMonitor is created which is used to remove long dead items from the ObjectStore. A number of scanner modules are dynamically loaded which remove long dead items for a particular type.
+		</para>
+		<para>
+			Scanner modules are loaded at initialisation and are specified as properties beginning with
+		</para>
+<screen>com.arjuna.ats.arjuna.recovery.expiryScanner&lt;Scanner Name&gt;=&lt;Scanner Class&gt;
+</screen>
+		<para>
+			All the scanner modules are called periodically to scan for dead items by the ExpiryEntryMonitor thread. This period is set with the property:
+		</para>
+<screen>
+com.arjuna.ats.arjuna.recovery.expiryScanInterval
+</screen>
+		<para>
+			All scanners inherit the same behaviour from the java interface <interfacename>ExpiryScanner</interfacename> as illustrated in diagram below:
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/ExpiryScanner.png" format="PNG" />
+			</imageobject>
+		</mediaobject>
+		<para>
+			A scan method is provided by this interface and implemented by all scanner modules, this is the method that gets called by the scanner thread.
+		</para>
+		<para>
+			The ExpiredTransactionStatusManagerScanner removes long dead TransactionStatusManagerItems from the Object Store. These items will remain in the Object Store for a period of time before they are deleted. This time is set by the property:
+		</para>
+<screen>
+	com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime
+</screen>
+		<para>
+			(default 12 hours)
+		</para>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-Application_Process">
+		<title>Application Process</title>
+			<para>
+				This represents the user transactional program. A Local transaction (hash) table, maintained within the running application process keeps trace of the current status of all transactions created by that  application process, The Recovery Manager needs access to the transaction tables so that it can determine whether a transaction is still in progress, if so then recovery does not happen.
+			</para>
+			<para>
+				The transaction tables are accessed via the TransactionStatusManager object. On application program initialisation the host/port pair that represents the TransactionStatusManager is written to the Object Store in '../Recovery/TransactionStatusManager’ part of the Object Store file hierarchy and identified by the process Uid of the application process.
+			</para>
+			<para>
+				The Recovery Manager uses the TransactionStatusConnectionManager object to retrieve the status of a transaction and a TransactionStatusConnector object is used to make a TCP connection to the TransactionStatusManager.
+			</para>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-TransactionStatusManager">
+		<title>TransactionStatusManager</title>
+		<para>
+			This object acts as an interface for the Recovery Manager to obtain the status of transactions from running HPTS application processes. One TransactionStatusManager is created per application process by the class com.arjuna.ats.arjuna.coordinator.InitAction. Currently a tcp connection is used for communication between the RecoveryManager and TransactionStatusManager. Any free port is used by the TransactionStatusManager by default, however the port can be fixed with the property:
+		</para>
+<screen>
+com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort
+</screen>
+		<para>
+			On creation the TransactionStatusManager obtains a port which it stores with the host in the Object Store as a TransactionStatusManagerItem. A Listener thread is started which waits for a connection request from a TransactionStatusConnector. When a connection is established a Connection thread is created which runs a Service (AtomicActionStatusService)  which accepts a transaction Uid and a transaction type (if available) from a TransactionStatusConnector, the transaction status is obtained from the local thransaction table and returned back to the TransactionStatusConnector.
+		</para>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-Architecture_of_the_Recovery_Manager-Object_Store">
+		<title>Object Store</title>
+		<para>
+			All objects are stored in a file path which is equivalent to their class inheritance. Thus AtomicAction transactions are stored in file path ../StateManager/BasicAction/AtomicAction.
+		</para>
+		<para>
+			All objects are identified by a unique identifier Uid. One of the values of which is a process id in which the object was created. The Recovery Manager uses the process id to locate transaction status manager items when contacting the originator application process for the transaction status.
+		</para>
+	</section>
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="book-Transactions_Failure_Recovery_Guide-Product_Name_and_Version">
+	<title>JBoss Transactions Failure Recovery Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>4</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.2</productnumber>
+	<abstract>
+		<para>This book is the Enterprise Application Platform edition of the JBoss Transactions Failure Recovery Guide</para></abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
+			</imageobject>
+			<textobject>
+				<phrase>Logo</phrase>
+			</textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+</bookinfo>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,346 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Failure_Recovery_Guide-How_JBossTS_manages_the_OTS_Recovery_Protocol">
+	<title>How JBossTS manages the OTS Recovery Protocol</title>
+	<para>
+	</para>
+	<section id="sect-Transactions_Failure_Recovery_Guide-How_JBossTS_manages_the_OTS_Recovery_Protocol-Recovery_Protocol_in_OTS-Overview">
+		<title>Recovery Protocol in OTS-Overview</title>
+		<para>
+			To manage recovery in case of failure, the OTS specification has defined a recovery protocol. Transaction’s participants in a doubt status could use the RecoveryCoordinator to determine the status of the transaction. According to that transaction status, those participants can take appropriate decision either by roll backing or committing.
+		</para>
+		<para>
+			A reference to a RecoveryCoordinator is returned as a result of successfully calling register_resource on the transaction Coordinator. This object, which is implicitly associated with a single Resource, can be used to drive the Resource through recovery procedures in the event of a failure occurring during the transaction.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/RecoveryCoordinator.png" format="PNG"/>
+			</imageobject>
+			<caption>Resource and RecoveryCoordinator relationship.</caption>
+		</mediaobject>
+	</section>
+	
+	<section id="sect-Transactions_Failure_Recovery_Guide-How_JBossTS_manages_the_OTS_Recovery_Protocol-RecoveryCoordinator_in_JBossTS">
+		<title>RecoveryCoordinator in JBossTS</title>
+		<para>
+			On each resource registration a RecoveryCoordinator Object is expected to be created and returned to the application that invoked the register_resource operation. Behind each CORBA object there should be an object implementation or Servant object, in POA terms, which performs operations made on a RecoveryCoordinator object. Rather than to create a RecoveryCoordinator object with its associated servant on each register_resource, JBossTS enhances performance by avoiding the creation of servants but it relies on a default RecoveryCoordinator object with it’s associated default servant to manage all replay_completion invocations. 
+		</para>
+		<para>
+			In the next sections we first give an overview of the Portable Object Adapter architecture, then we describe how this architecture is used to provide RecoveryCoordinator creation with optimization as explained above. 
+		</para>
+		<formalpara>
+			<title>Understanding POA</title>
+			<para>
+				Basically, the Portable Object Adapter, or POA is an object that intercepts a client request and identifies the object that satisfies the client request. The Object is then invoked and the response is returned to the client. 
+			</para>
+		</formalpara>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/POA.png" format="PNG"/>
+			</imageobject>
+			<caption>Overview of the POA.</caption>
+		</mediaobject>
+		<para>
+			The object that performs the client request is referred as a servant, which provides the implementation of the CORBA object requested by the client. A servant provides the implementation for one or more CORBA object references. To retreive a servant, each POA maintains an Active Object Map that maps all objects that have been activated in the POA to a servant. For each incoming request, the POA looks up the object reference in the Active Object Map and tries to find the responsible servant. If none is found, the request is either delegated to a default servant, or a servant manager is invoked to activate or locate an appropriate servant.  In addition to the name space for the objects, which are identified by Object Ids, a POA also provides a name space for POAs. A POA is created as a child of an existing POA, which forms a hierarchy starting with the root POA.
+		</para>
+		<para>
+			Each POA has a set of policies that define its characteristics. When creating a new POA, the default set of policies can be used or different values can be assigned that suit the application requirements. The POA specification defines:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>Thread policy:</emphasis> Specifies the threading model to be used by the POA. Possible values are:
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							ORB_CTRL_MODEL (default): The POA is responsible for assigning requests to threads.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							SINGLE_THREAD_MODEL: The POA processes requests sequentially 
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>Lifespan policy:</emphasis> Specifies the lifespan of the objects implemented in the POA. The lifespan policy can have the following values: 
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							TRANSIENT (Default) Objects implemented in the POA cannot outlive the  process in which they are first created. Once the POA is deactivated, an OBJECT_NOT_EXIST exception occurs when attempting to use any object references generated by the POA.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							PERSISTENT Objects implemented in the POA can outlive the process in which they are first created.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					Object ID Uniqueness policy: Allows a single servant to be shared by many abstract objects. The Object ID Uniqueness policy can have the following values: 
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							UNIQUE_ID (Default): Activated servants support only one Object ID. 
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							MULTIPLE_ID: Activated servants can have one or more Object IDs. The Object ID must be determined within the method being invoked at run time.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					ID Assignment policy: Specifies whether object IDs are generated by server applications or by the POA. The ID Assignment policy can have the following values:
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							USER_ID is for persistent objects, and 
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							SYSTEM_ID is for transient objects.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					Servant Retention policy: Specifies whether the POA retains active servants in the Active Object Map. The Servant Retention policy can have the following values: 
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							RETAIN (Default) The POA tracks object activations in the Active Object Map. RETAIN is usually used with ServantActivators or explicit activation methods on POA.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							NON_RETAIN The POA does not retain active servants in the Active Object Map. NON_RETAIN is typically used with ServantLocators.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					Request Processing policy: Specifies how requests are processed by the POA.
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							USE_ACTIVE_OBJECT_MAP (Default): If the Object ID is not listed in the Active Object Map, an OBJECT_NOT _EXIST exception is returned. The POA must also use the RETAIN policy with this value.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							USE_DEFAULT_SERVANT: If the Object ID is not listed in the Active Object Map or the NON_RETAIN policy is set, the request is dispatched to the default servant. If no default servant has been registered, an OBJ_ADAPTER exception is returned. The POA must also use the MULTIPLE_ID policy with this value.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							USE_SERVANT_MANAGER: If the Object ID is not listed in the Active Object Map or the NON_RETAIN policy is set, the servant manager is used to obtain a servant.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					Implicit Activation policy: Specifies whether the POA supports implicit activation of servants. The Implicit Activation policy can have the following values:
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							IMPLICIT_ACTIVATION: The POA supports implicit activation of servants.  Servants can be activated by converting them to an object reference with <methodname>org.omg.PortableServer.POA.servant_to_reference()</methodname> or by invoking <methodname>_this()</methodname> on the servant. The POA must also use the SYSTEM_ID and RETAIN policies with this value.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							NO_IMPLICIT_ACTIVATION (Default): The POA does not support implicit activation of servants.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+		</itemizedlist>
+		<para>
+			It appears that to redirect replay_completion invocations to a default servant we need  to create a POA with the Request Processing policy assigned with the value set to USE_DEFAULT_SERVANT. However to reach that default Servant we should first reach the POA that forward the request to the default servant. Indeed, the ORB uses a set of information to retrieve a POA; these information are contained in the object reference used by the client. Among these information there are the IP address and the port number where resides the server and also the POA name. JBossTS provides one servant per machine to perform replay_completion invocations. This servant is located in the RecoveryManager process. The RecoveryManager process is a separate process from the client and server applications. The next section explains how the indirection to a default Servant located on a separate process is provided for ORBIX and for JacORB. 
+		</para>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-How_JBossTS_manages_the_OTS_Recovery_Protocol-The_default_RecoveryCoordinator_in_Orbix">
+		<title>The default RecoveryCoordinator in Orbix</title>
+		<para>
+			Within Orbix, objects are located by the Location Deamon. To avoid the overhead of using the location daemon, Orbix provides a mechanism named <emphasis>Direct Persistence</emphasis> allowing generating persistent object references. This mechanism is in fact a proprietary policy named, DIRECT_PERSISTENCE. A POA with policies of PERSISTENT and DIRECT_PERSISTENCE generates IORs that contain a well-known address for the server process. A POA that uses direct persistence must also tell each transport mechanism such as IIOP where in the configuration file it can find the well-known address that it should use. This is done by creating a <code>WellKnownAddressingPolicy</code> object and setting its value to the configuration scope that contains the well-known address. 
+		</para>
+		<para>
+			To specify the address used by the <code>WellKnownAddressingPolicy</code> object, JBossTS uses the Orbix mechanism that allows specifying an ORB/POA names. The following configuration modifications are necessary to define the well-know address of the RecoveryCoordinator performing replay_completion invocation. 
+		</para>
+		<note>
+			<para>
+				Note that this configuration is also necessary to support transaction context propagation and interposition.
+			</para>
+		</note>
+		<para>
+			A new orb name domain called arjuna should be created within the main Orbix 2000 domain being used by the application. It requires the following format:
+		</para>
+<screen>
+arjuna
+{
+	portable_interceptor
+	{
+		orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop", "portable_interceptor"];
+	
+		ots_recovery_coordinator
+		{
+			recovery_coordinator:iiop:addr_list = [“&lt;name&gt;:&lt;port&gt;”];
+		};
+			
+		ots_transaction
+		{
+			transaction:iiop:addr_list = [“+&lt;name&gt;:&lt;port&gt;”];
+		};     
+		ots_context
+		{
+			binding:client_binding_list = ["OTS_Context", "OTS_Context+GIOP+SIOP", "GIOP+SIOP", "OTS_Context+GIOP+IIOP", "GIOP+IIOP"];
+			binding:server_binding_list = ["OTS_Context", ""];
+		};
+					
+		ots_interposition
+		{
+			binding:client_binding_list = ["OTS_Interposition", "OTS_Interposition+GIOP+SIOP", "GIOP+SIOP", "OTS_Interposition+GIOP+IIOP", "GIOP+IIOP"];
+			binding:server_binding_list = ["OTS_Interposition", ""];
+		};
+	};
+};
+</screen>
+		<para>
+			The &lt;name&gt; field should be substituted by the name of the machine on which JBossTS is being run. The &lt;port&gt; field should be an unused port on which the JBossTS recovery manager may listen for recovery requests. 
+		</para>
+		<para>
+			Because of the way in which Orbix works with persistent POAs, if you want crash recovery support for your applications you must use one of the  Arjuna ORB names provided (context or interposition) when running your clients and services. When using transaction context propagation only, the<parameter>–ORBname arjuna.portable_interceptor.ots_context</parameter> parameter should be passed to the client and server. When using context propagation and interposition, the <parameter>–ORBname.arjuna.portable_interceptor.ots_interposition</parameter> parameter should be used. For example:
+		</para>
+<screen>
+java mytest –ORBname arjuna.portable_interceptor.ots_context
+</screen>
+		<formalpara>
+			<title>How it works</title>
+			<para>
+				When the Recovery Manager is launched it seeks in the configuration the RecoveryActivator that need be loaded. Once done it invokes the <methodname>startRCservice</methodname> method of each loaded instances. As seen in in the previous chapter (Recovery Manager) the class to load that implements the <interfacename>RecoveryActivator</interfacename> interface  is the class <classname>RecoveryEnablement</classname>. This generic class, located in the package <package>com.arjuna.ats.internal.jts.orbspecific.recovery</package>, hides the nature of the ORB being used by the application. The following figure illustrates the behavior of the <interfacename>RecoveryActivator</interfacename> that leads to the creation of the default servant that performs all replay_invocations requests. 
+			</para>
+		</formalpara>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Recovery_Manager.png" format="PNG"/>
+			</imageobject>
+			<caption>The Recovery Manager and the creation of the default servant for RecoveryCoordinator.</caption>
+		</mediaobject>
+		<note>
+			<para>
+				There is one recovery Manager Process per machine, then one default servant per machine. Performing all replay_completion invocations means those made on the same machine.
+			</para>
+		</note>
+		<para>
+			When started, the application, using JBossTS in library mode, is launched a child POA is created with the same policies as those defined within the Recovery Manager. This child POA is used to create object references, for RecoveryCoordinator CORBA objects, that need to be returned on register_resource invocations, as illustrated in figure below. The Object reference created has an Object ID that contains the transaction ID in progress and the Process Identifier of the application. 
+		</para>
+		<note>
+			<para>
+				If the Transaction Service is used in the stand-alone mode, the behavior to create object reference to RecoveryCoordinator objects is exactly the same; the process ID used in the Object ID is the Transaction Service process ID
+			</para>
+		</note>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Application_Process.png" format="PNG"/>
+			</imageobject>
+			<caption>Resource registration and returned RecoveryCoordinator Object reference.</caption>
+		</mediaobject>
+		<para>
+			Having the object reference of the RecoveryCoordinator, an application can use it to determine the status of the transaction for which that object reference is created. When a RecoveryCoordinator, according to POA policies is assigned to the POA included in the object reference, the request is forward straight to the default servant defined in the Recovery Manager, as described in the figure below. 
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Transaction_Process.png" format="PNG"/>
+			</imageobject>
+			<caption>replay_completion invocation forwarded to the default RecoveryCoordinator .</caption>
+		</mediaobject>
+		<para>
+			The flow described in the figure can be depicted as follow:
+		</para>
+		<orderedlist>
+			<listitem>
+				<para>
+					The participant invokes the replay_completion operation on RecoveryCoordinator object using the object reference returned by the Transaction Server.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The request is forwarded to the Recovery Manager process since the Well-known-address policy is used to retrieve. 
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The child POA responsible to locate the servant is retrieved.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					After looking to the Active Object Map, the child POA invokes the default servant to perform the request. Note that the Object ID conveyed by the object reference is not retrieved in the AOP. 
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The servant extracts from the request the Object ID that contains the Transaction ID and the process ID of the Transaction Server process. To determine if the process still alive, the TransactionStatusConnectionManager functionalities are used.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					According to the presence or not of the Transaction Server process and eventually the returned status, the servant returns the status of the transaction asked by the participant.
+				</para>
+			</listitem>
+		</orderedlist>
+	</section>
+	<section id="sect-Transactions_Failure_Recovery_Guide-How_JBossTS_manages_the_OTS_Recovery_Protocol-The_default_RecoveryCoordinator_in_JacOrb">
+		<title>The default RecoveryCoordinator in JacOrb</title>
+		<para>
+			JacORB does not define additional policies to redirect any request on a RecoveryCoordinator object to a default servant located in the Recovery Manager process. However it provides a set of APIs that allows building object references with specific IP address, port number and POA name in order to reach the appropriate default servant.
+		</para>
+		<formalpara>
+			<title>How it works</title>
+			<para>
+				When the Recovery Manager is launched it seeks in the configuration the RecoveryActivator that need be loaded. Once done it invokes the <methodname>startRCservice</methodname> method of each loaded instances. As seen in in the previous chapter (Recovery Manager ) the class to load that implements the <interfacename>RecoveryActivator</interfacename> interface  is the class <classname>RecoveryEnablement</classname>. This generic class, located in the package <package>com.arjuna.ats.internal.jts.orbspecific.recovery</package>, hides the nature of the ORB being used by the application (JacORB). The following figure illustrates the behavior of the <interfacename>RecoveryActivator</interfacename> that leads to the creation of the default servant that performs replay_completion invocations requests. 
+			</para>
+		</formalpara>
+		<para>
+			In addition to the creation of the default servant, an object reference to a <code>RecoveryCoordinator</code> object is created and stored in the ObjectStore. As we will see this object reference will be used to obtain its IP address, port number and POA name and assign them to any <code>RecoveryCoordinator</code> object reference created on register_resource. 
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Recover_Manager_Flow.png" format="PNG"/>
+			</imageobject>
+			<caption>replay_completion invocation forwarded to the default RecoveryCoordinator.</caption>
+		</mediaobject>
+		<para>
+			When an application registers a resource with a transaction, a <code>RecoveryCoordinator</code> object reference is expected to be returned. To build that object reference, the Transaction Service uses the RecoveryCoordinator object reference created within the Recovery Manager as a template. The new object reference contains practically the same information to retrieve the default servant (IP address, port number, POA name, etc.), but the Object ID is changed; now, it contains the Transaction ID of the transaction in progress and also the Process ID of the process that is creating the new <code>RecoveryCoordinator</code> object reference, as illustrated below. 
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/RecoverCoordinator_Object.png" format="PNG"/>
+			</imageobject>
+			<caption>Resource registration and returned RecoveryCoordinator Object reference build from a reference stored in the ObjectStore.</caption>
+		</mediaobject>
+		<para>
+			Since a <code>RecoveryCoordintaor</code> object reference returned to an application contains all information to retrieve the POA then the default servant located in the Recovery Manager, all replay_completion invocation, per machine, are forwarded to the same default <code>RecoveryCoordinator</code> that is able to retreive the Object ID from the incoming request to extract the transaction identifier and the process identifier needed to determine the status of the requested transaction.
+		</para>
+	</section>
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_Failure_Recovery_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,13 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Architecture_of_the_Recovery_Manager.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="How_JBossTS_managers_the_OTS_Recovery_Protocol.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Preface.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="Transactions_Failure_Recovery_Guide-Preface">
+	<title>Preface</title>
+	<para>
+	</para>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"> 
+		<xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+			<xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+		</xi:fallback>
+	</xi:include>
+</preface>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Application_Process.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Application_Process.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Crash_Recovery_Architecture.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Crash_Recovery_Architecture.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/ExpiryScanner.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/ExpiryScanner.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/ObjectStore.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/ObjectStore.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/POA.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/POA.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/RecoverCoordinator_Object.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/RecoverCoordinator_Object.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recover_Manager_Flow.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recover_Manager_Flow.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recovery.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recovery.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/RecoveryCoordinator.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/RecoveryCoordinator.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recovery_Manager.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Recovery_Manager.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Resource-initiated_Recovery.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Resource-initiated_Recovery.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Transaction_Process.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/Transaction_Process.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Appendix.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1469 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:6
+#, no-c-format
+msgid "Architecture of the Recovery Manager"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:8
+#, no-c-format
+msgid "Crash Recovery Overview"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:9
+#, no-c-format
+msgid ""
+"The main architectural components within Crash Recovery are illustrated in "
+"the diagram below:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:17
+#, no-c-format
+msgid ""
+"The Recovery Manager is a daemon process responsible for performing crash "
+"recovery. Only one Recovery Manager runs per node. The Object Store provides "
+"persistent data storage for transactions to log data. During normal "
+"transaction processing each transaction will log persistent data needed for "
+"the commit phase to the Object Store. On successfully committing a "
+"transaction this data is removed, however if the transaction fails then this "
+"data remains within the Object Store."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:20
+#, no-c-format
+msgid "The Recovery Manager functions by:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:25
+#, no-c-format
+msgid ""
+"Periodically scanning the Object Store for transactions that may have "
+"failed. Failed transactions are indicated by the presence of log data after "
+"a period of time that the transaction would have normally been expected to "
+"finish."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:30
+#, no-c-format
+msgid ""
+"Checking with the application process which originated the transaction "
+"whether the transaction is still in progress or not."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:35
+#, no-c-format
+msgid ""
+"Recovering the transaction by re-activating the transaction and then "
+"replaying phase two of the commit protocol."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:40
+#, no-c-format
+msgid ""
+"The following sections describe the architectural components in more detail"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:46
+#, no-c-format
+msgid "Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:47
+#, no-c-format
+msgid ""
+"On initialization the Recovery Manager first loads in configuration "
+"information via a properties file. This configuration includes a number of "
+"recovery activators and recovery modules, which are then dynamically loaded."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:50
+#, no-c-format
+msgid ""
+"Since the version 3.0 of JBossTS, the Recovery Manager is not specifically "
+"tied to an Object Request Broker or ORB. Hence, the OTS recovery protocol is "
+"not implicitly enabled. To enable such protocol, we use the concept of "
+"recovery activator, defined with the interface "
+"<interfacename>RecoveryActivator</interfacename>, which is used to "
+"instantiate a recovery class related to the underlying communication "
+"protocol. For instance, when used with OTS, the "
+"<interfacename>RecoveryActivitor</interfacename> has the responsibility to "
+"create a RecoveryCoordinator object able to respond to the replay_completion "
+"operation."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:53
+#, no-c-format
+msgid ""
+"All <interfacename>RecoveryActivator</interfacename> instances inherit the "
+"same interface. They are loaded via the following recovery extension "
+"property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:56
+#, no-c-format
+msgid ""
+"&lt;property  \n"
+"                   name=\"com.arjuna.ats.arjuna.recovery."
+"recoveryActivator_&lt;number&gt;\" value=\"RecoveryClass\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:57
+#, no-c-format
+msgid ""
+"For instance the <interfacename>RecoveryActivator</interfacename> provided "
+"in the distribution of JTS/OTS, which shall not be commented, is as follow:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:60
+#, no-c-format
+msgid ""
+"&lt;property \n"
+"        name=\"com.arjuna.ats.arjuna.recovery.recoveryActivator_1\" value="
+"\"com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:61
+#, no-c-format
+msgid ""
+"When loaded all <interfacename>RecoveryActivator</interfacename> instances "
+"provide the method <methodname>startRCservice</methodname> invoked by the "
+"Recovery Manager and used to create the appropriate Recovery Component able "
+"to receive recovery requests according to a particular transaction protocol. "
+"For instance the RecoveryCoordinator defined by the OTS protocol."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:64
+#, no-c-format
+msgid ""
+"Each recovery module is used to recover a different type of transaction/"
+"resource, however each recovery module inherits the same basic behavior."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:67
+#, no-c-format
+msgid ""
+"Recovery consists of two separate passes/phases separated by two timeout "
+"periods. The first pass examines the object store for potentially failed "
+"transactions; the second pass performs crash recovery on failed "
+"transactions. The timeout between the first and second pass is known as the "
+"backoff period. The timeout between the end of the second pass and the start "
+"of the first pass is the recovery period. The recovery period is larger than "
+"the backoff period."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:70
+#, no-c-format
+msgid ""
+"The Recovery Manager invokes the first pass upon each recovery module, "
+"applies the backoff period timeout, invokes the second pass upon each "
+"recovery module and finally applies the recovery period timeout before "
+"restarting the first pass again."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:73
+#, no-c-format
+msgid ""
+"The recovery modules are loaded via the following recovery extension "
+"property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:76
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension&lt;number&gt;=&lt;"
+"RecoveryClass&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:77
+#, no-c-format
+msgid ""
+"The backoff period and recovery period are set using the following "
+"properties:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:80
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod        (default 10 "
+"secs)\n"
+"com.arjuna.ats.arjuna.recovery.periodicRecovery                (default 120 "
+"secs)"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:81
+#, no-c-format
+msgid "The following java classes are used to implement the Recovery Manager:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:86
+#, no-c-format
+msgid "package <package>com.arjuna.ats.arjuna.recovery</package>:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:91
+#, no-c-format
+msgid ""
+"RecoveryManager: The daemon process that starts up by instantiating an "
+"instance of the RecoveryManagerImple class."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:96
+#, no-c-format
+msgid "RecoveryEnvironment: Properties used by the recovery manager."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:101
+#, no-c-format
+msgid ""
+"RecoveryConfiguration: Specifies the name of the Recovery Manager property "
+"file. (for instance, RecoveryManager-properties.xml)"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:108
+#, no-c-format
+msgid "package <package>com.arjuna.ats.internal.ts.arjuna.recovery</package>:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:113
+#, no-c-format
+msgid ""
+"RecoveryManagerImple: Creates and starts instances of the "
+"RecActivatorLoader, the PeriodicRecovery thread and the ExpiryEntryMonitor "
+"thread."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:118
+#, no-c-format
+msgid ""
+"RecActivatorLoader: Dynamically loads in the RecoveryActivator specified in "
+"the Recovery Manager property file. Each RecoveryActicator is specified as a "
+"recovery extension in the properties file."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:123
+#, no-c-format
+msgid ""
+"PeriodicRecovery: Thread which loads each recovery module, then calls the "
+"first pass method for each module, applies the backoff period timeout, calls "
+"the second pass method for each module and applies the recovery period "
+"timeout."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:128
+#, no-c-format
+msgid ""
+"RecoveryClassLoader: Dynamically loads in the recovery modules specified in "
+"the Recovery Manager property file. Each module is specified as a recovery "
+"extension in the properties file (for instance, com.arjuna.ats.arjuna."
+"recovery.recoveryExtension1= com.arjuna.ats.internal.ts.arjuna.recovery."
+"AtomicActionRecoveryModule)."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:136
+#, no-c-format
+msgid ""
+"By default, the recovery manager listens on the first available port on a "
+"given machine. If you wish to control the port number that it uses, you can "
+"specify this using the com.arjuna.ats.arjuna.recovery.recoveryPort attribute."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:141
+#, no-c-format
+msgid "Embedding the Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:142
+#, no-c-format
+msgid ""
+"In some situations it may be required to embed the RecoveryManager in the "
+"same process as the transaction service. In this case you can create an "
+"instance of the RecoveryManager through the manager method on com.arjuna.ats."
+"arjuna.recovery.RecoveryManager. A RecoveryManager can be created in one of "
+"two modes, selected via the parameter to the manager method:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:148
+#, no-c-format
+msgid ""
+"INDIRECT_MANAGEMENT: the manager runs periodically but can also be "
+"instructed to run when desired via the scan operation or through the "
+"RecoveryDriver class to be described below."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:153
+#, no-c-format
+msgid ""
+"DIRECT_MANAGEMENT: the manager does not run periodically and must be driven "
+"directly via the scan operation or RecoveryDriver."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:159
+#, no-c-format
+msgid "Managing recovery directly"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:160
+#, no-c-format
+msgid ""
+"As already mentioned, recovery typically happens at periodic intervals. If "
+"you require to drive recovery directly, then there are two options, "
+"depending upon how the RecoveryManager has been created."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:165
+#, no-c-format
+msgid "Seperate Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:166
+#, no-c-format
+msgid ""
+"You can either use the com.arjuna.ats.arjuna.tools.RecoveryMonitor program "
+"to send a message to the Recovery Manager instructing it to perform "
+"recovery, or you can create an instance of the com.arjuna.ats.arjuna."
+"recovery.RecoveryDriver class to do likewise. There are two types of "
+"recovery scan available:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:172
+#, no-c-format
+msgid ""
+"ASYNC_SCAN: here a message is sent to the RecoveryManager to instruct it to "
+"perform recovery, but the response returns before recovery has completed."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:177
+#, no-c-format
+msgid ""
+"SYNC: here a message is sent to the RecoveryManager to instruct it to "
+"perform recovery, and the response occurs only when recovery has completed."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:183
+#, no-c-format
+msgid "In process Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:184
+#, no-c-format
+msgid ""
+"You can invoke the scan operation on the RecoveryManager. This operation "
+"returns only when recovery has completed. However, if you wish to have an "
+"asynchronous interaction pattern, then the RecoveryScan interface is "
+"provided:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:188
+#, no-c-format
+msgid ""
+"public interface RecoveryScan\n"
+"{\n"
+"        public void completed ();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:189
+#, no-c-format
+msgid ""
+"An instance of an object supporting this interface can be passed to the scan "
+"operation and its completed method will be called when recovery finishes. "
+"The scan operation returns immediately, however."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:195
+#, no-c-format
+msgid "Recovery Modules"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:196
+#, no-c-format
+msgid ""
+"As stated before each recovery module is used to recover a different type of "
+"transaction/resource, but each recovery module must implement the following "
+"RecoveryModule interface, which defines two methods: "
+"<methodname>periodicWorkFirstPass</methodname> and "
+"<methodname>periodicWorkSecondPass</methodname> invoked by the Recovery "
+"Manager."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:199
+#, no-c-format
+msgid ""
+"public interface RecoveryModule\n"
+"{\n"
+"        /**\n"
+"        * Called by the RecoveryManager at start up, and then\n"
+"        * PERIODIC_RECOVERY_PERIOD seconds after the completion, for all   \n"
+"        * RecoveryModules of the second pass\n"
+"        */\n"
+"        public void periodicWorkFirstPass ();\n"
+"        \n"
+"        /**\n"
+"        * Called by the RecoveryManager RECOVERY_BACKOFF_PERIOD seconds\n"
+"        * after the completion of the first pass\n"
+"        */\n"
+"        public void periodicWorkSecondPass ();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:201
+#, no-c-format
+msgid "JBossTS Recovery Module Classes"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:202
+#, no-c-format
+msgid ""
+"JBossTS provides a set of recovery modules that are responsible to manage "
+"recovery according to the nature of the participant and its position in a "
+"transactional tree. The provided classes (that all implements the "
+"<interfacename>RecoveryModule</interfacename> interface) are:"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:209
+#, no-c-format
+msgid "com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:210
+#, no-c-format
+msgid "Recovers AtomicAction transactions."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:217
+#, no-c-format
+msgid "com.arjuna.ats.internal.txoj.recovery.TORecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:218
+#, no-c-format
+msgid "Recovers Transactional Objects for Java."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:225
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jts.recovery.transactions.TransactionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:226
+#, no-c-format
+msgid ""
+"Recovers JTS Transactions. This is a generic class from which TopLevel and "
+"Server transaction recovery modules inherit, respectively"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jts.recovery.transactions."
+"TopLevelTransactionRecoveryModule"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:240
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jts.recovery.transactions."
+"ServerTransactionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:246
+#, no-c-format
+msgid ""
+"To illustrate the behavior of a recovery module, the following pseudo code "
+"describes the basic algorithm used for Atomic Action transactions and "
+"Transactional Objects for java."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:250
+#, no-c-format
+msgid "AtomicAction pseudo code"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:251
+#, no-c-format
+msgid "First Pass:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:255
+#, no-c-format
+msgid ""
+"&lt; create a transaction vector for transaction Uids. &gt;\n"
+"&lt; read in all transactions for a transaction type AtomicAction. &gt;\n"
+"while &lt; there are transactions in the vector of transactions. &gt;\n"
+"do\n"
+"        &lt; add the transaction to the vector of transactions. &gt;\n"
+"end while."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:256
+#: Architecture_of_the_Recovery_Manager.xml:265
+#, no-c-format
+msgid "Second Pass:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:259
+#, no-c-format
+msgid ""
+"while &lt; there are transactions in the transaction vector &gt;\n"
+"do\n"
+"        if &lt; the intention list for the transaction still exists &gt;\n"
+"        then\n"
+"                &lt; create new transaction cached item &gt;\n"
+"                &lt; obtain the status of the transaction &gt;\n"
+"                                        \n"
+"                if         &lt; the transaction is not in progress &gt;\n"
+"                then\n"
+"                        &lt; replay phase two of the commit protocol &gt;\n"
+"                endif.\n"
+"        endif.\n"
+"end while."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:261
+#, no-c-format
+msgid "Transactional Object pseudo code"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:262
+#, no-c-format
+msgid "First Pass"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:264
+#, no-c-format
+msgid ""
+"&lt; Create a hash table for uncommitted transactional objects. &gt;\n"
+"&lt; Read in all transactional objects within the object store. &gt;\n"
+"while &lt; there are transactional objects &gt;\n"
+"do\n"
+"        if         &lt; the transactional object has an Uncommited status in "
+"the object store &gt;\n"
+"        then\n"
+"                &lt; add the transactional Object o the hash table for "
+"uncommitted transactional objects&gt;\n"
+"        end if.\n"
+"end while."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:268
+#, no-c-format
+msgid ""
+"while &lt; there are transactions in the hash table for uncommitted "
+"transactional objects &gt;\n"
+"do\n"
+"        if &lt; the transaction is still in the Uncommitted state &gt;\n"
+"        then\n"
+"                if &lt; the transaction is not in the Transaction Cache "
+"&gt;\n"
+"                then\n"
+"                        &lt; check the status of the transaction with the "
+"original application process &gt;\n"
+"                        if &lt; the status is Rolled Back or the application "
+"process is inactive &gt;\n"
+"                                &lt; rollback the transaction by removing "
+"the Uncommitted status from the Object Store &gt;\n"
+"                        endif.\n"
+"                endif.\n"
+"        endif.\n"
+"end while."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:270
+#, no-c-format
+msgid "A Recovery Module for XA Resources"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:271
+#, no-c-format
+msgid ""
+"To manage recovery, we have seen in the previous chapter that the Recovery "
+"Manager triggers a recovery process by calling a set of recovery modules "
+"that implements the two methods defined by the "
+"<interfacename>RecoveryModule</interfacename> interface."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:275
+#, no-c-format
+msgid ""
+"To enable recovery of participants controlled via the <interfacename>XA</"
+"interfacename> interface, a specific recovery module named XARecoveryModule "
+"is provided. The XARecoveryModule, defined in the packages <package>com."
+"arjuna.ats.internal.jta.recovery.arjunacore</package> and <package>com."
+"arjuna.ats.internal.jta.recovery.jts</package>, handles recovery of "
+"<interfacename>XA</interfacename> resources (for example, databases) used in "
+"JTA."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:279
+#, no-c-format
+msgid ""
+"JBossTS supports two JTA implementations: a purely local version (no "
+"distributed transactions) and a version layered on the JTS. Recovery for the "
+"former is straightforward. In the following discussion we shall implicitly "
+"consider on the JTS implementation."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:283
+#, no-c-format
+msgid ""
+"Its behavior consists of two aspects: <emphasis>transaction-initiated</"
+"emphasis> and <emphasis>resource-initiated</emphasis> recovery. Transaction-"
+"initiated recovery is possible where the particular transaction branch had "
+"progressed far enough for a JTA Resource Record to be written in the "
+"ObjectStore, as illustrated in Figure 2."
+msgstr ""
+
+#. Tag: caption
+#: Architecture_of_the_Recovery_Manager.xml:290
+#, no-c-format
+msgid "JTA/JDBC information stored in the ObjectStore"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:292
+#, no-c-format
+msgid ""
+"A JTA Resource record contains the information needed to link the "
+"transaction, as known to the rest of JBossTS, to the database. Resource-"
+"initiated recovery is necessary for branches where a failure occurred after "
+"the database had made a persistent record of the transaction, but before the "
+"JTA ResourceRecord was persisted. Resource-initiated recovery is also "
+"necessary for datasources for which it is not possible to hold information "
+"in the JTA Resource record that allows the recreation in the RecoveryManager "
+"of the XAConnection/XAResource that was used in the original application."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:296
+#, no-c-format
+msgid ""
+"When running XA recovery it is necessary to tell JBossTS which types of Xid "
+"it can recover. Each Xid that JBossTS creates has a unique node identifier "
+"encoded within it and JBossTS will only recover transactions and states that "
+"match a specified node identifier. The node identifier to use should be "
+"provided to JBossTS via a property that starts with the name <property>com."
+"arjuna.ats.jta.xaRecoveryNode</property>; multiple values may be provided. A "
+"value of ‘*’ will force JBossTS to recover (and possibly rollback) all "
+"transactions irrespective of their node identifier and should be used with "
+"caution. The contents of <property>com.arjuna.ats.jta.xaRecoveryNode</"
+"property> should be alphanumeric and match the values of <property>com."
+"arjuna.ats.arjuna.xa.nodeIdentifier</property>."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:300
+#, no-c-format
+msgid ""
+"Transaction-initiated recovery is automatic. The XARecoveryModule finds the "
+"JTA Resource Record that need recovery, then uses the normal recovery "
+"mechanisms to find the status of the transaction it was involved in (i.e., "
+"it calls replay_completion on the RecoveryCoordinator for the transaction "
+"branch), (re)creates the appropriate XAResource and issues commit or "
+"rollback on it as appropriate. The XAResource creation will use the same "
+"information, database name, username, password etc., as the original "
+"application."
+msgstr ""
+
+#. Tag: caption
+#: Architecture_of_the_Recovery_Manager.xml:307
+#, no-c-format
+msgid "Transaction-Initiated Recovery and XA Recovery"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:309
+#, no-c-format
+msgid ""
+"Resource-initiated recovery has to be specifically configured, by supplying "
+"the Recovery Manager with the appropriate information for it to interrogate "
+"all the databases (XADataSources) that have been accessed by any JBossTS "
+"application. The access to each XADataSource is handled by a class that "
+"implements the <interfacename>com.arjuna.ats.jta.recovery."
+"XAResourceRecovery</interfacename> interface, as illustrated in Figure 4. "
+"Instances of classes that implements the XAResourceRecovery interface are "
+"dynamically loaded, as controlled by properties with names beginning "
+"<property>com.arjuna.ats.jta.recovery.XAResourceRecovery</property>."
+msgstr ""
+
+#. Tag: caption
+#: Architecture_of_the_Recovery_Manager.xml:316
+#, no-c-format
+msgid "Resource-initiated recovery and XA Recovery"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:319
+#, no-c-format
+msgid ""
+"JBossTS 3.3 <interfacename>XAConnectionRecovery</interfacename> was "
+"deprecated in favor of <interfacename>XAResourceRecovery</interfacename>. "
+"Although the old interface still exists at the moment, users are encouraged "
+"to migrate to the new interface."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:323
+#, no-c-format
+msgid ""
+"The XARecoveryModule will use the XAResourceRecovery implementation to get a "
+"XAResource to the target datasource. On each invocation of "
+"periodicWorkSecondPass, the recovery module will issue an XAResource.recover "
+"request – this will (as described in the XA specification) return a list of "
+"the transaction identifiers (Xid’s) that are known to the datasource and are "
+"in an indeterminate (in-doubt) state. The list of these in-doubt Xid’s "
+"received on successive passes (i.e. periodicWorkSecondPass-es) is compared. "
+"Any Xid that appears in both lists, and for which no JTA ResourceRecord was "
+"found by the intervening transaction-initiated recovery is assumed to belong "
+"to a transaction that was involved in a crash before any JTA ResourceRecord "
+"was written, and a rollback is issued for that transaction on the XAResource."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:326
+#, no-c-format
+msgid ""
+"This double-scan mechanism is used because it is possible the Xid was "
+"obtained from the datasource just as the original application process was "
+"about to create the corresponding JTA_ResourceRecord. The interval between "
+"the scans should allow time for the record to be written unless the "
+"application crashes (and if it does, rollback is the right answer)."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:329
+#, no-c-format
+msgid ""
+"An <classname>XAResourceRecovery</classname> implementation class can be "
+"written to contain all the information needed to perform recovery to some "
+"datasource. Alternatively, a single class can handle multiple datasources. "
+"The constructor of the implementation class must have an empty parameter "
+"list (because it is loaded dynamically), but the interface includes an "
+"initialise method which passes in further information as a string. The "
+"content of the string is taken from the property value that provides the "
+"class name: everything after the first semi-colon is passed as the value of "
+"the string. The use made of this string is determined by the "
+"<classname>XAResourceRecovery</classname> implementation class."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:332
+#, no-c-format
+msgid ""
+"For further details on the way to implement a class that implements the "
+"interface <interfacename>XAResourceRecovery</interfacename>, read the JDBC "
+"chapter of the JTA Programming Guide. An implementation class is provided "
+"that supports resource-initiated recovery for any XADataSource. This class "
+"could be used as a template to build your own implementation class."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:336
+#, no-c-format
+msgid "Writing a Recovery Module"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:337
+#, no-c-format
+msgid ""
+"In order to recover from failure, we have seen that the Recovery Manager "
+"contacts recovery modules by invoking periodically the methods "
+"<methodname>periodicWorkFirstPass</methodname> and "
+"<methodname>periodicWorkSecondPass</methodname>. Each Recovery Module is "
+"then able to manage recovery according to the type of resources that need to "
+"be recovered. The JBoss Transaction product is shipped with a set of "
+"recovery modules (TOReceveryModule, XARecoveryModule…), but it is possible "
+"for a user to define their own recovery module to fit their application. The "
+"following basic example illustrates the steps needed to build such recovery "
+"module"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:340
+#, no-c-format
+msgid "A basic scenario"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:341
+#, no-c-format
+msgid ""
+"This basic example does not aim to present a complete process to recover "
+"from failure, but mainly to illustrate the way to implement a recovery "
+"module."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:343
+#, no-c-format
+msgid ""
+"The application used here consists to create an atomic transaction, to "
+"register a participant within the created transaction and finally to "
+"terminate it either by commit or abort. A set of arguments are provided:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:348
+#, no-c-format
+msgid "to decide to commit or abort the transaction,"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:353
+#, no-c-format
+msgid "to decide generating a crash during the commitment process."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:358
+#, no-c-format
+msgid "The code of the main class that control the application is given below"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:361
+#, no-c-format
+msgid ""
+"package com.arjuna.demo.recoverymodule;\n"
+"        \n"
+"import com.arjuna.ats.arjuna.AtomicAction;\n"
+"import com.arjuna.ats.arjuna.coordinator.*;\n"
+"        \n"
+"public class TestRecoveryModule\n"
+"{\n"
+"        public static void main(String args[])\n"
+"        {\n"
+"                try \n"
+"                {\n"
+"                        AtomicAction tx = new AtomicAction();\n"
+"                        tx.begin(); // Top level begin\n"
+"        \n"
+"                        // enlist the participant \n"
+"                        tx.add(SimpleRecord.create());\n"
+"        \n"
+"                        System.out.println(\"About to complete the "
+"transaction \");\n"
+"                        for (int i = 0; i &lt; args.length; i++)\n"
+"                        {\n"
+"                                if ((args[i].compareTo(\"-commit\") == 0))\n"
+"                                _commit = true;\n"
+"                                if ((args[i].compareTo(\"-rollback\") == "
+"0))\n"
+"                                _commit = false;\n"
+"                                if ((args[i].compareTo(\"-crash\") == 0))\n"
+"                                _crash = true;\n"
+"                        }\n"
+"                        if (_commit)\n"
+"                                tx.commit();  // Top level commit\n"
+"                        else \n"
+"                                tx.abort();  // Top level rollback\n"
+"                        } catch(Exception e) {\n"
+"                        e.printStackTrace();\n"
+"                }\n"
+"        }\n"
+"        protected static boolean _commit = true;\n"
+"        protected static boolean _crash = false;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:362
+#, no-c-format
+msgid "The registered participant has the following behavior:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:367
+#, no-c-format
+msgid ""
+"During the prepare phase, it writes a simple message - <emphasis>I’m "
+"prepared</emphasis>- on the disk such The message is written in a well known "
+"file."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:372
+#, no-c-format
+msgid ""
+"During the commit phase, it writes another message - <emphasis>I’m "
+"committed</emphasis>- in the same file used during prepare."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:377
+#, no-c-format
+msgid ""
+"If it receives an abort message, it removes from the disk the file used for "
+"prepare if any."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:382
+#, no-c-format
+msgid ""
+"If a crash has been decided for the test, then it crashes during the commit "
+"phase – the file remains with the message <emphasis>I’m prepared</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:387
+#, no-c-format
+msgid ""
+"The main portion of the code illustrating such behavior is described "
+"hereafter."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:391
+#, no-c-format
+msgid "The location of the file given in variable filename can be changed"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:395
+#, no-c-format
+msgid ""
+"package com.arjuna.demo.recoverymodule;\n"
+"        \n"
+"import com.arjuna.ats.arjuna.coordinator.*;\n"
+"import java.io.File;\n"
+"        \n"
+"public class SimpleRecord extends AbstractRecord {\n"
+"        public String filename = \"c:/tmp/RecordState\";\n"
+"        public SimpleRecord() {\n"
+"                System.out.println(\"Creating new resource\");\n"
+"        }\n"
+"        \n"
+"        public static AbstractRecord create()\n"
+"        {\n"
+"                return new SimpleRecord() ;\n"
+"        }\n"
+"        \n"
+"        public int topLevelAbort()\n"
+"        {\n"
+"                try {\n"
+"                        File fd = new File(filename);\n"
+"                        if (fd.exists()){\n"
+"                                if (fd.delete())\n"
+"                                        System.out.println(\"File Deleted"
+"\");\n"
+"                        }\n"
+"        }\n"
+"        catch(Exception ex){…}\n"
+"                return TwoPhaseOutcome.FINISH_OK;\n"
+"        }\n"
+"        \n"
+"        public int topLevelCommit()\n"
+"        {\n"
+"                if (TestRecoveryModule._crash)\n"
+"                        System.exit(0);\n"
+"                try  {\n"
+"                        java.io.FileOutputStream file = new    \n"
+"                                java.io.FileOutputStream(filename);\n"
+"                        java.io.PrintStream pfile = new java.io.PrintStream"
+"(file);\n"
+"                        pfile.println(\"I'm Committed\");\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex) {...}\n"
+"                return TwoPhaseOutcome.FINISH_OK ;\n"
+"        }\n"
+"        \n"
+"        public int topLevelPrepare()\n"
+"        {\n"
+"                try {\n"
+"                        java.io.FileOutputStream file = new\n"
+"                                java.io.FileOutputStream(filename);\n"
+"                        java.io.PrintStream pfile = new java.io.PrintStream"
+"(file);\n"
+"                        pfile.println(\"I'm prepared\");\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex)  {...}\n"
+"                return  TwoPhaseOutcome.PREPARE_OK ;\n"
+"        }\n"
+"        …\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:396
+#, no-c-format
+msgid ""
+"The role of the Recovery Module in such application consists to read the "
+"content of the file used to store the status of the participant, to "
+"determine that status and print a message indicating if a recovery action is "
+"needed or not."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:399
+#, no-c-format
+msgid ""
+"package com.arjuna.demo.recoverymodule;\n"
+"        \n"
+"import com.arjuna.ats.arjuna.recovery.RecoveryModule;\n"
+"        \n"
+"public class SimpleRecoveryModule implements RecoveryModule\n"
+"{\n"
+"        public String filename = \"c:/tmp/RecordState\";\n"
+"        public SimpleRecoveryModule ()\n"
+"        {\n"
+"                System.out.println(\"The SimpleRecoveryModule is loaded\");\n"
+"        };\n"
+"        \n"
+"        public void periodicWorkFirstPass ()\n"
+"        {\n"
+"                try\n"
+"                {\n"
+"                        java.io.FileInputStream file = new \n"
+"                                java.io.FileInputStream(filename);\n"
+"                        java.io.InputStreamReader input = new \n"
+"                                java.io.InputStreamReader(file);\n"
+"                        java.io.BufferedReader reader = new java.io."
+"BufferedReader(input);\n"
+"                        String stringState = reader.readLine();\n"
+"                        if (stringState.compareTo(\"I'm prepared\") == 0)\n"
+"                                System.out.println(\"The transaction is in "
+"the prepared state\");\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex)\n"
+"                { System.out.println(\"Nothing found on the Disk\"); }\n"
+"        }\n"
+"        \n"
+"        public void periodicWorkSecondPass ()\n"
+"        {\n"
+"                try\n"
+"                {\n"
+"                        java.io.FileInputStream file = new \n"
+"                                java.io.FileInputStream(filename);\n"
+"                        java.io.InputStreamReader input = new \n"
+"                                java.io.InputStreamReader(file);\n"
+"                        java.io.BufferedReader reader = new java.io."
+"BufferedReader(input);\n"
+"                        String stringState = reader.readLine();\n"
+"                        if (stringState.compareTo(\"I'm prepared\") == 0)\n"
+"                        {\n"
+"                                System.out.println(\"The record is still in "
+"the prepared state – Recovery is needed\");\n"
+"                        }\n"
+"                        else if (stringState.compareTo(\"I'm Committed\") == "
+"0)\n"
+"                        {\n"
+"                                System.out.println(\"The transaction has "
+"completed and committed\");     \n"
+"                        }\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex)\n"
+"                { System.out.println(\"Nothing found on the Disk - Either "
+"there was \n"
+"                        no transaction or it as been rolled back\"); }\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:400
+#, no-c-format
+msgid ""
+"The recovery module should now be deployed in order to be called by the "
+"Recovery Manager. To do so, we just need to add an entry in the "
+"<filename>RecoveryManager-properties.xml</filename> by adding a new property "
+"as follow:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:403
+#, no-c-format
+msgid ""
+"&lt;property\n"
+"                 name=\"com.arjuna.ats.arjuna.recovery.recoveryExtension&lt;"
+"i&gt;\"\n"
+"        value=\"com.arjuna.demo.recoverymodule.SimpleRecoveryModule\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:404
+#, no-c-format
+msgid ""
+"Where &lt;i&gt; represent the new occurrence number that follows the last "
+"that already exists in the file. Once started, the Recovery Manager will "
+"automatically load the added Recovery module."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:408
+#, no-c-format
+msgid ""
+"The source of the code can be retrieved under the trailmap directory of the "
+"JBossTS installation."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:413
+#, no-c-format
+msgid "Another scenario"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:414
+#, no-c-format
+msgid ""
+"As mentioned, the basic application presented above does not present the "
+"complete process to recover from failure, but it was just presented to "
+"describe how the build a recovery module. In case of the OTS protocol, let’s "
+"consider how a recovery module that manages recovery of OTS resources can be "
+"configured."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:418
+#, no-c-format
+msgid ""
+"To manage recovery in case of failure, the OTS specification has defined a "
+"recovery protocol. Transaction’s participants in a doubt status could use "
+"the RecoveryCoordinator to determine the status of the transaction. "
+"According to that transaction status, those participants can take "
+"appropriate decision either by roll backing or committing. Asking the "
+"RecoveryCoordinator object to determine the status consists to invoke the "
+"replay_completion operation on the RecoveryCoordinator."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:421
+#, no-c-format
+msgid ""
+"For each OTS Resource in a doubt status, it is well known which "
+"RecoveyCoordinator to invoke to determine the status of the transaction in "
+"which the Resource is involved – It’s the RecoveryCoordinator returned "
+"during the Resource registration process. Retrieving such "
+"RecoveryCoordinator per resource means that it has been stored in addition "
+"to other information describing the resource."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:424
+#, no-c-format
+msgid ""
+"A recovery module dedicated to recover OTS Resources could have the "
+"following behavior. When requested by the recovery Manager on the first pass "
+"it retrieves from the disk the list of resources that are in the doubt "
+"status. During the second pass, if the resources that were retrieved in the "
+"first pass still remain in the disk then they are considered as candidates "
+"for recovery. Therefore, the Recovery Module retrieves for each candidate "
+"its associated RecoveryCoordinator and invokes the replay_completion "
+"operation that the status of the transaction. According to the returned "
+"status, an appropriate action would be taken (for instance, rollback the "
+"resource is the status is aborted or inactive)."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:429
+#, no-c-format
+msgid "TransactionStatusConnectionManager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:430
+#, no-c-format
+msgid ""
+"The TransactionStatusConnectionManager object is used by the recovery "
+"modules to retrieve the status of transactions and acts like a proxy for "
+"TransactionStatusManager objects. It maintains a table of "
+"TransactionStatusConnector obects each of which connects to a "
+"TransactionStatusManager object in an Application Process."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:433
+#, no-c-format
+msgid ""
+"The transactions status is retrieved using the getTransactionStatus methods "
+"which take a transaction Uid and if available a transaction type as "
+"parameters. The process Uid field in the transactions Uid parameter is used "
+"to lookup the target TransactionStatusManagerItem host/port pair in the "
+"Object Store. The host/port pair are used to make a TCP connection to the "
+"target TransactionStatusManager object by a TransactionStatusConnector "
+"object. The TransactionStatusConnector passes the transaction Uid/"
+"transaction type to the TransactionStatusManager in order to retrieve the "
+"transactions status."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:438
+#, no-c-format
+msgid "Expired Scanner Thread"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:439
+#, no-c-format
+msgid ""
+"When the Recovery Manager initialises an expiry scanner thread "
+"ExpiryEntryMonitor is created which is used to remove long dead items from "
+"the ObjectStore. A number of scanner modules are dynamically loaded which "
+"remove long dead items for a particular type."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:442
+#, no-c-format
+msgid ""
+"Scanner modules are loaded at initialisation and are specified as properties "
+"beginning with"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:445
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScanner&lt;Scanner Name&gt;=&lt;Scanner "
+"Class&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:446
+#, no-c-format
+msgid ""
+"All the scanner modules are called periodically to scan for dead items by "
+"the ExpiryEntryMonitor thread. This period is set with the property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:449
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.recovery.expiryScanInterval"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:450
+#, no-c-format
+msgid ""
+"All scanners inherit the same behaviour from the java interface "
+"<interfacename>ExpiryScanner</interfacename> as illustrated in diagram below:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:458
+#, no-c-format
+msgid ""
+"A scan method is provided by this interface and implemented by all scanner "
+"modules, this is the method that gets called by the scanner thread."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:461
+#, no-c-format
+msgid ""
+"The ExpiredTransactionStatusManagerScanner removes long dead "
+"TransactionStatusManagerItems from the Object Store. These items will remain "
+"in the Object Store for a period of time before they are deleted. This time "
+"is set by the property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:464
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:465
+#, no-c-format
+msgid "(default 12 hours)"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:470
+#, no-c-format
+msgid "Application Process"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:471
+#, no-c-format
+msgid ""
+"This represents the user transactional program. A Local transaction (hash) "
+"table, maintained within the running application process keeps trace of the "
+"current status of all transactions created by that application process, The "
+"Recovery Manager needs access to the transaction tables so that it can "
+"determine whether a transaction is still in progress, if so then recovery "
+"does not happen."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:474
+#, no-c-format
+msgid ""
+"The transaction tables are accessed via the TransactionStatusManager object. "
+"On application program initialisation the host/port pair that represents the "
+"TransactionStatusManager is written to the Object Store in '../Recovery/"
+"TransactionStatusManager’ part of the Object Store file hierarchy and "
+"identified by the process Uid of the application process."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:477
+#, no-c-format
+msgid ""
+"The Recovery Manager uses the TransactionStatusConnectionManager object to "
+"retrieve the status of a transaction and a TransactionStatusConnector object "
+"is used to make a TCP connection to the TransactionStatusManager."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:482
+#, no-c-format
+msgid "TransactionStatusManager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:483
+#, no-c-format
+msgid ""
+"This object acts as an interface for the Recovery Manager to obtain the "
+"status of transactions from running HPTS application processes. One "
+"TransactionStatusManager is created per application process by the class com."
+"arjuna.ats.arjuna.coordinator.InitAction. Currently a tcp connection is used "
+"for communication between the RecoveryManager and TransactionStatusManager. "
+"Any free port is used by the TransactionStatusManager by default, however "
+"the port can be fixed with the property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:486
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:487
+#, no-c-format
+msgid ""
+"On creation the TransactionStatusManager obtains a port which it stores with "
+"the host in the Object Store as a TransactionStatusManagerItem. A Listener "
+"thread is started which waits for a connection request from a "
+"TransactionStatusConnector. When a connection is established a Connection "
+"thread is created which runs a Service (AtomicActionStatusService) which "
+"accepts a transaction Uid and a transaction type (if available) from a "
+"TransactionStatusConnector, the transaction status is obtained from the "
+"local thransaction table and returned back to the TransactionStatusConnector."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:492
+#, no-c-format
+msgid "Object Store"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:493
+#, no-c-format
+msgid ""
+"All objects are stored in a file path which is equivalent to their class "
+"inheritance. Thus AtomicAction transactions are stored in file path ../"
+"StateManager/BasicAction/AtomicAction."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:496
+#, no-c-format
+msgid ""
+"All objects are identified by a unique identifier Uid. One of the values of "
+"which is a process id in which the object was created. The Recovery Manager "
+"uses the process id to locate transaction status manager items when "
+"contacting the originator application process for the transaction status."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "Transactions Failure Recovery Guide"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss "
+"Transactions Failure Recovery Guide"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:18
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:24
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,692 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:6
+#, no-c-format
+msgid "How JBossTS manages the OTS Recovery Protocol"
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:10
+#, no-c-format
+msgid "Recovery Protocol in OTS-Overview"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:11
+#, no-c-format
+msgid ""
+"To manage recovery in case of failure, the OTS specification has defined a "
+"recovery protocol. Transaction’s participants in a doubt status could use "
+"the RecoveryCoordinator to determine the status of the transaction. "
+"According to that transaction status, those participants can take "
+"appropriate decision either by roll backing or committing."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:14
+#, no-c-format
+msgid ""
+"A reference to a RecoveryCoordinator is returned as a result of successfully "
+"calling register_resource on the transaction Coordinator. This object, which "
+"is implicitly associated with a single Resource, can be used to drive the "
+"Resource through recovery procedures in the event of a failure occurring "
+"during the transaction."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:21
+#, no-c-format
+msgid "Resource and RecoveryCoordinator relationship."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:26
+#, no-c-format
+msgid "RecoveryCoordinator in JBossTS"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:27
+#, no-c-format
+msgid ""
+"On each resource registration a RecoveryCoordinator Object is expected to be "
+"created and returned to the application that invoked the register_resource "
+"operation. Behind each CORBA object there should be an object implementation "
+"or Servant object, in POA terms, which performs operations made on a "
+"RecoveryCoordinator object. Rather than to create a RecoveryCoordinator "
+"object with its associated servant on each register_resource, JBossTS "
+"enhances performance by avoiding the creation of servants but it relies on a "
+"default RecoveryCoordinator object with it’s associated default servant to "
+"manage all replay_completion invocations."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:30
+#, no-c-format
+msgid ""
+"In the next sections we first give an overview of the Portable Object "
+"Adapter architecture, then we describe how this architecture is used to "
+"provide RecoveryCoordinator creation with optimization as explained above."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:34
+#, no-c-format
+msgid "Understanding POA"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:35
+#, no-c-format
+msgid ""
+"Basically, the Portable Object Adapter, or POA is an object that intercepts "
+"a client request and identifies the object that satisfies the client "
+"request. The Object is then invoked and the response is returned to the "
+"client."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:43
+#, no-c-format
+msgid "Overview of the POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:45
+#, no-c-format
+msgid ""
+"The object that performs the client request is referred as a servant, which "
+"provides the implementation of the CORBA object requested by the client. A "
+"servant provides the implementation for one or more CORBA object references. "
+"To retreive a servant, each POA maintains an Active Object Map that maps all "
+"objects that have been activated in the POA to a servant. For each incoming "
+"request, the POA looks up the object reference in the Active Object Map and "
+"tries to find the responsible servant. If none is found, the request is "
+"either delegated to a default servant, or a servant manager is invoked to "
+"activate or locate an appropriate servant. In addition to the name space for "
+"the objects, which are identified by Object Ids, a POA also provides a name "
+"space for POAs. A POA is created as a child of an existing POA, which forms "
+"a hierarchy starting with the root POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:48
+#, no-c-format
+msgid ""
+"Each POA has a set of policies that define its characteristics. When "
+"creating a new POA, the default set of policies can be used or different "
+"values can be assigned that suit the application requirements. The POA "
+"specification defines:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:53
+#, no-c-format
+msgid ""
+"<emphasis>Thread policy:</emphasis> Specifies the threading model to be used "
+"by the POA. Possible values are:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:58
+#, no-c-format
+msgid ""
+"ORB_CTRL_MODEL (default): The POA is responsible for assigning requests to "
+"threads."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:63
+#, no-c-format
+msgid "SINGLE_THREAD_MODEL: The POA processes requests sequentially"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:70
+#, no-c-format
+msgid ""
+"<emphasis>Lifespan policy:</emphasis> Specifies the lifespan of the objects "
+"implemented in the POA. The lifespan policy can have the following values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:75
+#, no-c-format
+msgid ""
+"TRANSIENT (Default) Objects implemented in the POA cannot outlive the "
+"process in which they are first created. Once the POA is deactivated, an "
+"OBJECT_NOT_EXIST exception occurs when attempting to use any object "
+"references generated by the POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:80
+#, no-c-format
+msgid ""
+"PERSISTENT Objects implemented in the POA can outlive the process in which "
+"they are first created."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:87
+#, no-c-format
+msgid ""
+"Object ID Uniqueness policy: Allows a single servant to be shared by many "
+"abstract objects. The Object ID Uniqueness policy can have the following "
+"values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:92
+#, no-c-format
+msgid "UNIQUE_ID (Default): Activated servants support only one Object ID."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:97
+#, no-c-format
+msgid ""
+"MULTIPLE_ID: Activated servants can have one or more Object IDs. The Object "
+"ID must be determined within the method being invoked at run time."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:104
+#, no-c-format
+msgid ""
+"ID Assignment policy: Specifies whether object IDs are generated by server "
+"applications or by the POA. The ID Assignment policy can have the following "
+"values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:109
+#, no-c-format
+msgid "USER_ID is for persistent objects, and"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:114
+#, no-c-format
+msgid "SYSTEM_ID is for transient objects."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:121
+#, no-c-format
+msgid ""
+"Servant Retention policy: Specifies whether the POA retains active servants "
+"in the Active Object Map. The Servant Retention policy can have the "
+"following values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:126
+#, no-c-format
+msgid ""
+"RETAIN (Default) The POA tracks object activations in the Active Object Map. "
+"RETAIN is usually used with ServantActivators or explicit activation methods "
+"on POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:131
+#, no-c-format
+msgid ""
+"NON_RETAIN The POA does not retain active servants in the Active Object Map. "
+"NON_RETAIN is typically used with ServantLocators."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:138
+#, no-c-format
+msgid ""
+"Request Processing policy: Specifies how requests are processed by the POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:143
+#, no-c-format
+msgid ""
+"USE_ACTIVE_OBJECT_MAP (Default): If the Object ID is not listed in the "
+"Active Object Map, an OBJECT_NOT _EXIST exception is returned. The POA must "
+"also use the RETAIN policy with this value."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:148
+#, no-c-format
+msgid ""
+"USE_DEFAULT_SERVANT: If the Object ID is not listed in the Active Object Map "
+"or the NON_RETAIN policy is set, the request is dispatched to the default "
+"servant. If no default servant has been registered, an OBJ_ADAPTER exception "
+"is returned. The POA must also use the MULTIPLE_ID policy with this value."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:153
+#, no-c-format
+msgid ""
+"USE_SERVANT_MANAGER: If the Object ID is not listed in the Active Object Map "
+"or the NON_RETAIN policy is set, the servant manager is used to obtain a "
+"servant."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:160
+#, no-c-format
+msgid ""
+"Implicit Activation policy: Specifies whether the POA supports implicit "
+"activation of servants. The Implicit Activation policy can have the "
+"following values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:165
+#, no-c-format
+msgid ""
+"IMPLICIT_ACTIVATION: The POA supports implicit activation of servants. "
+"Servants can be activated by converting them to an object reference with "
+"<methodname>org.omg.PortableServer.POA.servant_to_reference()</methodname> "
+"or by invoking <methodname>_this()</methodname> on the servant. The POA must "
+"also use the SYSTEM_ID and RETAIN policies with this value."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:170
+#, no-c-format
+msgid ""
+"NO_IMPLICIT_ACTIVATION (Default): The POA does not support implicit "
+"activation of servants."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:177
+#, no-c-format
+msgid ""
+"It appears that to redirect replay_completion invocations to a default "
+"servant we need to create a POA with the Request Processing policy assigned "
+"with the value set to USE_DEFAULT_SERVANT. However to reach that default "
+"Servant we should first reach the POA that forward the request to the "
+"default servant. Indeed, the ORB uses a set of information to retrieve a "
+"POA; these information are contained in the object reference used by the "
+"client. Among these information there are the IP address and the port number "
+"where resides the server and also the POA name. To perform replay_completion "
+"invocations, the solution adopted by JBossTS is to provide one Servant, per "
+"machine, and located in the RecoveryManager process, a separate process from "
+"client or server applications. The next section explains how the indirection "
+"to a default Servant located on a separate process is provided for ORBIX and "
+"for JacORB."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:182
+#, no-c-format
+msgid "The default RecoveryCoordinator in Orbix"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:183
+#, no-c-format
+msgid ""
+"Within Orbix, objects are located by the Location Deamon. To avoid the "
+"overhead of using the location daemon, Orbix provides a mechanism named "
+"<emphasis>Direct Persistence</emphasis> allowing generating persistent "
+"object references. This mechanism is in fact a proprietary policy named, "
+"DIRECT_PERSISTENCE. A POA with policies of PERSISTENT and DIRECT_PERSISTENCE "
+"generates IORs that contain a well-known address for the server process. A "
+"POA that uses direct persistence must also tell each transport mechanism "
+"such as IIOP where in the configuration file it can find the well-known "
+"address that it should use. This is done by creating a "
+"<code>WellKnownAddressingPolicy</code> object and setting its value to the "
+"configuration scope that contains the well-known address."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:186
+#, no-c-format
+msgid ""
+"To specify the address used by the <code>WellKnownAddressingPolicy</code> "
+"object, JBossTS uses the Orbix mechanism that allows specifying an ORB/POA "
+"names. The following configuration modifications are necessary to define the "
+"well-know address of the RecoveryCoordinator performing replay_completion "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:190
+#, no-c-format
+msgid ""
+"Note that this configuration is also necessary to support transaction "
+"context propagation and interposition."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:194
+#, no-c-format
+msgid ""
+"A new orb name domain called arjuna should be created within the main Orbix "
+"2000 domain being used by the application. It requires the following format:"
+msgstr ""
+
+#. Tag: screen
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:197
+#, no-c-format
+msgid ""
+"arjuna\n"
+"{\n"
+"        portable_interceptor\n"
+"        {\n"
+"                orb_plugins = [\"local_log_stream\", \"iiop_profile\", \"giop"
+"\", \"iiop\", \"portable_interceptor\"];\n"
+"        \n"
+"                ots_recovery_coordinator\n"
+"                {\n"
+"                        recovery_coordinator:iiop:addr_list = [“&lt;name&gt;:"
+"&lt;port&gt;”];\n"
+"                };\n"
+"                        \n"
+"                ots_transaction\n"
+"                {\n"
+"                        transaction:iiop:addr_list = [“+&lt;name&gt;:&lt;"
+"port&gt;”];\n"
+"                };     \n"
+"                ots_context\n"
+"                {\n"
+"                        binding:client_binding_list = [\"OTS_Context\", "
+"\"OTS_Context+GIOP+SIOP\", \"GIOP+SIOP\", \"OTS_Context+GIOP+IIOP\", \"GIOP"
+"+IIOP\"];\n"
+"                        binding:server_binding_list = [\"OTS_Context\", "
+"\"\"];\n"
+"                };\n"
+"                                        \n"
+"                ots_interposition\n"
+"                {\n"
+"                        binding:client_binding_list = [\"OTS_Interposition"
+"\", \"OTS_Interposition+GIOP+SIOP\", \"GIOP+SIOP\", \"OTS_Interposition+GIOP"
+"+IIOP\", \"GIOP+IIOP\"];\n"
+"                        binding:server_binding_list = [\"OTS_Interposition"
+"\", \"\"];\n"
+"                };\n"
+"        };\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:198
+#, no-c-format
+msgid ""
+"The &lt;name&gt; field should be substituted by the name of the machine on "
+"which JBossTS is being run. The &lt;port&gt; field should be an unused port "
+"on which the JBossTS recovery manager may listen for recovery requests."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:201
+#, no-c-format
+msgid ""
+"Because of the way in which Orbix works with persistent POAs, if you want "
+"crash recovery support for your applications you must use one of the Arjuna "
+"ORB names provided (context or interposition) when running your clients and "
+"services. When using transaction context propagation only, the<parameter>–"
+"ORBname arjuna.portable_interceptor.ots_context</parameter> parameter should "
+"be passed to the client and server. When using context propagation and "
+"interposition, the <parameter>–ORBname.arjuna.portable_interceptor."
+"ots_interposition</parameter> parameter should be used. For example:"
+msgstr ""
+
+#. Tag: screen
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:204
+#, no-c-format
+msgid "java mytest –ORBname arjuna.portable_interceptor.ots_context"
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:206
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:287
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:207
+#, no-c-format
+msgid ""
+"When the Recovery Manager is launched it seeks in the configuration the "
+"RecoveryActivator that need be loaded. Once done it invokes the "
+"<methodname>startRCservice</methodname> method of each loaded instances. As "
+"seen in in the previous chapter (Recovery Manager) the class to load that "
+"implements the <interfacename>RecoveryActivator</interfacename> interface is "
+"the class <classname>RecoveryEnablement</classname>. This generic class, "
+"located in the package <package>com.arjuna.ats.internal.jts.orbspecific."
+"recovery</package>, hides the nature of the ORB being used by the "
+"application. The following figure illustrates the behavior of the "
+"<interfacename>RecoveryActivator</interfacename> that leads to the creation "
+"of the default servant that performs all replay_invocations requests."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:215
+#, no-c-format
+msgid ""
+"The Recovery Manager and the creation of the default servant for "
+"RecoveryCoordinator."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:218
+#, no-c-format
+msgid ""
+"There is one recovery Manager Process per machine, then one default servant "
+"per machine. Performing all replay_completion invocations means those made "
+"on the same machine."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:222
+#, no-c-format
+msgid ""
+"When started, the application, using JBossTS in library mode, is launched a "
+"child POA is created with the same policies as those defined within the "
+"Recovery Manager. This child POA is used to create object references, for "
+"RecoveryCoordinator CORBA objects, that need to be returned on "
+"register_resource invocations, as illustrated in figure below. The Object "
+"reference created has an Object ID that contains the transaction ID in "
+"progress and the Process Identifier of the application."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:226
+#, no-c-format
+msgid ""
+"If the Transaction Service is used in the stand-alone mode, the behavior to "
+"create object reference to RecoveryCoordinator objects is exactly the same; "
+"the process ID used in the Object ID is the Transaction Service process ID"
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:234
+#, no-c-format
+msgid ""
+"Resource registration and returned RecoveryCoordinator Object reference."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:236
+#, no-c-format
+msgid ""
+"Having the object reference of the RecoveryCoordinator, an application can "
+"use it to determine the status of the transaction for which that object "
+"reference is created. When a RecoveryCoordinator, according to POA policies "
+"assigned to the POA included in the object reference, the request is forward "
+"straightforward to the default servant defined in the Recovery Manager, as "
+"described in the figure below."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:243
+#, no-c-format
+msgid ""
+"replay_completion invocation forwarded to the default RecoveryCoordinator ."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:245
+#, no-c-format
+msgid "The flow described in the figure can be depicted as follow:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:250
+#, no-c-format
+msgid ""
+"The participant invokes the replay_completion operation on "
+"RecoveryCoordinator object using the object reference returned by the "
+"Transaction Server."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:255
+#, no-c-format
+msgid ""
+"The request is forwarded to the Recovery Manager process since the Well-"
+"known-address policy is used to retrieve."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:260
+#, no-c-format
+msgid "The child POA responsible to locate the servant is retrieved."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:265
+#, no-c-format
+msgid ""
+"After looking to the Active Object Map, the child POA invokes the default "
+"servant to perform the request. Note that the Object ID conveyed by the "
+"object reference is not retrieved in the AOP."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:270
+#, no-c-format
+msgid ""
+"The servant extracts from the request the Object ID that contains the "
+"Transaction ID and the process ID of the Transaction Server process. To "
+"determine if the process still alive, the TransactionStatusConnectionManager "
+"functionalities are used."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:275
+#, no-c-format
+msgid ""
+"According to the presence or not of the Transaction Server process and "
+"eventually the returned status, the servant returns the status of the "
+"transaction asked by the participant."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:282
+#, no-c-format
+msgid "The default RecoveryCoordinator in JacOrb"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:283
+#, no-c-format
+msgid ""
+"JacORB does not define additional policies to redirect any request on a "
+"RecoveryCoordinator object to a default servant located in the Recovery "
+"Manager process. However it provides a set of APIs that allows building "
+"object references with specific IP address, port number and POA name in "
+"order to reach the appropriate default servant."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:288
+#, no-c-format
+msgid ""
+"When the Recovery Manager is launched it seeks in the configuration the "
+"RecoveryActivator that need be loaded. Once done it invokes the "
+"<methodname>startRCservice</methodname> method of each loaded instances. As "
+"seen in in the previous chapter (Recovery Manager ) the class to load that "
+"implements the <interfacename>RecoveryActivator</interfacename> interface is "
+"the class <classname>RecoveryEnablement</classname>. This generic class, "
+"located in the package <package>com.arjuna.ats.internal.jts.orbspecific."
+"recovery</package>, hides the nature of the ORB being used by the "
+"application (JacORB). The following figure illustrates the behavior of the "
+"<interfacename>RecoveryActivator</interfacename> that leads to the creation "
+"of the default servant that performs replay_completion invocations requests."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:292
+#, no-c-format
+msgid ""
+"In addition to the creation of the default servant, an object reference to a "
+"<code>RecoveryCoordinator</code> object is created and stored in the "
+"ObjectStore. As we will see this object reference will be used to obtain its "
+"IP address, port number and POA name and assign them to any "
+"<code>RecoveryCoordinator</code> object reference created on "
+"register_resource."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:299
+#, no-c-format
+msgid ""
+"replay_completion invocation forwarded to the default RecoveryCoordinator."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:301
+#, no-c-format
+msgid ""
+"When an application registers a resource with a transaction, a "
+"<code>RecoveryCoordinator</code> object reference is expected to be "
+"returned. To build that object reference, the Transaction Service uses the "
+"RecoveryCoordinator object reference created within the Recovery Manager as "
+"a template. The new object reference contains practically the same "
+"information to retrieve the default servant (IP address, port number, POA "
+"name, etc.), but the Object ID is changed; now, it contains the Transaction "
+"ID of the transaction in progress and also the Process ID of the process "
+"that is creating the new <code>RecoveryCoordinator</code> object reference, "
+"as illustrated below."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:308
+#, no-c-format
+msgid ""
+"Resource registration and returned RecoveryCoordinator Object reference "
+"build from a reference stored in the ObjectStore."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:310
+#, no-c-format
+msgid ""
+"Since a <code>RecoveryCoordintaor</code> object reference returned to an "
+"application contains all information to retrieve the POA then the default "
+"servant located in the Recovery Manager, all replay_completion invocation, "
+"per machine, are forwarded to the same default <code>RecoveryCoordinator</"
+"code> that is able to retreive the Object ID from the incoming request to "
+"extract the transaction identifier and the process identifier needed to "
+"determine the status of the requested transaction."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,20 @@
+# Language ja-JP translations for Transactions_Failure_Recovery_Guide package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Transactions_Failure_Recovery_Guide 0.1\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-08-05 01:23+0000\n"
+"PO-Revision-Date: 2008-08-05 01:23+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/ja-JP/Transactions_Failure_Recovery_Guide.po
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,1482 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:6
+#, no-c-format
+msgid "Architecture of the Recovery Manager"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:8
+#, no-c-format
+msgid "Crash Recovery Overview"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:9
+#, no-c-format
+msgid ""
+"The main architectural components within Crash Recovery are illustrated in "
+"the diagram below:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:17
+#, no-c-format
+msgid ""
+"The Recovery Manager is a daemon process responsible for performing crash "
+"recovery. Only one Recovery Manager runs per node. The Object Store provides "
+"persistent data storage for transactions to log data. During normal "
+"transaction processing each transaction will log persistent data needed for "
+"the commit phase to the Object Store. On successfully committing a "
+"transaction this data is removed, however if the transaction fails then this "
+"data remains within the Object Store."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:20
+#, no-c-format
+msgid "The Recovery Manager functions by:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:25
+#, no-c-format
+msgid ""
+"Periodically scanning the Object Store for transactions that may have "
+"failed. Failed transactions are indicated by the presence of log data after "
+"a period of time that the transaction would have normally been expected to "
+"finish."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:30
+#, no-c-format
+msgid ""
+"Checking with the application process which originated the transaction "
+"whether the transaction is still in progress or not."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:35
+#, no-c-format
+msgid ""
+"Recovering the transaction by re-activating the transaction and then "
+"replaying phase two of the commit protocol."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:40
+#, no-c-format
+msgid ""
+"The following sections describe the architectural components in more detail"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:46
+#, no-c-format
+msgid "Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:47
+#, no-c-format
+msgid ""
+"On initialization the Recovery Manager first loads in configuration "
+"information via a properties file. This configuration includes a number of "
+"recovery activators and recovery modules, which are then dynamically loaded."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:50
+#, no-c-format
+msgid ""
+"Since the version 3.0 of JBossTS, the Recovery Manager is not specifically "
+"tied to an Object Request Broker or ORB. Hence, the OTS recovery protocol is "
+"not implicitly enabled. To enable such protocol, we use the concept of "
+"recovery activator, defined with the interface "
+"<interfacename>RecoveryActivator</interfacename>, which is used to "
+"instantiate a recovery class related to the underlying communication "
+"protocol. For instance, when used with OTS, the "
+"<interfacename>RecoveryActivitor</interfacename> has the responsibility to "
+"create a RecoveryCoordinator object able to respond to the replay_completion "
+"operation."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:53
+#, no-c-format
+msgid ""
+"All <interfacename>RecoveryActivator</interfacename> instances inherit the "
+"same interface. They are loaded via the following recovery extension "
+"property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:56
+#, no-c-format
+msgid ""
+"&lt;property  \n"
+"                   name=\"com.arjuna.ats.arjuna.recovery."
+"recoveryActivator_&lt;number&gt;\" value=\"RecoveryClass\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:57
+#, no-c-format
+msgid ""
+"For instance the <interfacename>RecoveryActivator</interfacename> provided "
+"in the distribution of JTS/OTS, which shall not be commented, is as follow:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:60
+#, no-c-format
+msgid ""
+"&lt;property \n"
+"        name=\"com.arjuna.ats.arjuna.recovery.recoveryActivator_1\" value="
+"\"com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:61
+#, no-c-format
+msgid ""
+"When loaded all <interfacename>RecoveryActivator</interfacename> instances "
+"provide the method <methodname>startRCservice</methodname> invoked by the "
+"Recovery Manager and used to create the appropriate Recovery Component able "
+"to receive recovery requests according to a particular transaction protocol. "
+"For instance the RecoveryCoordinator defined by the OTS protocol."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:64
+#, no-c-format
+msgid ""
+"Each recovery module is used to recover a different type of transaction/"
+"resource, however each recovery module inherits the same basic behavior."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:67
+#, no-c-format
+msgid ""
+"Recovery consists of two separate passes/phases separated by two timeout "
+"periods. The first pass examines the object store for potentially failed "
+"transactions; the second pass performs crash recovery on failed "
+"transactions. The timeout between the first and second pass is known as the "
+"backoff period. The timeout between the end of the second pass and the start "
+"of the first pass is the recovery period. The recovery period is larger than "
+"the backoff period."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:70
+#, no-c-format
+msgid ""
+"The Recovery Manager invokes the first pass upon each recovery module, "
+"applies the backoff period timeout, invokes the second pass upon each "
+"recovery module and finally applies the recovery period timeout before "
+"restarting the first pass again."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:73
+#, no-c-format
+msgid ""
+"The recovery modules are loaded via the following recovery extension "
+"property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:76
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension&lt;number&gt;=&lt;"
+"RecoveryClass&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:77
+#, no-c-format
+msgid ""
+"The backoff period and recovery period are set using the following "
+"properties:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:80
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod        (default 10 "
+"secs)\n"
+"com.arjuna.ats.arjuna.recovery.periodicRecovery                (default 120 "
+"secs)"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:81
+#, no-c-format
+msgid "The following java classes are used to implement the Recovery Manager:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:86
+#, no-c-format
+msgid "package <package>com.arjuna.ats.arjuna.recovery</package>:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:91
+#, no-c-format
+msgid ""
+"RecoveryManager: The daemon process that starts up by instantiating an "
+"instance of the RecoveryManagerImple class."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:96
+#, no-c-format
+msgid "RecoveryEnvironment: Properties used by the recovery manager."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:101
+#, no-c-format
+msgid ""
+"RecoveryConfiguration: Specifies the name of the Recovery Manager property "
+"file. (for instance, RecoveryManager-properties.xml)"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:108
+#, no-c-format
+msgid "package <package>com.arjuna.ats.internal.ts.arjuna.recovery</package>:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:113
+#, no-c-format
+msgid ""
+"RecoveryManagerImple: Creates and starts instances of the "
+"RecActivatorLoader, the PeriodicRecovery thread and the ExpiryEntryMonitor "
+"thread."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:118
+#, no-c-format
+msgid ""
+"RecActivatorLoader: Dynamically loads in the RecoveryActivator specified in "
+"the Recovery Manager property file. Each RecoveryActicator is specified as a "
+"recovery extension in the properties file."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:123
+#, no-c-format
+msgid ""
+"PeriodicRecovery: Thread which loads each recovery module, then calls the "
+"first pass method for each module, applies the backoff period timeout, calls "
+"the second pass method for each module and applies the recovery period "
+"timeout."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:128
+#, no-c-format
+msgid ""
+"RecoveryClassLoader: Dynamically loads in the recovery modules specified in "
+"the Recovery Manager property file. Each module is specified as a recovery "
+"extension in the properties file (for instance, com.arjuna.ats.arjuna."
+"recovery.recoveryExtension1= com.arjuna.ats.internal.ts.arjuna.recovery."
+"AtomicActionRecoveryModule)."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:136
+#, no-c-format
+msgid ""
+"By default, the recovery manager listens on the first available port on a "
+"given machine. If you wish to control the port number that it uses, you can "
+"specify this using the com.arjuna.ats.arjuna.recovery.recoveryPort attribute."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:141
+#, no-c-format
+msgid "Embedding the Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:142
+#, no-c-format
+msgid ""
+"In some situations it may be required to embed the RecoveryManager in the "
+"same process as the transaction service. In this case you can create an "
+"instance of the RecoveryManager through the manager method on com.arjuna.ats."
+"arjuna.recovery.RecoveryManager. A RecoveryManager can be created in one of "
+"two modes, selected via the parameter to the manager method:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:148
+#, no-c-format
+msgid ""
+"INDIRECT_MANAGEMENT: the manager runs periodically but can also be "
+"instructed to run when desired via the scan operation or through the "
+"RecoveryDriver class to be described below."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:153
+#, no-c-format
+msgid ""
+"DIRECT_MANAGEMENT: the manager does not run periodically and must be driven "
+"directly via the scan operation or RecoveryDriver."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:159
+#, no-c-format
+msgid "Managing recovery directly"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:160
+#, no-c-format
+msgid ""
+"As already mentioned, recovery typically happens at periodic intervals. If "
+"you require to drive recovery directly, then there are two options, "
+"depending upon how the RecoveryManager has been created."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:165
+#, no-c-format
+msgid "Seperate Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:166
+#, no-c-format
+msgid ""
+"You can either use the com.arjuna.ats.arjuna.tools.RecoveryMonitor program "
+"to send a message to the Recovery Manager instructing it to perform "
+"recovery, or you can create an instance of the com.arjuna.ats.arjuna."
+"recovery.RecoveryDriver class to do likewise. There are two types of "
+"recovery scan available:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:172
+#, no-c-format
+msgid ""
+"ASYNC_SCAN: here a message is sent to the RecoveryManager to instruct it to "
+"perform recovery, but the response returns before recovery has completed."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:177
+#, no-c-format
+msgid ""
+"SYNC: here a message is sent to the RecoveryManager to instruct it to "
+"perform recovery, and the response occurs only when recovery has completed."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:183
+#, no-c-format
+msgid "In process Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:184
+#, no-c-format
+msgid ""
+"You can invoke the scan operation on the RecoveryManager. This operation "
+"returns only when recovery has completed. However, if you wish to have an "
+"asynchronous interaction pattern, then the RecoveryScan interface is "
+"provided:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:188
+#, no-c-format
+msgid ""
+"public interface RecoveryScan\n"
+"{\n"
+"        public void completed ();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:189
+#, no-c-format
+msgid ""
+"An instance of an object supporting this interface can be passed to the scan "
+"operation and its completed method will be called when recovery finishes. "
+"The scan operation returns immediately, however."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:195
+#, no-c-format
+msgid "Recovery Modules"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:196
+#, no-c-format
+msgid ""
+"As stated before each recovery module is used to recover a different type of "
+"transaction/resource, but each recovery module must implement the following "
+"RecoveryModule interface, which defines two methods: "
+"<methodname>periodicWorkFirstPass</methodname> and "
+"<methodname>periodicWorkSecondPass</methodname> invoked by the Recovery "
+"Manager."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:199
+#, no-c-format
+msgid ""
+"public interface RecoveryModule\n"
+"{\n"
+"        /**\n"
+"        * Called by the RecoveryManager at start up, and then\n"
+"        * PERIODIC_RECOVERY_PERIOD seconds after the completion, for all   \n"
+"        * RecoveryModules of the second pass\n"
+"        */\n"
+"        public void periodicWorkFirstPass ();\n"
+"        \n"
+"        /**\n"
+"        * Called by the RecoveryManager RECOVERY_BACKOFF_PERIOD seconds\n"
+"        * after the completion of the first pass\n"
+"        */\n"
+"        public void periodicWorkSecondPass ();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:201
+#, no-c-format
+msgid "JBossTS Recovery Module Classes"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:202
+#, no-c-format
+msgid ""
+"JBossTS provides a set of recovery modules that are responsible to manage "
+"recovery according to the nature of the participant and its position in a "
+"transactional tree. The provided classes (that all implements the "
+"<interfacename>RecoveryModule</interfacename> interface) are:"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:209
+#, no-c-format
+msgid "com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:210
+#, no-c-format
+msgid "Recovers AtomicAction transactions."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:217
+#, no-c-format
+msgid "com.arjuna.ats.internal.txoj.recovery.TORecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:218
+#, no-c-format
+msgid "Recovers Transactional Objects for Java."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:225
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jts.recovery.transactions.TransactionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:226
+#, no-c-format
+msgid ""
+"Recovers JTS Transactions. This is a generic class from which TopLevel and "
+"Server transaction recovery modules inherit, respectively"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:233
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jts.recovery.transactions."
+"TopLevelTransactionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:234
+#, no-c-format
+msgid "Recovers JTS Toplevel Transactions."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:241
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jts.recovery.transactions."
+"ServerTransactionRecoveryModule"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:242
+#, no-c-format
+msgid "Recovers JTS Server Transactions."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:248
+#, no-c-format
+msgid ""
+"To illustrate the behavior of a recovery module, the following pseudo code "
+"describes the basic algorithm used for Atomic Action transactions and "
+"Transactional Objects for java."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:252
+#, no-c-format
+msgid "AtomicAction pseudo code"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:253
+#, no-c-format
+msgid "First Pass:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:257
+#, no-c-format
+msgid ""
+"&lt; create a transaction vector for transaction Uids. &gt;\n"
+"&lt; read in all transactions for a transaction type AtomicAction. &gt;\n"
+"while &lt; there are transactions in the vector of transactions. &gt;\n"
+"do\n"
+"        &lt; add the transaction to the vector of transactions. &gt;\n"
+"end while."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:258
+#: Architecture_of_the_Recovery_Manager.xml:267
+#, no-c-format
+msgid "Second Pass:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:261
+#, no-c-format
+msgid ""
+"while &lt; there are transactions in the transaction vector &gt;\n"
+"do\n"
+"        if &lt; the intention list for the transaction still exists &gt;\n"
+"        then\n"
+"                &lt; create new transaction cached item &gt;\n"
+"                &lt; obtain the status of the transaction &gt;\n"
+"                                        \n"
+"                if         &lt; the transaction is not in progress &gt;\n"
+"                then\n"
+"                        &lt; replay phase two of the commit protocol &gt;\n"
+"                endif.\n"
+"        endif.\n"
+"end while."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:263
+#, no-c-format
+msgid "Transactional Object pseudo code"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:264
+#, no-c-format
+msgid "First Pass"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:266
+#, no-c-format
+msgid ""
+"&lt; Create a hash table for uncommitted transactional objects. &gt;\n"
+"&lt; Read in all transactional objects within the object store. &gt;\n"
+"while &lt; there are transactional objects &gt;\n"
+"do\n"
+"        if         &lt; the transactional object has an Uncommited status in "
+"the object store &gt;\n"
+"        then\n"
+"                &lt; add the transactional Object o the hash table for "
+"uncommitted transactional objects&gt;\n"
+"        end if.\n"
+"end while."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:270
+#, no-c-format
+msgid ""
+"while &lt; there are transactions in the hash table for uncommitted "
+"transactional objects &gt;\n"
+"do\n"
+"        if &lt; the transaction is still in the Uncommitted state &gt;\n"
+"        then\n"
+"                if &lt; the transaction is not in the Transaction Cache "
+"&gt;\n"
+"                then\n"
+"                        &lt; check the status of the transaction with the "
+"original application process &gt;\n"
+"                        if &lt; the status is Rolled Back or the application "
+"process is inactive &gt;\n"
+"                                &lt; rollback the transaction by removing "
+"the Uncommitted status from the Object Store &gt;\n"
+"                        endif.\n"
+"                endif.\n"
+"        endif.\n"
+"end while."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:272
+#, no-c-format
+msgid "A Recovery Module for XA Resources"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:273
+#, no-c-format
+msgid ""
+"To manage recovery, we have seen in the previous chapter that the Recovery "
+"Manager triggers a recovery process by calling a set of recovery modules "
+"that implements the two methods defined by the "
+"<interfacename>RecoveryModule</interfacename> interface."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:277
+#, no-c-format
+msgid ""
+"To enable recovery of participants controlled via the <interfacename>XA</"
+"interfacename> interface, a specific recovery module named XARecoveryModule "
+"is provided. The XARecoveryModule, defined in the packages <package>com."
+"arjuna.ats.internal.jta.recovery.arjunacore</package> and <package>com."
+"arjuna.ats.internal.jta.recovery.jts</package>, handles recovery of "
+"<interfacename>XA</interfacename> resources (for example, databases) used in "
+"JTA."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:281
+#, no-c-format
+msgid ""
+"JBossTS supports two JTA implementations: a purely local version (no "
+"distributed transactions) and a version layered on the JTS. Recovery for the "
+"former is straightforward. In the following discussion we shall implicitly "
+"consider on the JTS implementation."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:285
+#, no-c-format
+msgid ""
+"Its behavior consists of two aspects: <emphasis>transaction-initiated</"
+"emphasis> and <emphasis>resource-initiated</emphasis> recovery. Transaction-"
+"initiated recovery is possible where the particular transaction branch had "
+"progressed far enough for a JTA Resource Record to be written in the "
+"ObjectStore, as illustrated in Figure 2."
+msgstr ""
+
+#. Tag: caption
+#: Architecture_of_the_Recovery_Manager.xml:292
+#, no-c-format
+msgid "JTA/JDBC information stored in the ObjectStore"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:294
+#, no-c-format
+msgid ""
+"A JTA Resource record contains the information needed to link the "
+"transaction, as known to the rest of JBossTS, to the database. Resource-"
+"initiated recovery is necessary for branches where a failure occurred after "
+"the database had made a persistent record of the transaction, but before the "
+"JTA ResourceRecord was persisted. Resource-initiated recovery is also "
+"necessary for datasources for which it is not possible to hold information "
+"in the JTA Resource record that allows the recreation in the RecoveryManager "
+"of the XAConnection/XAResource that was used in the original application."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:298
+#, no-c-format
+msgid ""
+"When running XA recovery it is necessary to tell JBossTS which types of Xid "
+"it can recover. Each Xid that JBossTS creates has a unique node identifier "
+"encoded within it and JBossTS will only recover transactions and states that "
+"match a specified node identifier. The node identifier to use should be "
+"provided to JBossTS via a property that starts with the name <property>com."
+"arjuna.ats.jta.xaRecoveryNode</property>; multiple values may be provided. A "
+"value of ‘*’ will force JBossTS to recover (and possibly rollback) all "
+"transactions irrespective of their node identifier and should be used with "
+"caution. The contents of <property>com.arjuna.ats.jta.xaRecoveryNode</"
+"property> should be alphanumeric and match the values of <property>com."
+"arjuna.ats.arjuna.xa.nodeIdentifier</property>."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:302
+#, no-c-format
+msgid ""
+"Transaction-initiated recovery is automatic. The XARecoveryModule finds the "
+"JTA Resource Record that need recovery, then uses the normal recovery "
+"mechanisms to find the status of the transaction it was involved in (i.e., "
+"it calls replay_completion on the RecoveryCoordinator for the transaction "
+"branch), (re)creates the appropriate XAResource and issues commit or "
+"rollback on it as appropriate. The XAResource creation will use the same "
+"information, database name, username, password etc., as the original "
+"application."
+msgstr ""
+
+#. Tag: caption
+#: Architecture_of_the_Recovery_Manager.xml:309
+#, no-c-format
+msgid "Transaction-Initiated Recovery and XA Recovery"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:311
+#, no-c-format
+msgid ""
+"Resource-initiated recovery has to be specifically configured, by supplying "
+"the Recovery Manager with the appropriate information for it to interrogate "
+"all the databases (XADataSources) that have been accessed by any JBossTS "
+"application. The access to each XADataSource is handled by a class that "
+"implements the <interfacename>com.arjuna.ats.jta.recovery."
+"XAResourceRecovery</interfacename> interface, as illustrated in Figure 4. "
+"Instances of classes that implements the XAResourceRecovery interface are "
+"dynamically loaded, as controlled by properties with names beginning "
+"<property>com.arjuna.ats.jta.recovery.XAResourceRecovery</property>."
+msgstr ""
+
+#. Tag: caption
+#: Architecture_of_the_Recovery_Manager.xml:318
+#, no-c-format
+msgid "Resource-initiated recovery and XA Recovery"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:321
+#, no-c-format
+msgid ""
+"JBossTS 3.3 <interfacename>XAConnectionRecovery</interfacename> was "
+"deprecated in favor of <interfacename>XAResourceRecovery</interfacename>. "
+"Although the old interface still exists at the moment, users are encouraged "
+"to migrate to the new interface."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:325
+#, no-c-format
+msgid ""
+"The XARecoveryModule will use the XAResourceRecovery implementation to get a "
+"XAResource to the target datasource. On each invocation of "
+"periodicWorkSecondPass, the recovery module will issue an XAResource.recover "
+"request – this will (as described in the XA specification) return a list of "
+"the transaction identifiers (Xid’s) that are known to the datasource and are "
+"in an indeterminate (in-doubt) state. The list of these in-doubt Xid’s "
+"received on successive passes (i.e. periodicWorkSecondPass-es) is compared. "
+"Any Xid that appears in both lists, and for which no JTA ResourceRecord was "
+"found by the intervening transaction-initiated recovery is assumed to belong "
+"to a transaction that was involved in a crash before any JTA ResourceRecord "
+"was written, and a rollback is issued for that transaction on the XAResource."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:328
+#, no-c-format
+msgid ""
+"This double-scan mechanism is used because it is possible the Xid was "
+"obtained from the datasource just as the original application process was "
+"about to create the corresponding JTA_ResourceRecord. The interval between "
+"the scans should allow time for the record to be written unless the "
+"application crashes (and if it does, rollback is the right answer)."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:331
+#, no-c-format
+msgid ""
+"An <classname>XAResourceRecovery</classname> implementation class can be "
+"written to contain all the information needed to perform recovery to some "
+"datasource. Alternatively, a single class can handle multiple datasources. "
+"The constructor of the implementation class must have an empty parameter "
+"list (because it is loaded dynamically), but the interface includes an "
+"initialise method which passes in further information as a string. The "
+"content of the string is taken from the property value that provides the "
+"class name: everything after the first semi-colon is passed as the value of "
+"the string. The use made of this string is determined by the "
+"<classname>XAResourceRecovery</classname> implementation class."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:334
+#, no-c-format
+msgid ""
+"For further details on the way to implement a class that implements the "
+"interface <interfacename>XAResourceRecovery</interfacename>, read the JDBC "
+"chapter of the JTA Programming Guide. An implementation class is provided "
+"that supports resource-initiated recovery for any XADataSource. This class "
+"could be used as a template to build your own implementation class."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:338
+#, no-c-format
+msgid "Writing a Recovery Module"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:339
+#, no-c-format
+msgid ""
+"In order to recover from failure, we have seen that the Recovery Manager "
+"contacts recovery modules by invoking periodically the methods "
+"<methodname>periodicWorkFirstPass</methodname> and "
+"<methodname>periodicWorkSecondPass</methodname>. Each Recovery Module is "
+"then able to manage recovery according to the type of resources that need to "
+"be recovered. The JBoss Transaction product is shipped with a set of "
+"recovery modules (TOReceveryModule, XARecoveryModule…), but it is possible "
+"for a user to define their own recovery module to fit their application. The "
+"following basic example illustrates the steps needed to build such recovery "
+"module"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:342
+#, no-c-format
+msgid "A basic scenario"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:343
+#, no-c-format
+msgid ""
+"This basic example does not aim to present a complete process to recover "
+"from failure, but mainly to illustrate the way to implement a recovery "
+"module."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:345
+#, no-c-format
+msgid ""
+"The application used here consists to create an atomic transaction, to "
+"register a participant within the created transaction and finally to "
+"terminate it either by commit or abort. A set of arguments are provided:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:350
+#, no-c-format
+msgid "to decide to commit or abort the transaction,"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:355
+#, no-c-format
+msgid "to decide generating a crash during the commitment process."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:360
+#, no-c-format
+msgid "The code of the main class that control the application is given below"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:363
+#, no-c-format
+msgid ""
+"package com.arjuna.demo.recoverymodule;\n"
+"        \n"
+"import com.arjuna.ats.arjuna.AtomicAction;\n"
+"import com.arjuna.ats.arjuna.coordinator.*;\n"
+"        \n"
+"public class TestRecoveryModule\n"
+"{\n"
+"        public static void main(String args[])\n"
+"        {\n"
+"                try \n"
+"                {\n"
+"                        AtomicAction tx = new AtomicAction();\n"
+"                        tx.begin(); // Top level begin\n"
+"        \n"
+"                        // enlist the participant \n"
+"                        tx.add(SimpleRecord.create());\n"
+"        \n"
+"                        System.out.println(\"About to complete the "
+"transaction \");\n"
+"                        for (int i = 0; i &lt; args.length; i++)\n"
+"                        {\n"
+"                                if ((args[i].compareTo(\"-commit\") == 0))\n"
+"                                _commit = true;\n"
+"                                if ((args[i].compareTo(\"-rollback\") == "
+"0))\n"
+"                                _commit = false;\n"
+"                                if ((args[i].compareTo(\"-crash\") == 0))\n"
+"                                _crash = true;\n"
+"                        }\n"
+"                        if (_commit)\n"
+"                                tx.commit();  // Top level commit\n"
+"                        else \n"
+"                                tx.abort();  // Top level rollback\n"
+"                        } catch(Exception e) {\n"
+"                        e.printStackTrace();\n"
+"                }\n"
+"        }\n"
+"        protected static boolean _commit = true;\n"
+"        protected static boolean _crash = false;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:364
+#, no-c-format
+msgid "The registered participant has the following behavior:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:369
+#, no-c-format
+msgid ""
+"During the prepare phase, it writes a simple message - <emphasis>I’m "
+"prepared</emphasis>- on the disk such The message is written in a well known "
+"file."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:374
+#, no-c-format
+msgid ""
+"During the commit phase, it writes another message - <emphasis>I’m "
+"committed</emphasis>- in the same file used during prepare."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:379
+#, no-c-format
+msgid ""
+"If it receives an abort message, it removes from the disk the file used for "
+"prepare if any."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:384
+#, no-c-format
+msgid ""
+"If a crash has been decided for the test, then it crashes during the commit "
+"phase – the file remains with the message <emphasis>I’m prepared</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:389
+#, no-c-format
+msgid ""
+"The main portion of the code illustrating such behavior is described "
+"hereafter."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:393
+#, no-c-format
+msgid "The location of the file given in variable filename can be changed"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:397
+#, no-c-format
+msgid ""
+"package com.arjuna.demo.recoverymodule;\n"
+"        \n"
+"import com.arjuna.ats.arjuna.coordinator.*;\n"
+"import java.io.File;\n"
+"        \n"
+"public class SimpleRecord extends AbstractRecord {\n"
+"        public String filename = \"c:/tmp/RecordState\";\n"
+"        public SimpleRecord() {\n"
+"                System.out.println(\"Creating new resource\");\n"
+"        }\n"
+"        \n"
+"        public static AbstractRecord create()\n"
+"        {\n"
+"                return new SimpleRecord() ;\n"
+"        }\n"
+"        \n"
+"        public int topLevelAbort()\n"
+"        {\n"
+"                try {\n"
+"                        File fd = new File(filename);\n"
+"                        if (fd.exists()){\n"
+"                                if (fd.delete())\n"
+"                                        System.out.println(\"File Deleted"
+"\");\n"
+"                        }\n"
+"        }\n"
+"        catch(Exception ex){…}\n"
+"                return TwoPhaseOutcome.FINISH_OK;\n"
+"        }\n"
+"        \n"
+"        public int topLevelCommit()\n"
+"        {\n"
+"                if (TestRecoveryModule._crash)\n"
+"                        System.exit(0);\n"
+"                try  {\n"
+"                        java.io.FileOutputStream file = new    \n"
+"                                java.io.FileOutputStream(filename);\n"
+"                        java.io.PrintStream pfile = new java.io.PrintStream"
+"(file);\n"
+"                        pfile.println(\"I'm Committed\");\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex) {...}\n"
+"                return TwoPhaseOutcome.FINISH_OK ;\n"
+"        }\n"
+"        \n"
+"        public int topLevelPrepare()\n"
+"        {\n"
+"                try {\n"
+"                        java.io.FileOutputStream file = new\n"
+"                                java.io.FileOutputStream(filename);\n"
+"                        java.io.PrintStream pfile = new java.io.PrintStream"
+"(file);\n"
+"                        pfile.println(\"I'm prepared\");\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex)  {...}\n"
+"                return  TwoPhaseOutcome.PREPARE_OK ;\n"
+"        }\n"
+"        …\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:398
+#, no-c-format
+msgid ""
+"The role of the Recovery Module in such application consists to read the "
+"content of the file used to store the status of the participant, to "
+"determine that status and print a message indicating if a recovery action is "
+"needed or not."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:401
+#, no-c-format
+msgid ""
+"package com.arjuna.demo.recoverymodule;\n"
+"        \n"
+"import com.arjuna.ats.arjuna.recovery.RecoveryModule;\n"
+"        \n"
+"public class SimpleRecoveryModule implements RecoveryModule\n"
+"{\n"
+"        public String filename = \"c:/tmp/RecordState\";\n"
+"        public SimpleRecoveryModule ()\n"
+"        {\n"
+"                System.out.println(\"The SimpleRecoveryModule is loaded\");\n"
+"        };\n"
+"        \n"
+"        public void periodicWorkFirstPass ()\n"
+"        {\n"
+"                try\n"
+"                {\n"
+"                        java.io.FileInputStream file = new \n"
+"                                java.io.FileInputStream(filename);\n"
+"                        java.io.InputStreamReader input = new \n"
+"                                java.io.InputStreamReader(file);\n"
+"                        java.io.BufferedReader reader = new java.io."
+"BufferedReader(input);\n"
+"                        String stringState = reader.readLine();\n"
+"                        if (stringState.compareTo(\"I'm prepared\") == 0)\n"
+"                                System.out.println(\"The transaction is in "
+"the prepared state\");\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex)\n"
+"                { System.out.println(\"Nothing found on the Disk\"); }\n"
+"        }\n"
+"        \n"
+"        public void periodicWorkSecondPass ()\n"
+"        {\n"
+"                try\n"
+"                {\n"
+"                        java.io.FileInputStream file = new \n"
+"                                java.io.FileInputStream(filename);\n"
+"                        java.io.InputStreamReader input = new \n"
+"                                java.io.InputStreamReader(file);\n"
+"                        java.io.BufferedReader reader = new java.io."
+"BufferedReader(input);\n"
+"                        String stringState = reader.readLine();\n"
+"                        if (stringState.compareTo(\"I'm prepared\") == 0)\n"
+"                        {\n"
+"                                System.out.println(\"The record is still in "
+"the prepared state – Recovery is needed\");\n"
+"                        }\n"
+"                        else if (stringState.compareTo(\"I'm Committed\") == "
+"0)\n"
+"                        {\n"
+"                                System.out.println(\"The transaction has "
+"completed and committed\");     \n"
+"                        }\n"
+"                        file.close();\n"
+"                }\n"
+"                catch (java.io.IOException ex)\n"
+"                { System.out.println(\"Nothing found on the Disk - Either "
+"there was \n"
+"                        no transaction or it as been rolled back\"); }\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:402
+#, no-c-format
+msgid ""
+"The recovery module should now be deployed in order to be called by the "
+"Recovery Manager. To do so, we just need to add an entry in the "
+"<filename>RecoveryManager-properties.xml</filename> by adding a new property "
+"as follow:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:405
+#, no-c-format
+msgid ""
+"&lt;property\n"
+"                 name=\"com.arjuna.ats.arjuna.recovery.recoveryExtension&lt;"
+"i&gt;\"\n"
+"        value=\"com.arjuna.demo.recoverymodule.SimpleRecoveryModule\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:406
+#, no-c-format
+msgid ""
+"Where &lt;i&gt; represent the new occurrence number that follows the last "
+"that already exists in the file. Once started, the Recovery Manager will "
+"automatically load the added Recovery module."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:410
+#, no-c-format
+msgid ""
+"The source of the code can be retrieved under the trailmap directory of the "
+"JBossTS installation."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:415
+#, no-c-format
+msgid "Another scenario"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:416
+#, no-c-format
+msgid ""
+"As mentioned, the basic application presented above does not present the "
+"complete process to recover from failure, but it was just presented to "
+"describe how the build a recovery module. In case of the OTS protocol, let’s "
+"consider how a recovery module that manages recovery of OTS resources can be "
+"configured."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:420
+#, no-c-format
+msgid ""
+"To manage recovery in case of failure, the OTS specification has defined a "
+"recovery protocol. Transaction’s participants in a doubt status could use "
+"the RecoveryCoordinator to determine the status of the transaction. "
+"According to that transaction status, those participants can take "
+"appropriate decision either by roll backing or committing. Asking the "
+"RecoveryCoordinator object to determine the status consists to invoke the "
+"replay_completion operation on the RecoveryCoordinator."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:423
+#, no-c-format
+msgid ""
+"For each OTS Resource in a doubt status, it is well known which "
+"RecoveyCoordinator to invoke to determine the status of the transaction in "
+"which the Resource is involved – It’s the RecoveryCoordinator returned "
+"during the Resource registration process. Retrieving such "
+"RecoveryCoordinator per resource means that it has been stored in addition "
+"to other information describing the resource."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:426
+#, no-c-format
+msgid ""
+"A recovery module dedicated to recover OTS Resources could have the "
+"following behavior. When requested by the recovery Manager on the first pass "
+"it retrieves from the disk the list of resources that are in the doubt "
+"status. During the second pass, if the resources that were retrieved in the "
+"first pass still remain in the disk then they are considered as candidates "
+"for recovery. Therefore, the Recovery Module retrieves for each candidate "
+"its associated RecoveryCoordinator and invokes the replay_completion "
+"operation that the status of the transaction. According to the returned "
+"status, an appropriate action would be taken (for instance, rollback the "
+"resource is the status is aborted or inactive)."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:431
+#, no-c-format
+msgid "TransactionStatusConnectionManager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:432
+#, no-c-format
+msgid ""
+"The TransactionStatusConnectionManager object is used by the recovery "
+"modules to retrieve the status of transactions and acts like a proxy for "
+"TransactionStatusManager objects. It maintains a table of "
+"TransactionStatusConnector obects each of which connects to a "
+"TransactionStatusManager object in an Application Process."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:435
+#, no-c-format
+msgid ""
+"The transactions status is retrieved using the getTransactionStatus methods "
+"which take a transaction Uid and if available a transaction type as "
+"parameters. The process Uid field in the transactions Uid parameter is used "
+"to lookup the target TransactionStatusManagerItem host/port pair in the "
+"Object Store. The host/port pair are used to make a TCP connection to the "
+"target TransactionStatusManager object by a TransactionStatusConnector "
+"object. The TransactionStatusConnector passes the transaction Uid/"
+"transaction type to the TransactionStatusManager in order to retrieve the "
+"transactions status."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:440
+#, no-c-format
+msgid "Expired Scanner Thread"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:441
+#, no-c-format
+msgid ""
+"When the Recovery Manager initialises an expiry scanner thread "
+"ExpiryEntryMonitor is created which is used to remove long dead items from "
+"the ObjectStore. A number of scanner modules are dynamically loaded which "
+"remove long dead items for a particular type."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:444
+#, no-c-format
+msgid ""
+"Scanner modules are loaded at initialisation and are specified as properties "
+"beginning with"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:447
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScanner&lt;Scanner Name&gt;=&lt;Scanner "
+"Class&gt;"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:448
+#, no-c-format
+msgid ""
+"All the scanner modules are called periodically to scan for dead items by "
+"the ExpiryEntryMonitor thread. This period is set with the property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:451
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.recovery.expiryScanInterval"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:452
+#, no-c-format
+msgid ""
+"All scanners inherit the same behaviour from the java interface "
+"<interfacename>ExpiryScanner</interfacename> as illustrated in diagram below:"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:460
+#, no-c-format
+msgid ""
+"A scan method is provided by this interface and implemented by all scanner "
+"modules, this is the method that gets called by the scanner thread."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:463
+#, no-c-format
+msgid ""
+"The ExpiredTransactionStatusManagerScanner removes long dead "
+"TransactionStatusManagerItems from the Object Store. These items will remain "
+"in the Object Store for a period of time before they are deleted. This time "
+"is set by the property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:466
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:467
+#, no-c-format
+msgid "(default 12 hours)"
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:472
+#, no-c-format
+msgid "Application Process"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:473
+#, no-c-format
+msgid ""
+"This represents the user transactional program. A Local transaction (hash) "
+"table, maintained within the running application process keeps trace of the "
+"current status of all transactions created by that application process, The "
+"Recovery Manager needs access to the transaction tables so that it can "
+"determine whether a transaction is still in progress, if so then recovery "
+"does not happen."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:476
+#, no-c-format
+msgid ""
+"The transaction tables are accessed via the TransactionStatusManager object. "
+"On application program initialisation the host/port pair that represents the "
+"TransactionStatusManager is written to the Object Store in '../Recovery/"
+"TransactionStatusManager’ part of the Object Store file hierarchy and "
+"identified by the process Uid of the application process."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:479
+#, no-c-format
+msgid ""
+"The Recovery Manager uses the TransactionStatusConnectionManager object to "
+"retrieve the status of a transaction and a TransactionStatusConnector object "
+"is used to make a TCP connection to the TransactionStatusManager."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:484
+#, no-c-format
+msgid "TransactionStatusManager"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:485
+#, no-c-format
+msgid ""
+"This object acts as an interface for the Recovery Manager to obtain the "
+"status of transactions from running HPTS application processes. One "
+"TransactionStatusManager is created per application process by the class com."
+"arjuna.ats.arjuna.coordinator.InitAction. Currently a tcp connection is used "
+"for communication between the RecoveryManager and TransactionStatusManager. "
+"Any free port is used by the TransactionStatusManager by default, however "
+"the port can be fixed with the property:"
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:488
+#, no-c-format
+msgid "com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:489
+#, no-c-format
+msgid ""
+"On creation the TransactionStatusManager obtains a port which it stores with "
+"the host in the Object Store as a TransactionStatusManagerItem. A Listener "
+"thread is started which waits for a connection request from a "
+"TransactionStatusConnector. When a connection is established a Connection "
+"thread is created which runs a Service (AtomicActionStatusService) which "
+"accepts a transaction Uid and a transaction type (if available) from a "
+"TransactionStatusConnector, the transaction status is obtained from the "
+"local thransaction table and returned back to the TransactionStatusConnector."
+msgstr ""
+
+#. Tag: title
+#: Architecture_of_the_Recovery_Manager.xml:494
+#, no-c-format
+msgid "Object Store"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:495
+#, no-c-format
+msgid ""
+"All objects are stored in a file path which is equivalent to their class "
+"inheritance. Thus AtomicAction transactions are stored in file path ../"
+"StateManager/BasicAction/AtomicAction."
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:498
+#, no-c-format
+msgid ""
+"All objects are identified by a unique identifier Uid. One of the values of "
+"which is a process id in which the object was created. The Recovery Manager "
+"uses the process id to locate transaction status manager items when "
+"contacting the originator application process for the transaction status."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,48 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions Failure Recovery Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is the Enterprise Application Platform edition of the JBoss "
+"Transactions Failure Recovery Guide"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:20
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:26
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,693 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:6
+#, no-c-format
+msgid "How JBossTS manages the OTS Recovery Protocol"
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:10
+#, no-c-format
+msgid "Recovery Protocol in OTS-Overview"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:11
+#, no-c-format
+msgid ""
+"To manage recovery in case of failure, the OTS specification has defined a "
+"recovery protocol. Transaction’s participants in a doubt status could use "
+"the RecoveryCoordinator to determine the status of the transaction. "
+"According to that transaction status, those participants can take "
+"appropriate decision either by roll backing or committing."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:14
+#, no-c-format
+msgid ""
+"A reference to a RecoveryCoordinator is returned as a result of successfully "
+"calling register_resource on the transaction Coordinator. This object, which "
+"is implicitly associated with a single Resource, can be used to drive the "
+"Resource through recovery procedures in the event of a failure occurring "
+"during the transaction."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:21
+#, no-c-format
+msgid "Resource and RecoveryCoordinator relationship."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:26
+#, no-c-format
+msgid "RecoveryCoordinator in JBossTS"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:27
+#, no-c-format
+msgid ""
+"On each resource registration a RecoveryCoordinator Object is expected to be "
+"created and returned to the application that invoked the register_resource "
+"operation. Behind each CORBA object there should be an object implementation "
+"or Servant object, in POA terms, which performs operations made on a "
+"RecoveryCoordinator object. Rather than to create a RecoveryCoordinator "
+"object with its associated servant on each register_resource, JBossTS "
+"enhances performance by avoiding the creation of servants but it relies on a "
+"default RecoveryCoordinator object with it’s associated default servant to "
+"manage all replay_completion invocations."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:30
+#, no-c-format
+msgid ""
+"In the next sections we first give an overview of the Portable Object "
+"Adapter architecture, then we describe how this architecture is used to "
+"provide RecoveryCoordinator creation with optimization as explained above."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:34
+#, no-c-format
+msgid "Understanding POA"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:35
+#, no-c-format
+msgid ""
+"Basically, the Portable Object Adapter, or POA is an object that intercepts "
+"a client request and identifies the object that satisfies the client "
+"request. The Object is then invoked and the response is returned to the "
+"client."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:43
+#, no-c-format
+msgid "Overview of the POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:45
+#, no-c-format
+msgid ""
+"The object that performs the client request is referred as a servant, which "
+"provides the implementation of the CORBA object requested by the client. A "
+"servant provides the implementation for one or more CORBA object references. "
+"To retreive a servant, each POA maintains an Active Object Map that maps all "
+"objects that have been activated in the POA to a servant. For each incoming "
+"request, the POA looks up the object reference in the Active Object Map and "
+"tries to find the responsible servant. If none is found, the request is "
+"either delegated to a default servant, or a servant manager is invoked to "
+"activate or locate an appropriate servant. In addition to the name space for "
+"the objects, which are identified by Object Ids, a POA also provides a name "
+"space for POAs. A POA is created as a child of an existing POA, which forms "
+"a hierarchy starting with the root POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:48
+#, no-c-format
+msgid ""
+"Each POA has a set of policies that define its characteristics. When "
+"creating a new POA, the default set of policies can be used or different "
+"values can be assigned that suit the application requirements. The POA "
+"specification defines:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:53
+#, no-c-format
+msgid ""
+"<emphasis>Thread policy:</emphasis> Specifies the threading model to be used "
+"by the POA. Possible values are:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:58
+#, no-c-format
+msgid ""
+"ORB_CTRL_MODEL (default): The POA is responsible for assigning requests to "
+"threads."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:63
+#, no-c-format
+msgid "SINGLE_THREAD_MODEL: The POA processes requests sequentially"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:70
+#, no-c-format
+msgid ""
+"<emphasis>Lifespan policy:</emphasis> Specifies the lifespan of the objects "
+"implemented in the POA. The lifespan policy can have the following values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:75
+#, no-c-format
+msgid ""
+"TRANSIENT (Default) Objects implemented in the POA cannot outlive the "
+"process in which they are first created. Once the POA is deactivated, an "
+"OBJECT_NOT_EXIST exception occurs when attempting to use any object "
+"references generated by the POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:80
+#, no-c-format
+msgid ""
+"PERSISTENT Objects implemented in the POA can outlive the process in which "
+"they are first created."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:87
+#, no-c-format
+msgid ""
+"Object ID Uniqueness policy: Allows a single servant to be shared by many "
+"abstract objects. The Object ID Uniqueness policy can have the following "
+"values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:92
+#, no-c-format
+msgid "UNIQUE_ID (Default): Activated servants support only one Object ID."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:97
+#, no-c-format
+msgid ""
+"MULTIPLE_ID: Activated servants can have one or more Object IDs. The Object "
+"ID must be determined within the method being invoked at run time."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:104
+#, no-c-format
+msgid ""
+"ID Assignment policy: Specifies whether object IDs are generated by server "
+"applications or by the POA. The ID Assignment policy can have the following "
+"values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:109
+#, no-c-format
+msgid "USER_ID is for persistent objects, and"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:114
+#, no-c-format
+msgid "SYSTEM_ID is for transient objects."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:121
+#, no-c-format
+msgid ""
+"Servant Retention policy: Specifies whether the POA retains active servants "
+"in the Active Object Map. The Servant Retention policy can have the "
+"following values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:126
+#, no-c-format
+msgid ""
+"RETAIN (Default) The POA tracks object activations in the Active Object Map. "
+"RETAIN is usually used with ServantActivators or explicit activation methods "
+"on POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:131
+#, no-c-format
+msgid ""
+"NON_RETAIN The POA does not retain active servants in the Active Object Map. "
+"NON_RETAIN is typically used with ServantLocators."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:138
+#, no-c-format
+msgid ""
+"Request Processing policy: Specifies how requests are processed by the POA."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:143
+#, no-c-format
+msgid ""
+"USE_ACTIVE_OBJECT_MAP (Default): If the Object ID is not listed in the "
+"Active Object Map, an OBJECT_NOT _EXIST exception is returned. The POA must "
+"also use the RETAIN policy with this value."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:148
+#, no-c-format
+msgid ""
+"USE_DEFAULT_SERVANT: If the Object ID is not listed in the Active Object Map "
+"or the NON_RETAIN policy is set, the request is dispatched to the default "
+"servant. If no default servant has been registered, an OBJ_ADAPTER exception "
+"is returned. The POA must also use the MULTIPLE_ID policy with this value."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:153
+#, no-c-format
+msgid ""
+"USE_SERVANT_MANAGER: If the Object ID is not listed in the Active Object Map "
+"or the NON_RETAIN policy is set, the servant manager is used to obtain a "
+"servant."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:160
+#, no-c-format
+msgid ""
+"Implicit Activation policy: Specifies whether the POA supports implicit "
+"activation of servants. The Implicit Activation policy can have the "
+"following values:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:165
+#, no-c-format
+msgid ""
+"IMPLICIT_ACTIVATION: The POA supports implicit activation of servants. "
+"Servants can be activated by converting them to an object reference with "
+"<methodname>org.omg.PortableServer.POA.servant_to_reference()</methodname> "
+"or by invoking <methodname>_this()</methodname> on the servant. The POA must "
+"also use the SYSTEM_ID and RETAIN policies with this value."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:170
+#, no-c-format
+msgid ""
+"NO_IMPLICIT_ACTIVATION (Default): The POA does not support implicit "
+"activation of servants."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:177
+#, no-c-format
+msgid ""
+"It appears that to redirect replay_completion invocations to a default "
+"servant we need to create a POA with the Request Processing policy assigned "
+"with the value set to USE_DEFAULT_SERVANT. However to reach that default "
+"Servant we should first reach the POA that forward the request to the "
+"default servant. Indeed, the ORB uses a set of information to retrieve a "
+"POA; these information are contained in the object reference used by the "
+"client. Among these information there are the IP address and the port number "
+"where resides the server and also the POA name. JBossTS provides one servant "
+"per machine to perform replay_completion invocations. This servant is "
+"located in the RecoveryManager process. The RecoveryManager process is a "
+"separate process from the client and server applications. The next section "
+"explains how the indirection to a default Servant located on a separate "
+"process is provided for ORBIX and for JacORB."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:182
+#, no-c-format
+msgid "The default RecoveryCoordinator in Orbix"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:183
+#, no-c-format
+msgid ""
+"Within Orbix, objects are located by the Location Deamon. To avoid the "
+"overhead of using the location daemon, Orbix provides a mechanism named "
+"<emphasis>Direct Persistence</emphasis> allowing generating persistent "
+"object references. This mechanism is in fact a proprietary policy named, "
+"DIRECT_PERSISTENCE. A POA with policies of PERSISTENT and DIRECT_PERSISTENCE "
+"generates IORs that contain a well-known address for the server process. A "
+"POA that uses direct persistence must also tell each transport mechanism "
+"such as IIOP where in the configuration file it can find the well-known "
+"address that it should use. This is done by creating a "
+"<code>WellKnownAddressingPolicy</code> object and setting its value to the "
+"configuration scope that contains the well-known address."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:186
+#, no-c-format
+msgid ""
+"To specify the address used by the <code>WellKnownAddressingPolicy</code> "
+"object, JBossTS uses the Orbix mechanism that allows specifying an ORB/POA "
+"names. The following configuration modifications are necessary to define the "
+"well-know address of the RecoveryCoordinator performing replay_completion "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:190
+#, no-c-format
+msgid ""
+"Note that this configuration is also necessary to support transaction "
+"context propagation and interposition."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:194
+#, no-c-format
+msgid ""
+"A new orb name domain called arjuna should be created within the main Orbix "
+"2000 domain being used by the application. It requires the following format:"
+msgstr ""
+
+#. Tag: screen
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:197
+#, no-c-format
+msgid ""
+"arjuna\n"
+"{\n"
+"        portable_interceptor\n"
+"        {\n"
+"                orb_plugins = [\"local_log_stream\", \"iiop_profile\", \"giop"
+"\", \"iiop\", \"portable_interceptor\"];\n"
+"        \n"
+"                ots_recovery_coordinator\n"
+"                {\n"
+"                        recovery_coordinator:iiop:addr_list = [“&lt;name&gt;:"
+"&lt;port&gt;”];\n"
+"                };\n"
+"                        \n"
+"                ots_transaction\n"
+"                {\n"
+"                        transaction:iiop:addr_list = [“+&lt;name&gt;:&lt;"
+"port&gt;”];\n"
+"                };     \n"
+"                ots_context\n"
+"                {\n"
+"                        binding:client_binding_list = [\"OTS_Context\", "
+"\"OTS_Context+GIOP+SIOP\", \"GIOP+SIOP\", \"OTS_Context+GIOP+IIOP\", \"GIOP"
+"+IIOP\"];\n"
+"                        binding:server_binding_list = [\"OTS_Context\", "
+"\"\"];\n"
+"                };\n"
+"                                        \n"
+"                ots_interposition\n"
+"                {\n"
+"                        binding:client_binding_list = [\"OTS_Interposition"
+"\", \"OTS_Interposition+GIOP+SIOP\", \"GIOP+SIOP\", \"OTS_Interposition+GIOP"
+"+IIOP\", \"GIOP+IIOP\"];\n"
+"                        binding:server_binding_list = [\"OTS_Interposition"
+"\", \"\"];\n"
+"                };\n"
+"        };\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:198
+#, no-c-format
+msgid ""
+"The &lt;name&gt; field should be substituted by the name of the machine on "
+"which JBossTS is being run. The &lt;port&gt; field should be an unused port "
+"on which the JBossTS recovery manager may listen for recovery requests."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:201
+#, no-c-format
+msgid ""
+"Because of the way in which Orbix works with persistent POAs, if you want "
+"crash recovery support for your applications you must use one of the Arjuna "
+"ORB names provided (context or interposition) when running your clients and "
+"services. When using transaction context propagation only, the<parameter>–"
+"ORBname arjuna.portable_interceptor.ots_context</parameter> parameter should "
+"be passed to the client and server. When using context propagation and "
+"interposition, the <parameter>–ORBname.arjuna.portable_interceptor."
+"ots_interposition</parameter> parameter should be used. For example:"
+msgstr ""
+
+#. Tag: screen
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:204
+#, no-c-format
+msgid "java mytest –ORBname arjuna.portable_interceptor.ots_context"
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:206
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:287
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:207
+#, no-c-format
+msgid ""
+"When the Recovery Manager is launched it seeks in the configuration the "
+"RecoveryActivator that need be loaded. Once done it invokes the "
+"<methodname>startRCservice</methodname> method of each loaded instances. As "
+"seen in in the previous chapter (Recovery Manager) the class to load that "
+"implements the <interfacename>RecoveryActivator</interfacename> interface is "
+"the class <classname>RecoveryEnablement</classname>. This generic class, "
+"located in the package <package>com.arjuna.ats.internal.jts.orbspecific."
+"recovery</package>, hides the nature of the ORB being used by the "
+"application. The following figure illustrates the behavior of the "
+"<interfacename>RecoveryActivator</interfacename> that leads to the creation "
+"of the default servant that performs all replay_invocations requests."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:215
+#, no-c-format
+msgid ""
+"The Recovery Manager and the creation of the default servant for "
+"RecoveryCoordinator."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:218
+#, no-c-format
+msgid ""
+"There is one recovery Manager Process per machine, then one default servant "
+"per machine. Performing all replay_completion invocations means those made "
+"on the same machine."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:222
+#, no-c-format
+msgid ""
+"When started, the application, using JBossTS in library mode, is launched a "
+"child POA is created with the same policies as those defined within the "
+"Recovery Manager. This child POA is used to create object references, for "
+"RecoveryCoordinator CORBA objects, that need to be returned on "
+"register_resource invocations, as illustrated in figure below. The Object "
+"reference created has an Object ID that contains the transaction ID in "
+"progress and the Process Identifier of the application."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:226
+#, no-c-format
+msgid ""
+"If the Transaction Service is used in the stand-alone mode, the behavior to "
+"create object reference to RecoveryCoordinator objects is exactly the same; "
+"the process ID used in the Object ID is the Transaction Service process ID"
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:234
+#, no-c-format
+msgid ""
+"Resource registration and returned RecoveryCoordinator Object reference."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:236
+#, no-c-format
+msgid ""
+"Having the object reference of the RecoveryCoordinator, an application can "
+"use it to determine the status of the transaction for which that object "
+"reference is created. When a RecoveryCoordinator, according to POA policies "
+"is assigned to the POA included in the object reference, the request is "
+"forward straight to the default servant defined in the Recovery Manager, as "
+"described in the figure below."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:243
+#, no-c-format
+msgid ""
+"replay_completion invocation forwarded to the default RecoveryCoordinator ."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:245
+#, no-c-format
+msgid "The flow described in the figure can be depicted as follow:"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:250
+#, no-c-format
+msgid ""
+"The participant invokes the replay_completion operation on "
+"RecoveryCoordinator object using the object reference returned by the "
+"Transaction Server."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:255
+#, no-c-format
+msgid ""
+"The request is forwarded to the Recovery Manager process since the Well-"
+"known-address policy is used to retrieve."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:260
+#, no-c-format
+msgid "The child POA responsible to locate the servant is retrieved."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:265
+#, no-c-format
+msgid ""
+"After looking to the Active Object Map, the child POA invokes the default "
+"servant to perform the request. Note that the Object ID conveyed by the "
+"object reference is not retrieved in the AOP."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:270
+#, no-c-format
+msgid ""
+"The servant extracts from the request the Object ID that contains the "
+"Transaction ID and the process ID of the Transaction Server process. To "
+"determine if the process still alive, the TransactionStatusConnectionManager "
+"functionalities are used."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:275
+#, no-c-format
+msgid ""
+"According to the presence or not of the Transaction Server process and "
+"eventually the returned status, the servant returns the status of the "
+"transaction asked by the participant."
+msgstr ""
+
+#. Tag: title
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:282
+#, no-c-format
+msgid "The default RecoveryCoordinator in JacOrb"
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:283
+#, no-c-format
+msgid ""
+"JacORB does not define additional policies to redirect any request on a "
+"RecoveryCoordinator object to a default servant located in the Recovery "
+"Manager process. However it provides a set of APIs that allows building "
+"object references with specific IP address, port number and POA name in "
+"order to reach the appropriate default servant."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:288
+#, no-c-format
+msgid ""
+"When the Recovery Manager is launched it seeks in the configuration the "
+"RecoveryActivator that need be loaded. Once done it invokes the "
+"<methodname>startRCservice</methodname> method of each loaded instances. As "
+"seen in in the previous chapter (Recovery Manager ) the class to load that "
+"implements the <interfacename>RecoveryActivator</interfacename> interface is "
+"the class <classname>RecoveryEnablement</classname>. This generic class, "
+"located in the package <package>com.arjuna.ats.internal.jts.orbspecific."
+"recovery</package>, hides the nature of the ORB being used by the "
+"application (JacORB). The following figure illustrates the behavior of the "
+"<interfacename>RecoveryActivator</interfacename> that leads to the creation "
+"of the default servant that performs replay_completion invocations requests."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:292
+#, no-c-format
+msgid ""
+"In addition to the creation of the default servant, an object reference to a "
+"<code>RecoveryCoordinator</code> object is created and stored in the "
+"ObjectStore. As we will see this object reference will be used to obtain its "
+"IP address, port number and POA name and assign them to any "
+"<code>RecoveryCoordinator</code> object reference created on "
+"register_resource."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:299
+#, no-c-format
+msgid ""
+"replay_completion invocation forwarded to the default RecoveryCoordinator."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:301
+#, no-c-format
+msgid ""
+"When an application registers a resource with a transaction, a "
+"<code>RecoveryCoordinator</code> object reference is expected to be "
+"returned. To build that object reference, the Transaction Service uses the "
+"RecoveryCoordinator object reference created within the Recovery Manager as "
+"a template. The new object reference contains practically the same "
+"information to retrieve the default servant (IP address, port number, POA "
+"name, etc.), but the Object ID is changed; now, it contains the Transaction "
+"ID of the transaction in progress and also the Process ID of the process "
+"that is creating the new <code>RecoveryCoordinator</code> object reference, "
+"as illustrated below."
+msgstr ""
+
+#. Tag: caption
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:308
+#, no-c-format
+msgid ""
+"Resource registration and returned RecoveryCoordinator Object reference "
+"build from a reference stored in the ObjectStore."
+msgstr ""
+
+#. Tag: para
+#: How_JBossTS_managers_the_OTS_Recovery_Protocol.xml:310
+#, no-c-format
+msgid ""
+"Since a <code>RecoveryCoordintaor</code> object reference returned to an "
+"application contains all information to retrieve the POA then the default "
+"servant located in the Recovery Manager, all replay_completion invocation, "
+"per machine, are forwarded to the same default <code>RecoveryCoordinator</"
+"code> that is able to retreive the Object ID from the incoming request to "
+"extract the transaction identifier and the process identifier needed to "
+"determine the status of the requested transaction."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/JBoss_Transactions_Failure_Recovery_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Preface.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Preface.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,11 @@
+#Makefile for Transactions_Installation_Guide
+
+XML_LANG	= en-US
+
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,30 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="Transactions_Installation_Guide-Product_Name_and_Version">
+	<title>JBoss Transactions Installation Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>4</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.2</productnumber>
+	<abstract><para>This book is about installing the JBoss Transactions Arjuna Core</para></abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata format='SVG' fileref="Common_Content/images/title_logo.svg" />
+			</imageobject>
+			<textobject><phrase>Logo</phrase></textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,274 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Transactions_Installation_Guide-Installing_ArjunaCore">
+	<title>Installing AjunaCore</title>
+	<section id="Transactions_Installation_Guide-Installing_ArjunaCore-Preparing_your_system">
+		<title>Preparing your system</title>
+		<para>
+			Before installing the <firstterm>ArjunaCore</firstterm> software, we recommend the following administrative steps be taken, assuming a default configuration for ArjunaCore:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Install the distribution into the required location.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					ArjunaCore requires a minimum object store for storing the outcome of transactions in the event of system crashes. The location of this should be specified in the properties file using the <varname>com.arjuna.ats.arjuna.objectstore.objectStoreDir environment variable</varname>, for example, <varname>java –Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=C:\temp foo</varname>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					By default, all object states will be stored within the defaultStore subdirectory of the object store root, for example, /usr/local/Arjuna/TransactionService/ObjectStore/defaultStore. However,  this subdirectory can be changed by setting the <property>com.arjuna.ats.arjuna.objectstore.localOSRoot</property> property variable accordingly.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Transactions_Installation_Guide-Installing_ArjunaCore-Operating_System_Services">
+		<title>Operating System Services</title>
+		<para>
+			It is possible to run the recovery manager and transaction server as operating system services.
+		</para>
+		<formalpara>
+			<title>Installing and Uninstalling</title>
+			<para>
+				This section explains how to install and uninstall these operating system services for the two main types of operating system:  Windows and UNIX (Solaris, Linux and HP-UX).
+			</para>
+		</formalpara>
+		<formalpara>
+			<title>Windows</title>
+			<para>
+				There are four scripts provided which will install/uninstall the recovery manager and transaction server services, these files can be found in Services\bin\windows:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Recovery Manager Service
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							<code>InstallRecoveryManagerService-NT.bat</code>: running this script will install the Recovery Manager as a Windows service.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							<code>UninstallRecoveryManagerService-NT.bat</code>: running this script will uninstall the Recovery Manager as a Windows service.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+			<listitem>
+				<para>
+					Transaction Server
+				</para>
+				<itemizedlist>
+					<listitem>
+						<para>
+							<code>InstallTransactionServerService-NT.bat</code>: running this script will install the Transaction Manager as a Windows service.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							<code>UninstallTransactionServerService-NT.bat</code>: running this script will uninstall the Transaction Server as a Windows service.
+						</para>
+					</listitem>
+				</itemizedlist>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Please note that you must either be logged on as an administrator or have administrator privileges to install/uninstall a Windows service.
+		</para>
+		<para>
+			Once you have run an install script you should see the following message:
+		</para>
+<screen>
+	wrapper  | JBoss Transaction Service &lt;service name&gt; installed
+</screen>
+		<para>
+			This indicates that the service has been installed successfully.  The service should also be visible in the services list from the Control Panel (see Figure 1 Services list from the Control Panel) 
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="Win_Services.png" format="PNG"/>
+			</imageobject>
+			<caption>Services list from the Control Panel</caption>
+		</mediaobject>
+		<para>
+			Once you have run an uninstall script you should see the following message:
+		</para>
+<screen>
+	wrapper  | JBoss Transaction Service &lt;service name&gt; removed.
+</screen>
+		<para>
+			This indicates that the service has been uninstalled successfully.
+		</para>
+		<formalpara>
+			<title>Unix</title>
+			<para>
+				To install the services on Unix machines perform the following steps:
+			</para>
+		</formalpara>
+		<orderedlist>
+			<listitem>
+				<para>
+					Make sure that you are logged in as the user <emphasis>root</emphasis>, as the installer needs to create files under the directory /etc.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Change directory to services/installer.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Make sure the environment variable JAVA_HOME is set to the home directory of the JVM you wish the services to be run as.  For example:
+				</para>
+				<para>
+					<code>JAVA_HOME=/opt/java; export JAVA_HOME</code> (for sh)
+				</para>
+				<para>
+					<code>setenv JAVA_HOME /opt/java</code> (for csh)
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Run the installer script:
+				</para>
+				<para>
+					<code>./install_services.sh</code>
+				</para>
+			</listitem>
+		</orderedlist>
+		<para>
+			The following is example output from a computer running the Solaris operating system:
+		</para>
+<screen>
+# ./install_services.sh
+
+Adding $JAVA_HOME (/opt/java) to $PATH in
+/opt/arjuna/ats-3.2/services/bin/solaris/recoverymanagerservice.sh
+Adding $JAVA_HOME (/opt/java) to $PATH in
+/opt/arjuna/ats-3.2/services/bin/solaris/transactionserverservice.sh
+Installing shutdown scripts into /etc/rcS.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Installing shutdown scripts into /etc/rc0.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Installing shutdown scripts into /etc/rc1.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Installing shutdown scripts into /etc/rc2.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Installing startup scripts into /etc/rc3.d:
+	S98recoverymanagerservice
+ 	S99transactionserverservice
+</screen>
+		<para>
+			Upon restarting the computer the transaction server and recovery manager service should be started.  To uninstall the services on a Unix machine simply perform the following steps:
+		</para>
+		<orderedlist>
+			<listitem>
+				<para>
+					Make sure that you are logged in as the user <emphasis>root</emphasis>, as the installer needs to remove files under the directory /etc.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Change directory to services/installer.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Run the installer script with the <command>-u</command> argument:
+				</para>
+			</listitem>
+		</orderedlist>
+		<para>
+			The following is example output from a computer running the Solaris operating system:
+		</para>
+<screen>
+# ./install_services.sh
+
+Removing startup scripts from /etc/rc3.d:
+	S98recoverymanagerservice
+	S99transactionserverservice
+Removing shutdown scripts from /etc/rcS.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Removing shutdown scripts from /etc/rc0.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Removing shutdown scripts from /etc/rc1.d:
+	K01recoverymanagerservice
+	K00transactionserverservice
+Removing shutdown scripts from /etc/rc2.d:
+	K01recoverymanagerservice
+	K00transactionserverservice 
+</screen>
+		<formalpara>
+			<title>Logging</title>
+			<para>
+				The recovery manager and the transaction server services produce log files which are located in the services/logs/ directory.  There are two log files per service one called <filename>&lt;service name&gt;-service.log</filename> (for example, <filename>recovery-manager-service.log</filename>), which contains information regarding the state of the service (e.g. started, stopped, restarted etc). The other is called <filename>&lt;services-name&gt;.log</filename> (for example, <filename>recovery-manager.log</filename>) this contains information logged from the actual service (for example, application level logging).
+			</para>
+		</formalpara>
+		<para>
+			To configure what information is logged in these files please edit the appropriate LOG4J configuration files which are located in services/config/.
+		</para>
+	</section>
+	<section id="Transactions_Installation_Guide-Installing_ArjunaCore-ObjectStore_management">
+		<title>ObjectStore management</title>
+		<para>
+			Within the transaction service installation, the object store is updated regularly whenever transactions are created, or when Transactional Objects for Java is used. In a failure free environment, the only object states which should reside within the object store are those representing objects created with the Transactional Objects for Java API. However, if failures occur, transaction logs may remain in the object store until crash recovery facilities have resolved the transactions they represent. As such it is very important that the contents of the object store are not deleted without due care and attention, as this will make it impossible to resolve in doubt transactions. In addition, if multiple users share the same object store it is important that they realise this and do not simply delete the contents of the object store assuming it is an exclusive resource.
+		</para>
+	</section>
+	<section id="Transactions_Installation_Guide-Installing_ArjunaCore-Additional_jar_requirements">
+		<title>Additional jar requirements</title>
+		<para>
+			In order to fully utilize all of the facilities available within ArjunaCore, it will be necessary to add all of the jar files contained in the lib directory of the distribution.
+		</para>
+	</section>
+	<section id="Transactions_Installation_Guide-Installing_ArjunaCore-Setting_properties">
+		<title>Setting properties</title>
+		<para>
+			ArjunaCore has been designed to be highly configurable at runtime through the use of various property attributes, which will be described in subsequent sections. Although these attributes can be provided at runtime on the command line, it is possible (and may be more convenient) to specify them through a single properties file. At runtime ArjunaCore looks for the file <filename>jbossjts-properties.xml</filename> in the following order:
+		</para>
+		<orderedlist>
+			<listitem>
+				<para>
+					the current working directory. For instance, where the application was executed from.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					the user’s home directory.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					the etc directory of the ArjunaCore installation; this must be placed in your CLASSPATH.
+				</para>
+			</listitem>
+		</orderedlist>
+		<para>
+			If found, all entries within this file will be added to the system properties. Obviously non-ArjunaCore specific properties can also be specified in this file. For example:
+		</para>
+<screen>
+&lt;property
+	name="com.arjuna.ats.arjuna.coordinator.asyncCommit" value="NO"/&gt;
+&lt;property
+	name="com.arjuna.ats.arjuna.objectstore.objectStoreDir" value="c:\temp\ObjectStore"/&gt;
+</screen>
+		<para>
+			The name of the properties file can be overridden at runtime by specifying a new file using the <varname>com.arjuna.ats.arjuna.common.propertiesFile</varname> attribute variable.
+		</para>
+	</section>
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,6 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_Installation_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Installing_ArjunaCore.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Preface.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,13 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="Transactions_Installation_Guide-Preface">
+	<title>Preface</title>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
+		<xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+			<xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+		</xi:fallback>
+	</xi:include>
+</preface>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/Win_Services.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/Win_Services.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/en-US/images/icon.svg	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions Installation Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:12
+#, no-c-format
+msgid "This book is about installing the JBoss Transactions Arjuna Core"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:18
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:23
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Installing_ArjunaCore.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Installing_ArjunaCore.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Installing_ArjunaCore.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,485 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:6
+#, no-c-format
+msgid "Installing AjunaCore"
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:8
+#, no-c-format
+msgid "Preparing your system"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:9
+#, no-c-format
+msgid ""
+"Before installing the <firstterm>ArjunaCore</firstterm> software, we "
+"recommend the following administrative steps be taken, assuming a default "
+"configuration for ArjunaCore:"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:14
+#, no-c-format
+msgid "Install the distribution into the required location."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:19
+#, no-c-format
+msgid ""
+"ArjunaCore requires a minimum object store for storing the outcome of "
+"transactions in the event of system crashes. The location of this should be "
+"specified in the properties file using the <varname>com.arjuna.ats.arjuna."
+"objectstore.objectStoreDir environment variable</varname>, for example, "
+"<varname>java –Dcom.arjuna.ats.arjuna.objectstore.objectStoreDir=C:\\temp "
+"foo</varname>."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:24
+#, no-c-format
+msgid ""
+"By default, all object states will be stored within the defaultStore "
+"subdirectory of the object store root, for example, /usr/local/Arjuna/"
+"TransactionService/ObjectStore/defaultStore. However, this subdirectory can "
+"be changed by setting the <property>com.arjuna.ats.arjuna.objectstore."
+"localOSRoot</property> property variable accordingly."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:32
+#, no-c-format
+msgid "Operating System Services"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:33
+#, no-c-format
+msgid ""
+"It is possible to run the recovery manager and transaction server as "
+"operating system services."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:37
+#, no-c-format
+msgid "Installing and Uninstalling"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:38
+#, no-c-format
+msgid ""
+"This section explains how to install and uninstall these operating system "
+"services for the two main types of operating system: Windows and UNIX "
+"(Solaris, Linux and HP-UX)."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:43
+#, no-c-format
+msgid "Windows"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:44
+#, no-c-format
+msgid ""
+"There are four scripts provided which will install/uninstall the recovery "
+"manager and transaction server services, these files can be found in Services"
+"\\bin\\windows:"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:50
+#, no-c-format
+msgid "Recovery Manager Service"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:55
+#, no-c-format
+msgid ""
+"<code>InstallRecoveryManagerService-NT.bat</code>: running this script will "
+"install the Recovery Manager as a Windows service."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:60
+#, no-c-format
+msgid ""
+"<code>UninstallRecoveryManagerService-NT.bat</code>: running this script "
+"will uninstall the Recovery Manager as a Windows service."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:67
+#, no-c-format
+msgid "Transaction Server"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:72
+#, no-c-format
+msgid ""
+"<code>InstallTransactionServerService-NT.bat</code>: running this script "
+"will install the Transaction Manager as a Windows service."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:77
+#, no-c-format
+msgid ""
+"<code>UninstallTransactionServerService-NT.bat</code>: running this script "
+"will uninstall the Transaction Server as a Windows service."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:84
+#, no-c-format
+msgid ""
+"Please note that you must either be logged on as an administrator or have "
+"administrator privileges to install/uninstall a Windows service."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:87
+#, no-c-format
+msgid ""
+"Once you have run an install script you should see the following message:"
+msgstr ""
+
+#. Tag: screen
+#: Installing_ArjunaCore.xml:90
+#, no-c-format
+msgid "wrapper  | JBoss Transaction Service &lt;service name&gt; installed"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:91
+#, no-c-format
+msgid ""
+"This indicates that the service has been installed successfully. The service "
+"should also be visible in the services list from the Control Panel (see "
+"Figure 1 Services list from the Control Panel)"
+msgstr ""
+
+#. Tag: caption
+#: Installing_ArjunaCore.xml:98
+#, no-c-format
+msgid "Services list from the Control Panel"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:100
+#, no-c-format
+msgid ""
+"Once you have run an uninstall script you should see the following message:"
+msgstr ""
+
+#. Tag: screen
+#: Installing_ArjunaCore.xml:103
+#, no-c-format
+msgid "wrapper  | JBoss Transaction Service &lt;service name&gt; removed."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:104
+#, no-c-format
+msgid "This indicates that the service has been uninstalled successfully."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:108
+#, no-c-format
+msgid "Unix"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:109
+#, no-c-format
+msgid "To install the services on Unix machines perform the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:115
+#, no-c-format
+msgid ""
+"Make sure that you are logged in as the user <emphasis>root</emphasis>, as "
+"the installer needs to create files under the directory /etc."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:120 Installing_ArjunaCore.xml:158
+#, no-c-format
+msgid "Change directory to services/installer."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:125
+#, no-c-format
+msgid ""
+"Make sure the environment variable JAVA_HOME is set to the home directory of "
+"the JVM you wish the services to be run as. For example:"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:128
+#, no-c-format
+msgid "<code>JAVA_HOME=/opt/java; export JAVA_HOME</code> (for sh)"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:131
+#, no-c-format
+msgid "<code>setenv JAVA_HOME /opt/java</code> (for csh)"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:136
+#, no-c-format
+msgid "Run the installer script:"
+msgstr ""
+
+#. Tag: code
+#: Installing_ArjunaCore.xml:140
+#, no-c-format
+msgid "./install_services.sh"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:144 Installing_ArjunaCore.xml:168
+#, no-c-format
+msgid ""
+"The following is example output from a computer running the Solaris "
+"operating system:"
+msgstr ""
+
+#. Tag: screen
+#: Installing_ArjunaCore.xml:147
+#, no-c-format
+msgid ""
+"# ./install_services.sh\n"
+"\n"
+"Adding $JAVA_HOME (/opt/java) to $PATH in\n"
+"/opt/arjuna/ats-3.2/services/bin/solaris/recoverymanagerservice.sh\n"
+"Adding $JAVA_HOME (/opt/java) to $PATH in\n"
+"/opt/arjuna/ats-3.2/services/bin/solaris/transactionserverservice.sh\n"
+"Installing shutdown scripts into /etc/rcS.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Installing shutdown scripts into /etc/rc0.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Installing shutdown scripts into /etc/rc1.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Installing shutdown scripts into /etc/rc2.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Installing startup scripts into /etc/rc3.d:\n"
+"        S98recoverymanagerservice\n"
+"         S99transactionserverservice"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:148
+#, no-c-format
+msgid ""
+"Upon restarting the computer the transaction server and recovery manager "
+"service should be started. To uninstall the services on a Unix machine "
+"simply perform the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:153
+#, no-c-format
+msgid ""
+"Make sure that you are logged in as the user <emphasis>root</emphasis>, as "
+"the installer needs to remove files under the directory /etc."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:163
+#, no-c-format
+msgid "Run the installer script with the <command>-u</command> argument:"
+msgstr ""
+
+#. Tag: screen
+#: Installing_ArjunaCore.xml:171
+#, no-c-format
+msgid ""
+"# ./install_services.sh\n"
+"\n"
+"Removing startup scripts from /etc/rc3.d:\n"
+"        S98recoverymanagerservice\n"
+"        S99transactionserverservice\n"
+"Removing shutdown scripts from /etc/rcS.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Removing shutdown scripts from /etc/rc0.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Removing shutdown scripts from /etc/rc1.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice\n"
+"Removing shutdown scripts from /etc/rc2.d:\n"
+"        K01recoverymanagerservice\n"
+"        K00transactionserverservice"
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:173
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:174
+#, no-c-format
+msgid ""
+"The recovery manager and the transaction server services produce log files "
+"which are located in the services/logs/ directory. There are two log files "
+"per service one called <filename>&lt;service name&gt;-service.log</filename> "
+"(for example, <filename>recovery-manager-service.log</filename>), which "
+"contains information regarding the state of the service (e.g. started, "
+"stopped, restarted etc). The other is called <filename>&lt;services-name&gt;."
+"log</filename> (for example, <filename>recovery-manager.log</filename>) this "
+"contains information logged from the actual service (for example, "
+"application level logging)."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:178
+#, no-c-format
+msgid ""
+"To configure what information is logged in these files please edit the "
+"appropriate LOG4J configuration files which are located in services/config/."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:183
+#, no-c-format
+msgid "ObjectStore management"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:184
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:189
+#, no-c-format
+msgid "Additional jar requirements"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:190
+#, no-c-format
+msgid ""
+"In order to fully utilize all of the facilities available within ArjunaCore, "
+"it will be necessary to add all of the jar files contained in the lib "
+"directory of the distribution."
+msgstr ""
+
+#. Tag: title
+#: Installing_ArjunaCore.xml:195
+#, no-c-format
+msgid "Setting properties"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:196
+#, no-c-format
+msgid ""
+"ArjunaCore has been designed to be highly configurable at runtime through "
+"the use of various property attributes, which will be described in "
+"subsequent sections. Although these attributes can be provided at runtime on "
+"the command line, it is possible (and may be more convenient) to specify "
+"them through a single properties file. At runtime ArjunaCore looks for the "
+"file <filename>jbossjts-properties.xml</filename> in the following order:"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:201
+#, no-c-format
+msgid ""
+"the current working directory. For instance, where the application was "
+"executed from."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:206
+#, no-c-format
+msgid "the user’s home directory."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:211
+#, no-c-format
+msgid ""
+"the etc directory of the ArjunaCore installation; this must be placed in "
+"your CLASSPATH."
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:216
+#, no-c-format
+msgid ""
+"If found, all entries within this file will be added to the system "
+"properties. Obviously non-ArjunaCore specific properties can also be "
+"specified in this file. For example:"
+msgstr ""
+
+#. Tag: screen
+#: Installing_ArjunaCore.xml:219
+#, no-c-format
+msgid ""
+"&lt;property\n"
+"        name=\"com.arjuna.ats.arjuna.coordinator.asyncCommit\" value=\"NO\"/"
+"&gt;\n"
+"&lt;property\n"
+"        name=\"com.arjuna.ats.arjuna.objectstore.objectStoreDir\" value=\"c:"
+"\\temp\\ObjectStore\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Installing_ArjunaCore.xml:220
+#, no-c-format
+msgid ""
+"The name of the properties file can be overridden at runtime by specifying a "
+"new file using the <varname>com.arjuna.ats.arjuna.common.propertiesFile</"
+"varname> attribute variable."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/JBoss_Transactions_Installation_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Preface.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Preface.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Installation_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:33+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,11 @@
+#Makefile for Transactions_JTA_Administration_Guide
+
+XML_LANG	= en-US
+
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,454 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA">
+	<title>Administration of ArjunaTA</title>
+	<section id="sect-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA-Introduction">
+		<title>Introduction</title>
+		<para>
+			Apart from ensuring that the run-time system is executing normally, there is little continuous administration needed for the <firstterm>ArjunaTA</firstterm> software. There are a few points however, that should be made:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The present implementation of the ArjunaTA system provides no security or protection for data. The objects stored in the ArjunaTA object store are (typically) owned by the user who ran the application that created them. The Object Store and Object Manager facilities make no attempt to enforce even the limited form of protection that Unix/Windows provides. There is no checking of user or group IDs on access to objects for either reading or writing.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Persistent objects created in the Object Store never go away unless the <methodname>StateManager.destroy</methodname> method is invoked on the object or some application program explicitly deletes them. This means that the Object Store gradually accumulates garbage (especially during application development and testing phases). At present we have no automated garbage collection facility. Further, we have not addressed the problem of dangling references. That is, a persistent object, A, may have stored a Uid for another persistent object, B, in its passive representation on disk. There is nothing to prevent an application from deleting B even though A still contains a reference to it. When A is next activated and attempts to access B, a run-time error will occur.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					There is presently no support for version control of objects or database reconfiguration in the event of class structure changes. This is a complex research area that we have not addressed. At present, if you change the definition of a class of persistent objects, you are entirely responsible for ensuring that existing instances of the object in the Object Store are converted to the new representation. The ArjunaTA software can neither detect nor correct references to old object state by new operation versions or vice versa.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Object store management is critically important to the transaction service.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA-ObjectStore_management">
+		<title>ObjectStore management</title>
+		<para>
+			Within the transaction service installation, the object store is updated regularly whenever transactions are created, or when Transactional Objects for Java is used. In a failure free environment, the only object states which should reside within the object store are those representing objects created with the Transactional Objects for Java API. However, if failures occur, transaction logs may remain in the object store until crash recovery facilities have resolved the transactions they represent. As such it is very important that the contents of the object store are not deleted without due care and attention, as this will make it impossible to resolve in doubt transactions. In addition, if multiple users share the same object store it is important that they realise this and do not simply delete the contents of the object store assuming it is an exclusive resource.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA-ArjunaTA_runtime_information">
+		<title>ArjunaTA runtime information</title>
+		<para>
+			Each module that comprises ArjunaTA possesses a class called Info. These classes all provide a single toString method that returns an XML document representing the configuration information for that module. So, for example:
+		</para>
+<screen>
+	&lt;module-info name="arjuna"&gt;&lt;source-identifier&gt;unknown&lt;/source-identifier&gt;&lt;build-information&gt;Arjuna Technologies [mlittle] (Windows 2000 5.0)&lt;/build-information&gt;&lt;version&gt;unknown&lt;/version&gt;&lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;&lt;notes&gt;&lt;/notes&gt;&lt;configuration&gt;&lt;properties-file dir="null"&gt;arjuna.properties&lt;/properties-file&gt;&lt;object-store-root&gt;null&lt;/object-store-root&gt;&lt;/configuration&gt;&lt;/module-info&gt;
+</screen>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA-Failure_recovery_administration">
+		<title>Failure recovery administration</title>
+		<para>
+			The failure recovery subsystem of ArjunaTA will ensure that results of a transaction are applied consistently to all resources affected by the transaction, even if any of the application processes or the machine hosting them crash or lose network connectivity. In the case of machine (system) crash or network failure, the recovery will not take place until the system or network are restored, but the original application does not need to be restarted – recovery responsibility is delegated to the Recovery Manager process (see below). Recovery after failure requires that information about the transaction and the resources involved survives the failure and is accessible afterward: this information is held in the ActionStore, which is part of the ObjectStore.
+		</para>
+		<warning>
+			<para>
+				If the ObjectStore is destroyed or modified, recovery may not be possible.
+			</para>
+		</warning>
+		<para>
+			Until the recovery procedures are complete, resources affected by a transaction that was in progress at the time of the failure may be inaccessible. For database resources, this may be reported as tables or rows held by <emphasis>in-doubt transactions</emphasis>. For TransactionalObjects for Java resources, an attempt to activate the Transactional Object (as when trying to get a lock) will fail.
+		</para>
+		<formalpara id="form-Transactions_JTA_Administration_Guide-Failure_recovery_administration-The_Recovery_Manager">
+			<title>The Recovery Manager</title>
+			<para>
+				The failure recovery subsystem of ArjunaTA requires that the stand-alone Recovery Manager process be running for each ObjectStore (typically one for each node on the network that is running ArjunaTA applications). The <filename>RecoveryManager</filename> file is located in the <filename>arjunacore</filename> jar file within the package <package>com.arjuna.ats.arjuna.recovery.RecoveryManager</package>. To start the Recovery Manager issue the following command:
+			</para>
+		</formalpara>
+<screen>
+java com.arjuna.ats.arjuna.recovery.RecoveryManager
+</screen>
+		<para>
+			If the -test flag is used with the Recovery Manager then it will display a <emphasis>Ready</emphasis> message when initialised, for instance:
+		</para>
+<screen>
+java com.arjuna.ats.arjuna.recovery.RecoveryManager -test
+</screen>
+		<formalpara id="form-Transactions_JTA_Administration_Guide-Failure_recovery_administration-Configuring_the_Recovery_Manager">
+			<title>Configuring the Recovery Manager</title>
+			<para>
+				The RecoveryManager reads the properties defined in the arjuna.properties file and then also reads the property file RecoveryManager.properties, from the same directory as it found the arjuna properties file. An entry for a property in the RecoveryManager properties file will override an entry for the same property in the main TransactionService properties file. Most of the entries are specific to the Recovery Manager.
+			</para>
+		</formalpara>
+		<para>
+			A default version of RecoveryManager.properties is supplied with the distribution – this can be used without modification, except possibly the debug tracing fields (see below, Output). The rest of this section discusses the issues relevant in setting the properties to other values (in the order of their appearance in the default version of the file).
+		</para>
+		<formalpara id="form-Transactions_JTA_Administration_Guide-Failure_recovery_administration-Output">
+			<title>Output</title>
+			<para>
+				It is likely that installations will want to have some form of output from the RecoveryManager, to provide a record of what recovery activity has taken place. RecoveryManager uses the logging tracing mechanism provided by the Arjuna Common Logging Framework (CLF), which provides a high level interface that hides differences that exist between existing logging APIs such Jakarta log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache Commons Logging framework and configuration is assumed to occur through that framework.
+			</para>
+		</formalpara>
+		<para>
+			With the CLF applications make logging calls on logger objects. Loggers may use logging Levels to decide if they are interested in a particular log message. Each log message has an associated log Level, that gives the importance and urgency of a log message. The set of possible Log Levels are DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL.
+		</para>
+		<para>
+			The CLF provides an extension to filter logging messages according to finer granularity an application may define. That is, when a log message is provided to the logger with the DEBUG level, additional conditions can be specified to determine if the log message is enabled or not.
+		</para>
+		<note>
+			<para>
+				These conditions are applied if and only the DEBUG level is enabled and the log request performed by the application specifies debugging granularity.
+			</para>
+		</note>
+		<para>
+			When enabled, Debugging is filtered conditionally on three variables:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Debugging level: this is where the log request with the DEBUG Level is generated from, for example, constructors or basic methods.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Visibility level: the visibility of the constructor, method, etc. that generates the debugging.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Facility code: for instance the package or sub-module within which debugging is generated, for example, the object store.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			According to these variables the CLF defines three interfaces. A particular product may implement its own classes according to its own finer granularity. ArjunaTA uses the default Debugging level and the default Visibility level provided by CLF, but it defines its own Facility Code. ArjunaTA uses the default level assigned to its logger objects (DEBUG). However, it uses the finer debugging features to disable or enable debug messages. Finer debugging values used by the ArjunaTA are defined below:
+		</para>
+		<para>
+			Debugging level – ArjunaTA uses the default values defined in the class <classname>com.arjuna.common.util.logging.DebugLevel</classname>
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					NO_DEBUGGING: No diagnostics.
+				</para>
+				<para>
+					A logger object assigned with this values discard all debug requests
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FULL_DEBUGGING: Full diagnostics.
+				</para>
+				<para>
+					A Logger object assigned with this value allows all debug requests if the facility code and the visibility level match those allowed by the logger.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Additional Debugging Values are:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					CONSTRUCTORS: Diagnostics from constructors.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					DESTRUCTORS: Diagnostics from finalizers.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FUNCTIONS: Diagnostics from functions.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					OPERATORS: Diagnostics from operators, such as equals.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FUNCS_AND_OPS: Diagnostics from functions and operations.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					TRIVIAL_FUNCS: Diagnostics from trivial functions.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					ALL_TRIVIAL: Diagnostics from all trivial operations.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Visibility level – ArjunaTA uses the default values defined in the class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					VIS_NONE: No Diagnostic
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					VIS_PRIVATE: Only from private methods.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					VIS_PROTECTED: Only from protected methods.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					VIS_PUBLIC: Only from public methods.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					VIS_PACKAGE: only from package methods.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					VIS_ALL: Full Diagnostic .
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Facility Code – ArjunaTA uses the following values defined in the class <classname>com.arjuna.common.util.logging.VisibilityLevel</classname>.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_ABSTRACT_REC = 0x00000008 (abstract records).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_OBJECT_STORE = 0x00000010 (object store implementations).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_STATE_MAN = 0x00000020 (state management and StateManager).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_SHMEM = 0x00000040 (shared memory implementation classes).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_GENERAL = 0x00000080 (general classes).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and classes).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_THREADING = 0x00002000 (threading classes).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager).
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			To ensure appropriate output, it is necessary to set some of the finer debug properties explicitly in the <filename>CommonLogging.xml</filename> file, to enable logging messages issued by the ArjunaTA module.
+		</para>
+		<para>
+			Messages describing the start and the periodical behavior made by the RecoveryManager are output using the INFO level. If other debug tracing is wanted, the finer debugging level should be set appropriately. For instance, the following configuration, in the <filename>CommonLogging.xml</filename>, enables all debug messages related to the Crash Recovery protocol and issued by the ArjunaTA module.
+		</para>
+<screen>
+&lt;!--  Common logging related properties.   --&gt;
+	&lt;property
+		 name="com.arjuna.common.util.logging.DebugLevel"
+		 value="0x00000000"/&gt;
+	&lt;property
+		 name="com.arjuna.common.util.logging.FacilityLevel"
+		 value="0xffffffff"/&gt;
+	&lt;property
+		 name="com.arjuna.common.util.logging.VisibilityLevel"
+		 value="0xffffffff"/&gt;
+</screen>
+		<note>
+			<para>
+				Two logger objects are provided, one manages I18N messages and a second does not.
+			</para>
+		</note>
+		<para>
+			Setting the normal recovery messages to the INFO level allows the RecoveryManager producing a moderate level of reporting. If nothing is going on, it just reports the entry into each module for each periodic pass. To disable INFO messages produced by the Recovery Manager, the logging level could be set to the higher level: ERROR. Setting the level to ERROR means that the RecoveryManager will only produce error, warning or fatal messages.
+		</para>
+		<formalpara id="form-Transactions_JTA_Administration_Guide-Failure_recovery_administration-Periodic_Recovery">
+			<title>Periodic Recovery</title>
+			<para>
+				The RecoveryManager scans the ObjectStore and other locations of information, looking for transactions and resources that require, or may require recovery. The scans and recovery processing are performed by recovery modules, (instances of classes that implement the com.arjuna.ats.arjuna.recovery.RecoveryModule interface), each with responsibility for a particular category of transaction or resource. The set of recovery modules used are dynamically loaded, using properties found in the RecoveryManager property file.
+			</para>
+		</formalpara>
+		<para>
+			The interface has two methods: <methodname>periodicWorkFirstPass</methodname> and <methodname>periodicWorkSecondPass</methodname>. At an interval (defined by property <property>com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod</property>), the RecoveryManager will call the first pass method on each property, then wait for a brief period (defined by property <property>com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</property>), then call the second pass of each module. Typically, in the first pass, the module scans (e.g. the relevant part of the ObjectStore) to find transactions or resources that are in-doubt (i.e. are part way through the commitment process). On the second pass, if any of the same items are still in-doubt, it is possible the original application process has crashed and the item is a candidate for recovery.
+		</para>
+		<para>
+			An attempt, by the RecoveryManager, to recover a transaction that is still progressing in the original process(es) is likely to break the consistency. Accordingly, the recovery modules use a mechanism (implemented in the <package>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</package> package) to check to see if the original process is still alive, and if the transaction is still in progress. The RecoveryManager only proceeds with recovery if the original process has gone, or, if still alive, the transaction is completed. (If a server process or machine crashes, but the transaction-initiating process survives, the transaction will complete, usually generating a warning. Recovery of such a transaction is the RecoveryManager’s responsibility).
+		</para>
+		<para>
+			It is clearly important to set the interval periods appropriately. The total iteration time will be the sum of the periodicRecoveryPeriod, recoveryBackoffPeriod and the length of time it takes to scan the stores and to attempt recovery of any in-doubt transactions found, for all the recovery modules. The recovery attempt time may include connection timeouts while trying to communicate with processes or machines that have crashed or are inaccessible (which is why there are mechanisms in the recovery system to avoid trying to recover the same transaction for ever). The total iteration time will affect how long a resource will remain inaccessible after a failure – periodicRecoveryPeriod should be set accordingly (default is 120 seconds). The recoveryBackoffPeriod can be comparatively short (default is 10 seconds) – its purpose is mainly to reduce the number of transactions that are candidates for recovery and which thus require a call to the original process to see if t!
 hey are still in progress.
+		</para>
+		<note>
+			<para>
+				In previous versions of ArjunaCore there was no contact mechanism, and the backoff period had to be long enough to avoid catching transactions in flight at all. From 3.0, there is no such risk.
+			</para>
+		</note>
+		<para>
+			Two recovery modules (implementations of the <interfacename>com.arjuna.ats.arjuna.recovery.RecoveryModule</interfacename> interface) are supplied with ArjunaTA, supporting various aspects of transaction recovery including JDBC recovery. It is possible for advanced users to create their own recovery modules and register them with the Recovery Manager. The recovery modules are registered with the RecoveryManager using properties that begin with <property>com.arjuna.ats.arjuna.recovery.RecoveryExtension</property>. These will be invoked on each pass of the periodic recovery in the sort-order of the property names – it is thus possible to predict the ordering (but note that a failure in an application process might occur while a periodic recovery pass is in progress). The default Recovery Extension settings are:
+		</para>
+<screen>
+com.arjuna.ats.arjuna.recovery.recoveryExtension1 = com.arjuna.ats.internal.ts.arjuna.recovery.AtomicActionRecoveryModule
+	
+com.arjuna.ats.arjuna.recovery.recoveryExtension2 = com.arjuna.ats.txoj.recovery.TORecoveryModule
+</screen>
+		<formalpara id="form-Transactions_JTA_Administration_Guide-Failure_recovery_administration-Expired_entry_removal">
+			<title>Expired entry removal</title>
+			<para>
+				The operation of the recovery subsystem will cause some entries to be made in the ObjectStore that will not be removed in normal progress. The RecoveryManager has a facility for scanning for these and removing items that are very old. Scans and removals are performed by implementations of the <interfacename>com.arjuna.ats.arjuna.recovery.ExpiryScanner</interfacename> interface. Implementations of this interface are loaded by giving the class name as the value of a property whose name begins with <property>com.arjuna.ats.arjuna.recovery.expiryScanner</property>. The RecoveryManager calls the <methodname>scan()</methodname> method on each loaded Expiry Scanner implementation at an interval determined by the property <property>com.arjuna.ats.arjuna.recovery.expiryScanInterval</property>. This value is given in hours – default is 12. An expiryScanInterval value of zero will suppress any expiry scanning. If the value as supplied is positive, the first scan is performed whe!
 n RecoveryManager starts; if the value is negative, the first scan is delayed until after the first interval (using the absolute value)
+			</para>
+		</formalpara>
+		<para>
+			The kinds of item that are scanned for expiry are:
+		</para>
+		<para>
+			TransactionStatusManager items : one of these is created by every application process that uses ArjunaCore – they contain the information that allows the RecoveryManager to determine if the process that initiated the transaction is still alive, and what the transaction status is. The expiry time for these is set by the property <property>com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime</property> (in hours – default is 12, zero means never expire). The expiry time should be greater than the lifetime of any single ArjunaTA-using process.
+		</para>
+		<para>
+			The Expiry Scanner properties for these are:
+		</para>
+<screen>
+com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager = com.arjuna.ats.internal.ts.arjuna.recovery.ExpiredTransactionStatusManagerScanner
+</screen>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA-Errors_and_Exceptions">
+		<title>Errors and Exceptions</title>
+		<para>
+			In this section we shall cover the types of errors and exceptions which may be thrown or reported during a transactional application and give probable indications of their causes.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					NO_MEMORY: the application has run out of memory (thrown an OutOfMemoryError) and ArjunaTA has attempted to do some cleanup (by running the garbage collector) before re-throwing the exception. This is probably a transient problem and retrying the invocation should succeed.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which means that the transaction system must shut down. Prior to this error being thrown the transaction service will have ensured that all running transactions have rolled back. If caught, the application should tidy up and exit. If further work is attempted, application consistency may be violated.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to use the transaction service in a manner inconsistent with the current licence. The transaction service will not allow further forward progress for existing or new transactions.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while the transaction service attempted to use the object store. Further forward progress is not possible.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Object store warnings about access problems on states may occur during the normal execution of crash recovery. This is the result of multiple concurrent attempts to perform recovery on the same transaction. It can be safely ignored.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Administration_Guide-Administration_of_ArjunaTA-Selecting_the_JTA_implementation">
+		<title>Selecting the JTA implementation</title>
+		<para>
+			Two variants of the JTA implementation are now provided and accessible through the same interface. These are:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					A purely local JTA, which only allows non-distributed JTA transactions to be executed. This is the only version available with the ArjunaTA product.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					A remote, CORBA-based JTA, which allows distributed JTA transactions to be executed. This version is only available with the ArjunaJTS product and requires a supported CORBA ORB.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<note>
+			<para>
+				Both of these implementations are fully compatible with the transactional JDBC driver provided with ArjunaTA.
+			</para>
+		</note>
+		<para>
+			In order to select the local JTA implementation it is necessary to perform the following steps:
+		</para>
+		<orderedlist>
+			<listitem>
+				<para>
+					make sure the property <property>com.arjuna.ats.jta.jtaTMImplementation</property> is set to <code>com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple</code>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					make sure the property <property>com.arjuna.ats.jta.jtaUTImplementation</property> is set to <code>com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</code>.
+				</para>
+			</listitem>
+		</orderedlist>
+		<note>
+			<para>
+				These settings are the default values for the properties and do not need to be specified if the local implementation is required.
+			</para>
+		</note>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="book-Transactions_JTA_Administration_Guide-Transactions_JTA_Administration_Guide">
+	<title>JBoss Transactions JTA Administration Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>4</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.2</productnumber>
+	<abstract>
+		<para>This book is about the administration of Arjuna TA</para></abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
+			</imageobject>
+			<textobject>
+				<phrase>Logo</phrase>
+			</textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+</bookinfo>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_JTA_Administration_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Administration_of_ArjunaTA.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Preface.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="pref-Transactions_JTA_Administration_Guide-Preface">
+	<title>Preface</title>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	</xi:fallback></xi:include>
+</preface>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/en-US/images/icon.svg	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Administration_of_ArjunaTA.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Administration_of_ArjunaTA.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Administration_of_ArjunaTA.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,933 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:6
+#, no-c-format
+msgid "Administration of ArjunaTA"
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:8
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:9
+#, no-c-format
+msgid ""
+"Apart from ensuring that the run-time system is executing normally, there is "
+"little continuous administration needed for the <firstterm>ArjunaTA</"
+"firstterm> software. There are a few points however, that should be made:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:14
+#, no-c-format
+msgid ""
+"The present implementation of the ArjunaTA system provides no security or "
+"protection for data. The objects stored in the ArjunaTA object store are "
+"(typically) owned by the user who ran the application that created them. The "
+"Object Store and Object Manager facilities make no attempt to enforce even "
+"the limited form of protection that Unix/Windows provides. There is no "
+"checking of user or group IDs on access to objects for either reading or "
+"writing."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:19
+#, no-c-format
+msgid ""
+"Persistent objects created in the Object Store never go away unless the "
+"<methodname>StateManager.destroy</methodname> method is invoked on the "
+"object or some application program explicitly deletes them. This means that "
+"the Object Store gradually accumulates garbage (especially during "
+"application development and testing phases). At present we have no automated "
+"garbage collection facility. Further, we have not addressed the problem of "
+"dangling references. That is, a persistent object, A, may have stored a Uid "
+"for another persistent object, B, in its passive representation on disk. "
+"There is nothing to prevent an application from deleting B even though A "
+"still contains a reference to it. When A is next activated and attempts to "
+"access B, a run-time error will occur."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:24
+#, no-c-format
+msgid ""
+"There is presently no support for version control of objects or database "
+"reconfiguration in the event of class structure changes. This is a complex "
+"research area that we have not addressed. At present, if you change the "
+"definition of a class of persistent objects, you are entirely responsible "
+"for ensuring that existing instances of the object in the Object Store are "
+"converted to the new representation. The ArjunaTA software can neither "
+"detect nor correct references to old object state by new operation versions "
+"or vice versa."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:29
+#, no-c-format
+msgid ""
+"Object store management is critically important to the transaction service."
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:37
+#, no-c-format
+msgid "ObjectStore management"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:38
+#, no-c-format
+msgid ""
+"Within the transaction service installation, the object store is updated "
+"regularly whenever transactions are created, or when Transactional Objects "
+"for Java is used. In a failure free environment, the only object states "
+"which should reside within the object store are those representing objects "
+"created with the Transactional Objects for Java API. However, if failures "
+"occur, transaction logs may remain in the object store until crash recovery "
+"facilities have resolved the transactions they represent. As such it is very "
+"important that the contents of the object store are not deleted without due "
+"care and attention, as this will make it impossible to resolve in doubt "
+"transactions. In addition, if multiple users share the same object store it "
+"is important that they realise this and do not simply delete the contents of "
+"the object store assuming it is an exclusive resource."
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:44
+#, no-c-format
+msgid "ArjunaTA runtime information"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:45
+#, no-c-format
+msgid ""
+"Each module that comprises ArjunaTA possesses a class called Info. These "
+"classes all provide a single toString method that returns an XML document "
+"representing the configuration information for that module. So, for example:"
+msgstr ""
+
+#. Tag: screen
+#: Administration_of_ArjunaTA.xml:48
+#, no-c-format
+msgid ""
+"&lt;module-info name=\"arjuna\"&gt;&lt;source-identifier&gt;unknown&lt;/"
+"source-identifier&gt;&lt;build-information&gt;Arjuna Technologies [mlittle] "
+"(Windows 2000 5.0)&lt;/build-information&gt;&lt;version&gt;unknown&lt;/"
+"version&gt;&lt;date&gt;2002/06/15 04:06 PM&lt;/date&gt;&lt;notes&gt;&lt;/"
+"notes&gt;&lt;configuration&gt;&lt;properties-file dir=\"null\"&gt;arjuna."
+"properties&lt;/properties-file&gt;&lt;object-store-root&gt;null&lt;/object-"
+"store-root&gt;&lt;/configuration&gt;&lt;/module-info&gt;"
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:52
+#, no-c-format
+msgid "Failure recovery administration"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:53
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of ArjunaTA will ensure that results of a "
+"transaction are applied consistently to all resources affected by the "
+"transaction, even if any of the application processes or the machine hosting "
+"them crash or lose network connectivity. In the case of machine (system) "
+"crash or network failure, the recovery will not take place until the system "
+"or network are restored, but the original application does not need to be "
+"restarted – recovery responsibility is delegated to the Recovery Manager "
+"process (see below). Recovery after failure requires that information about "
+"the transaction and the resources involved survives the failure and is "
+"accessible afterward: this information is held in the ActionStore, which is "
+"part of the ObjectStore."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:57
+#, no-c-format
+msgid ""
+"If the ObjectStore is destroyed or modified, recovery may not be possible."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:61
+#, no-c-format
+msgid ""
+"Until the recovery procedures are complete, resources affected by a "
+"transaction that was in progress at the time of the failure may be "
+"inaccessible. For database resources, this may be reported as tables or rows "
+"held by <emphasis>in-doubt transactions</emphasis>. For TransactionalObjects "
+"for Java resources, an attempt to activate the Transactional Object (as when "
+"trying to get a lock) will fail."
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:65
+#, no-c-format
+msgid "The Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:66
+#, no-c-format
+msgid ""
+"The failure recovery subsystem of ArjunaTA requires that the stand-alone "
+"Recovery Manager process be running for each ObjectStore (typically one for "
+"each node on the network that is running ArjunaTA applications). The "
+"<filename>RecoveryManager</filename> file is located in the "
+"<filename>arjunacore</filename> jar file within the package <package>com."
+"arjuna.ats.arjuna.recovery.RecoveryManager</package>. To start the Recovery "
+"Manager issue the following command:"
+msgstr ""
+
+#. Tag: screen
+#: Administration_of_ArjunaTA.xml:70
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:71
+#, no-c-format
+msgid ""
+"If the -test flag is used with the Recovery Manager then it will display a "
+"<emphasis>Ready</emphasis> message when initialised, for instance:"
+msgstr ""
+
+#. Tag: screen
+#: Administration_of_ArjunaTA.xml:74
+#, no-c-format
+msgid "java com.arjuna.ats.arjuna.recovery.RecoveryManager -test"
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:76
+#, no-c-format
+msgid "Configuring the Recovery Manager"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:77
+#, no-c-format
+msgid ""
+"The RecoveryManager reads the properties defined in the arjuna.properties "
+"file and then also reads the property file RecoveryManager.properties, from "
+"the same directory as it found the arjuna properties file. An entry for a "
+"property in the RecoveryManager properties file will override an entry for "
+"the same property in the main TransactionService properties file. Most of "
+"the entries are specific to the Recovery Manager."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:81
+#, no-c-format
+msgid ""
+"A default version of RecoveryManager.properties is supplied with the "
+"distribution – this can be used without modification, except possibly the "
+"debug tracing fields (see below, Output). The rest of this section discusses "
+"the issues relevant in setting the properties to other values (in the order "
+"of their appearance in the default version of the file)."
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:85
+#, no-c-format
+msgid "Output"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:86
+#, no-c-format
+msgid ""
+"It is likely that installations will want to have some form of output from "
+"the RecoveryManager, to provide a record of what recovery activity has taken "
+"place. RecoveryManager uses the logging tracing mechanism provided by the "
+"Arjuna Common Logging Framework (CLF), which provides a high level interface "
+"that hides differences that exist between existing logging APIs such Jakarta "
+"log4j or JDK 1.4 logging API. CLF indirects all logging via the Apache "
+"Commons Logging framework and configuration is assumed to occur through that "
+"framework."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:90
+#, no-c-format
+msgid ""
+"With the CLF applications make logging calls on logger objects. Loggers may "
+"use logging Levels to decide if they are interested in a particular log "
+"message. Each log message has an associated log Level, that gives the "
+"importance and urgency of a log message. The set of possible Log Levels are "
+"DEBUG, INFO, WARN, ERROR and FATAL. Defined Levels are ordered according to "
+"their integer values as follows: DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; "
+"FATAL."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:93
+#, no-c-format
+msgid ""
+"The CLF provides an extension to filter logging messages according to finer "
+"granularity an application may define. That is, when a log message is "
+"provided to the logger with the DEBUG level, additional conditions can be "
+"specified to determine if the log message is enabled or not."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:97
+#, no-c-format
+msgid ""
+"These conditions are applied if and only the DEBUG level is enabled and the "
+"log request performed by the application specifies debugging granularity."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:101
+#, no-c-format
+msgid "When enabled, Debugging is filtered conditionally on three variables:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:106
+#, no-c-format
+msgid ""
+"Debugging level: this is where the log request with the DEBUG Level is "
+"generated from, for example, constructors or basic methods."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:111
+#, no-c-format
+msgid ""
+"Visibility level: the visibility of the constructor, method, etc. that "
+"generates the debugging."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:116
+#, no-c-format
+msgid ""
+"Facility code: for instance the package or sub-module within which debugging "
+"is generated, for example, the object store."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:121
+#, no-c-format
+msgid ""
+"According to these variables the CLF defines three interfaces. A particular "
+"product may implement its own classes according to its own finer "
+"granularity. ArjunaTA uses the default Debugging level and the default "
+"Visibility level provided by CLF, but it defines its own Facility Code. "
+"ArjunaTA uses the default level assigned to its logger objects (DEBUG). "
+"However, it uses the finer debugging features to disable or enable debug "
+"messages. Finer debugging values used by the ArjunaTA are defined below:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:124
+#, no-c-format
+msgid ""
+"Debugging level – ArjunaTA uses the default values defined in the class "
+"<classname>com.arjuna.common.util.logging.DebugLevel</classname>"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:129
+#, no-c-format
+msgid "NO_DEBUGGING: No diagnostics."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:132
+#, no-c-format
+msgid "A logger object assigned with this values discard all debug requests"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:137
+#, no-c-format
+msgid "FULL_DEBUGGING: Full diagnostics."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:140
+#, no-c-format
+msgid ""
+"A Logger object assigned with this value allows all debug requests if the "
+"facility code and the visibility level match those allowed by the logger."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:145
+#, no-c-format
+msgid "Additional Debugging Values are:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:150
+#, no-c-format
+msgid "CONSTRUCTORS: Diagnostics from constructors."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:155
+#, no-c-format
+msgid "DESTRUCTORS: Diagnostics from finalizers."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:160
+#, no-c-format
+msgid "CONSTRUCT_AND_DESTRUCT: Diagnostics from constructors and finalizers."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:165
+#, no-c-format
+msgid "FUNCTIONS: Diagnostics from functions."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:170
+#, no-c-format
+msgid "OPERATORS: Diagnostics from operators, such as equals."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:175
+#, no-c-format
+msgid "FUNCS_AND_OPS: Diagnostics from functions and operations."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:180
+#, no-c-format
+msgid "ALL_NON_TRIVIAL: Diagnostics from all non-trivial operations."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:185
+#, no-c-format
+msgid "TRIVIAL_FUNCS: Diagnostics from trivial functions."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:190
+#, no-c-format
+msgid "TRIVIAL_OPERATORS: Diagnostics from trivial operations, and operators."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:195
+#, no-c-format
+msgid "ALL_TRIVIAL: Diagnostics from all trivial operations."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:200
+#, no-c-format
+msgid ""
+"Visibility level – ArjunaTA uses the default values defined in the class "
+"<classname>com.arjuna.common.util.logging.VisibilityLevel</classname>."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:205
+#, no-c-format
+msgid "VIS_NONE: No Diagnostic"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:210
+#, no-c-format
+msgid "VIS_PRIVATE: Only from private methods."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:215
+#, no-c-format
+msgid "VIS_PROTECTED: Only from protected methods."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:220
+#, no-c-format
+msgid "VIS_PUBLIC: Only from public methods."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:225
+#, no-c-format
+msgid "VIS_PACKAGE: only from package methods."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:230
+#, no-c-format
+msgid "VIS_ALL: Full Diagnostic ."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:235
+#, no-c-format
+msgid ""
+"Facility Code – ArjunaTA uses the following values defined in the class "
+"<classname>com.arjuna.common.util.logging.VisibilityLevel</classname>."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:240
+#, no-c-format
+msgid "FAC_ATOMIC_ACTION = 0x0000001 (atomic action core module)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:245
+#, no-c-format
+msgid "FAC_BUFFER_MAN = 0x00000004 (state management (buffer) classes)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:250
+#, no-c-format
+msgid "FAC_ABSTRACT_REC = 0x00000008 (abstract records)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:255
+#, no-c-format
+msgid "FAC_OBJECT_STORE = 0x00000010 (object store implementations)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:260
+#, no-c-format
+msgid "FAC_STATE_MAN = 0x00000020 (state management and StateManager)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:265
+#, no-c-format
+msgid "FAC_SHMEM = 0x00000040 (shared memory implementation classes)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:270
+#, no-c-format
+msgid "FAC_GENERAL = 0x00000080 (general classes)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:275
+#, no-c-format
+msgid ""
+"FAC_CRASH_RECOVERY = 0x00000800 (detailed trace of crash recovery module and "
+"classes)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:280
+#, no-c-format
+msgid "FAC_THREADING = 0x00002000 (threading classes)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:285
+#, no-c-format
+msgid "AC_JDBC = 0x00008000 (JDBC 1.0 and 2.0 support)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:290
+#, no-c-format
+msgid ""
+"FAC_RECOVERY_NORMAL = 0x00040000 (normal output for crash recovery manager)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:295
+#, no-c-format
+msgid ""
+"To ensure appropriate output, it is necessary to set some of the finer debug "
+"properties explicitly in the <filename>CommonLogging.xml</filename> file, to "
+"enable logging messages issued by the ArjunaTA module."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:298
+#, no-c-format
+msgid ""
+"Messages describing the start and the periodical behavior made by the "
+"RecoveryManager are output using the INFO level. If other debug tracing is "
+"wanted, the finer debugging level should be set appropriately. For instance, "
+"the following configuration, in the <filename>CommonLogging.xml</filename>, "
+"enables all debug messages related to the Crash Recovery protocol and issued "
+"by the ArjunaTA module."
+msgstr ""
+
+#. Tag: screen
+#: Administration_of_ArjunaTA.xml:301
+#, no-c-format
+msgid ""
+"&lt;!--  Common logging related properties.   --&gt;\n"
+"        &lt;property\n"
+"                 name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+"                 value=\"0x00000000\"/&gt;\n"
+"        &lt;property\n"
+"                 name=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+"                 value=\"0xffffffff\"/&gt;\n"
+"        &lt;property\n"
+"                 name=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+"                 value=\"0xffffffff\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:303
+#, no-c-format
+msgid ""
+"Two logger objects are provided, one manages I18N messages and a second does "
+"not."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:307
+#, no-c-format
+msgid ""
+"Setting the normal recovery messages to the INFO level allows the "
+"RecoveryManager producing a moderate level of reporting. If nothing is going "
+"on, it just reports the entry into each module for each periodic pass. To "
+"disable INFO messages produced by the Recovery Manager, the logging level "
+"could be set to the higher level: ERROR. Setting the level to ERROR means "
+"that the RecoveryManager will only produce error, warning or fatal messages."
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:311
+#, no-c-format
+msgid "Periodic Recovery"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:312
+#, no-c-format
+msgid ""
+"The RecoveryManager scans the ObjectStore and other locations of "
+"information, looking for transactions and resources that require, or may "
+"require recovery. The scans and recovery processing are performed by "
+"recovery modules, (instances of classes that implement the com.arjuna.ats."
+"arjuna.recovery.RecoveryModule interface), each with responsibility for a "
+"particular category of transaction or resource. The set of recovery modules "
+"used are dynamically loaded, using properties found in the RecoveryManager "
+"property file."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:316
+#, no-c-format
+msgid ""
+"The interface has two methods: <methodname>periodicWorkFirstPass</"
+"methodname> and <methodname>periodicWorkSecondPass</methodname>. At an "
+"interval (defined by property <property>com.arjuna.ats.arjuna.recovery."
+"periodicRecoveryPeriod</property>), the RecoveryManager will call the first "
+"pass method on each property, then wait for a brief period (defined by "
+"property <property>com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod</"
+"property>), then call the second pass of each module. Typically, in the "
+"first pass, the module scans (e.g. the relevant part of the ObjectStore) to "
+"find transactions or resources that are in-doubt (i.e. are part way through "
+"the commitment process). On the second pass, if any of the same items are "
+"still in-doubt, it is possible the original application process has crashed "
+"and the item is a candidate for recovery."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:319
+#, no-c-format
+msgid ""
+"An attempt, by the RecoveryManager, to recover a transaction that is still "
+"progressing in the original process(es) is likely to break the consistency. "
+"Accordingly, the recovery modules use a mechanism (implemented in the "
+"<package>com.arjuna.ats.arjuna.recovery.TransactionStatusManager</package> "
+"package) to check to see if the original process is still alive, and if the "
+"transaction is still in progress. The RecoveryManager only proceeds with "
+"recovery if the original process has gone, or, if still alive, the "
+"transaction is completed. (If a server process or machine crashes, but the "
+"transaction-initiating process survives, the transaction will complete, "
+"usually generating a warning. Recovery of such a transaction is the "
+"RecoveryManager’s responsibility)."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:322
+#, no-c-format
+msgid ""
+"It is clearly important to set the interval periods appropriately. The total "
+"iteration time will be the sum of the periodicRecoveryPeriod, "
+"recoveryBackoffPeriod and the length of time it takes to scan the stores and "
+"to attempt recovery of any in-doubt transactions found, for all the recovery "
+"modules. The recovery attempt time may include connection timeouts while "
+"trying to communicate with processes or machines that have crashed or are "
+"inaccessible (which is why there are mechanisms in the recovery system to "
+"avoid trying to recover the same transaction for ever). The total iteration "
+"time will affect how long a resource will remain inaccessible after a "
+"failure – periodicRecoveryPeriod should be set accordingly (default is 120 "
+"seconds). The recoveryBackoffPeriod can be comparatively short (default is "
+"10 seconds) – its purpose is mainly to reduce the number of transactions "
+"that are candidates for recovery and which thus require a call to the "
+"original process to see if they are still in progress."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:326
+#, no-c-format
+msgid ""
+"In previous versions of ArjunaCore there was no contact mechanism, and the "
+"backoff period had to be long enough to avoid catching transactions in "
+"flight at all. From 3.0, there is no such risk."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:330
+#, no-c-format
+msgid ""
+"Two recovery modules (implementations of the <interfacename>com.arjuna.ats."
+"arjuna.recovery.RecoveryModule</interfacename> interface) are supplied with "
+"ArjunaTA, supporting various aspects of transaction recovery including JDBC "
+"recovery. It is possible for advanced users to create their own recovery "
+"modules and register them with the Recovery Manager. The recovery modules "
+"are registered with the RecoveryManager using properties that begin with "
+"<property>com.arjuna.ats.arjuna.recovery.RecoveryExtension</property>. These "
+"will be invoked on each pass of the periodic recovery in the sort-order of "
+"the property names – it is thus possible to predict the ordering (but note "
+"that a failure in an application process might occur while a periodic "
+"recovery pass is in progress). The default Recovery Extension settings are:"
+msgstr ""
+
+#. Tag: screen
+#: Administration_of_ArjunaTA.xml:333
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.recoveryExtension1 = com.arjuna.ats.internal."
+"ts.arjuna.recovery.AtomicActionRecoveryModule\n"
+"        \n"
+"com.arjuna.ats.arjuna.recovery.recoveryExtension2 = com.arjuna.ats.txoj."
+"recovery.TORecoveryModule"
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:335
+#, no-c-format
+msgid "Expired entry removal"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:336
+#, no-c-format
+msgid ""
+"The operation of the recovery subsystem will cause some entries to be made "
+"in the ObjectStore that will not be removed in normal progress. The "
+"RecoveryManager has a facility for scanning for these and removing items "
+"that are very old. Scans and removals are performed by implementations of "
+"the <interfacename>com.arjuna.ats.arjuna.recovery.ExpiryScanner</"
+"interfacename> interface. Implementations of this interface are loaded by "
+"giving the class name as the value of a property whose name begins with "
+"<property>com.arjuna.ats.arjuna.recovery.expiryScanner</property>. The "
+"RecoveryManager calls the <methodname>scan()</methodname> method on each "
+"loaded Expiry Scanner implementation at an interval determined by the "
+"property <property>com.arjuna.ats.arjuna.recovery.expiryScanInterval</"
+"property>. This value is given in hours – default is 12. An "
+"expiryScanInterval value of zero will suppress any expiry scanning. If the "
+"value as supplied is positive, the first scan is performed when "
+"RecoveryManager starts; if the value is negative, the first scan is delayed "
+"until after the first interval (using the absolute value)"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:340
+#, no-c-format
+msgid "The kinds of item that are scanned for expiry are:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:343
+#, no-c-format
+msgid ""
+"TransactionStatusManager items : one of these is created by every "
+"application process that uses ArjunaCore – they contain the information that "
+"allows the RecoveryManager to determine if the process that initiated the "
+"transaction is still alive, and what the transaction status is. The expiry "
+"time for these is set by the property <property>com.arjuna.ats.arjuna."
+"recovery.transactionStatusManagerExpiryTime</property> (in hours – default "
+"is 12, zero means never expire). The expiry time should be greater than the "
+"lifetime of any single ArjunaTA-using process."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:346
+#, no-c-format
+msgid "The Expiry Scanner properties for these are:"
+msgstr ""
+
+#. Tag: screen
+#: Administration_of_ArjunaTA.xml:349
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager = com."
+"arjuna.ats.internal.ts.arjuna.recovery.ExpiredTransactionStatusManagerScanner"
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:353
+#, no-c-format
+msgid "Errors and Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:354
+#, no-c-format
+msgid ""
+"In this section we shall cover the types of errors and exceptions which may "
+"be thrown or reported during a transactional application and give probable "
+"indications of their causes."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:359
+#, no-c-format
+msgid ""
+"NO_MEMORY: the application has run out of memory (thrown an "
+"OutOfMemoryError) and ArjunaTA has attempted to do some cleanup (by running "
+"the garbage collector) before re-throwing the exception. This is probably a "
+"transient problem and retrying the invocation should succeed."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:364
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.FatalError: an error has occurred which "
+"means that the transaction system must shut down. Prior to this error being "
+"thrown the transaction service will have ensured that all running "
+"transactions have rolled back. If caught, the application should tidy up and "
+"exit. If further work is attempted, application consistency may be violated."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:369
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.LicenceError: an attempt has been made to "
+"use the transaction service in a manner inconsistent with the current "
+"licence. The transaction service will not allow further forward progress for "
+"existing or new transactions."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:374
+#, no-c-format
+msgid ""
+"com.arjuna.ats.arjuna.exceptions.ObjectStoreError: an error occurred while "
+"the transaction service attempted to use the object store. Further forward "
+"progress is not possible."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:379
+#, no-c-format
+msgid ""
+"Object store warnings about access problems on states may occur during the "
+"normal execution of crash recovery. This is the result of multiple "
+"concurrent attempts to perform recovery on the same transaction. It can be "
+"safely ignored."
+msgstr ""
+
+#. Tag: title
+#: Administration_of_ArjunaTA.xml:387
+#, no-c-format
+msgid "Selecting the JTA implementation"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:388
+#, no-c-format
+msgid ""
+"Two variants of the JTA implementation are now provided and accessible "
+"through the same interface. These are:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:393
+#, no-c-format
+msgid ""
+"A purely local JTA, which only allows non-distributed JTA transactions to be "
+"executed. This is the only version available with the ArjunaTA product."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:398
+#, no-c-format
+msgid ""
+"A remote, CORBA-based JTA, which allows distributed JTA transactions to be "
+"executed. This version is only available with the ArjunaJTS product and "
+"requires a supported CORBA ORB."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:404
+#, no-c-format
+msgid ""
+"Both of these implementations are fully compatible with the transactional "
+"JDBC driver provided with ArjunaTA."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:408
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:413
+#, no-c-format
+msgid ""
+"make sure the property <property>com.arjuna.ats.jta.jtaTMImplementation</"
+"property> is set to <code>com.arjuna.ats.internal.jta.transaction.arjunacore."
+"TransactionManagerImple</code>."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:418
+#, no-c-format
+msgid ""
+"make sure the property <property>com.arjuna.ats.jta.jtaUTImplementation</"
+"property> is set to <code>com.arjuna.ats.internal.jta.transaction.arjunacore."
+"UserTransactionImple</code>."
+msgstr ""
+
+#. Tag: para
+#: Administration_of_ArjunaTA.xml:424
+#, no-c-format
+msgid ""
+"These settings are the default values for the properties and do not need to "
+"be specified if the local implementation is required."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions JTA Administration Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid "This book is about the administration of Arjuna TA"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:20
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:26
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/JBoss_Transactions_JTA_Administration_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Preface.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Preface.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Administration_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:34+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,11 @@
+#Makefile for Transactions_JTA_Programmers_Guide
+
+XML_LANG	= en-US
+
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,52 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-An_Introduction_to_the_JTA">
+	<title>An Introduction to the JTA</title>
+	<section id="sect-Transactions_JTA_Programmers_Guide-An_Introduction_to_the_JTA-The_Java_Transaction_API">
+		<title>The Java Transaction API</title>
+		<para>
+			The interfaces specified by the many transaction standards are typically too low-level for most application programmers. Therefore, Sun Microsystems has specified higher-level interfaces to assist in the development of distributed transactional applications. Note, these interfaces are still low-level, and require, for example, the programmer to be concerned with state management and concurrency for transactional application. In addition, they are geared more for applications which require XA resource integration capabilities, rather than the more general resources which the other APIs allow.
+		</para>
+		<para>
+			With reference to [JTA99], distributed transaction services typically involve a number of participants:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Application server: which provides the infrastructure required to support the application run-time environment which includes transaction state management, for example, an EJB server.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Transaction manager: provides the services and management functions required to support transaction demarcation, transactional resource management, synchronisation and transaction context propagation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Resource manager: (through a resource adapter<footnote>
+					<para>
+						A Resource Adapter is used by an application server or client to connect to a Resource Manager. JDBC drivers which are used to connect to relational databases are examples of Resource Adapters.
+					</para>
+					</footnote>) provides the application with access to resources. The resource manager participates in distributed transactions by implementing a transaction resource interface used by the transaction manager to communicate transaction association, transaction completion and recovery.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					A communication resource manager (CRM): supports transaction context propagation and access to the transaction service for incoming and outgoing requests.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			From the transaction manager’s perspective, the actual implementation of the transaction services does not need to be exposed; only high-level interfaces need to be defined to allow transaction demarcation, resource enlistment, synchronization and recovery process to be driven from the users of the transaction services. The JTA is a high-level application interface that allows a transactional application to demarcate transaction boundaries, and contains also contains a mapping of the X/Open XA protocol.
+		</para>
+		<note>
+			<para>
+				The JTA support provided by JBossJTA is compliant with the 1.0.1 specification.
+			</para>
+		</note>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,32 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="book-Transactions_JTA_Programmers_Guide-Transactions_JTA_Programmers_Guide">
+	<title>JBoss Transactions JTA Programmers Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>4</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.2</productnumber>
+	<abstract>
+		<para>This book is about the Transactions JTA from the view of the
+programmer</para></abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
+			</imageobject>
+			<textobject>
+				<phrase>Logo</phrase>
+			</textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+</bookinfo>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,95 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-Configuring_JBossJTA">
+	<title>Configuring JBossJTA</title>
+	<section id="sect-Transactions_JTA_Programmers_Guide-Configuring_JBossJTA-Configuring_options">
+		<title>Configuring options</title>
+		<para>
+			The following table shows the configuration features, with default values shown in italics. For more detailed information, the relevant section numbers are provided.
+		</para>
+		<table frame="all" id="tabl-Transactions_JTA_Programmers_Guide-Configuring_options-JBossJTA_configuration_options.">
+			<title>JBossJTA configuration options.</title>
+			<tgroup cols="3">
+				<thead>
+					<row>
+						<entry>
+							Configuration Name
+						</entry>
+						<entry>
+							Possibile Values
+						</entry>
+						<entry>
+							Relevant Section
+						</entry>
+					</row>
+				</thead>
+				<tbody>
+					<row>
+						<entry>
+							com.arjuna.ats.jta.supportSubtransactions
+						</entry>
+						<entry>
+							YES/NO
+						</entry>
+						<entry>
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.jta.jtaTMImplementation
+						</entry>
+						<entry>
+							com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple/com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
+						</entry>
+						<entry>
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.jta.jtaUTImplementation
+						</entry>
+						<entry>
+							com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple/com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
+						</entry>
+						<entry>
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.jta.xaBackoffPeriod
+						</entry>
+						<entry>
+						</entry>
+						<entry>
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.jdbc.isolationLevel
+						</entry>
+						<entry>
+							Any supported JDBC isolation level.
+						</entry>
+						<entry>
+						</entry>
+					</row>
+					<row>
+						<entry>
+							com.arjuna.ats.jta.xaTransactionTimetouEnabled
+						</entry>
+						<entry>
+							true/false
+						</entry>
+						<entry>
+							Chapter 3
+						</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Examples.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Examples.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Examples.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,356 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-Examples">
+	<title>Examples</title>
+	<section id="sect-Transactions_JTA_Programmers_Guide-Examples-JDBC_example">
+		<title>JDBC example</title>
+		<para>
+			The following code illustrates many of the points described above (note that for simplicity, much error checking code has been remove). This example assumes that you are using the transactional JDBC driver provided with JBossTS. For details about how to configure and use this driver see the previous Chapter.
+		</para>
+<screen>
+public class JDBCTest
+{
+public static void main (String[] args)
+{
+	/*
+	 */
+	
+	Connection conn = null;
+	Connection conn2 = null;
+	Statement stmt = null;        // non-tx statement
+	Statement stmtx = null;	// will be a tx-statement
+	Properties dbProperties = new Properties();
+	
+	try
+	{
+		System.out.println("\nCreating connection to database: "+url);
+	
+		/*
+		 * Create conn and conn2 so that they are bound to the JBossTS
+		 * transactional JDBC driver. The details of how to do this will
+		 * depend on your environment, the database you wish to use and
+		 * whether or not you want to use the Direct or JNDI approach. See
+		 * the appropriate chapter in the JTA Programmers Guide.
+		 */
+	
+		stmt = conn.createStatement();  // non-tx statement
+	
+		try
+		{
+			stmt.executeUpdate("DROP TABLE test_table");
+			stmt.executeUpdate("DROP TABLE test_table2");
+		}
+		catch (Exception e)
+		{
+			// assume not in database.
+		}
+	
+		try
+		{
+			stmt.executeUpdate("CREATE TABLE test_table (a INTEGER,b INTEGER)");
+			stmt.executeUpdate("CREATE TABLE test_table2 (a INTEGER,b INTEGER)");
+		}
+		catch (Exception e)
+		{
+		}
+	
+		try
+		{
+			System.out.println("Starting top-level transaction.");
+	
+			com.arjuna.ats.jta.UserTransaction.userTransaction().begin();
+	
+			stmtx = conn.createStatement(); // will be a tx-statement
+	
+			System.out.println("\nAdding entries to table 1.");
+	
+			stmtx.executeUpdate("INSERT INTO test_table (a, b) VALUES (1,2)");
+	
+			ResultSet res1 = null;
+	
+			System.out.println("\nInspecting table 1.");
+	
+			res1 = stmtx.executeQuery("SELECT * FROM test_table");
+			while (res1.next())
+			{
+				System.out.println("Column 1: "+res1.getInt(1));
+				System.out.println("Column 2: "+res1.getInt(2));
+			}
+	
+			System.out.println("\nAdding entries to table 2.");
+	
+			stmtx.executeUpdate("INSERT INTO test_table2 (a, b) VALUES (3,4)");
+			
+			res1 = stmtx.executeQuery("SELECT * FROM test_table2");
+			
+			System.out.println("\nInspecting table 2.");
+	
+			while (res1.next())
+			{
+				System.out.println("Column 1: "+res1.getInt(1));
+				System.out.println("Column 2: "+res1.getInt(2));
+			}
+			System.out.print("\nNow attempting to rollback changes.");
+	
+			com.arjuna.ats.jta.UserTransaction.userTransaction().rollback();
+	
+			com.arjuna.ats.jta.UserTransaction.userTransaction().begin();
+	
+			stmtx = conn.createStatement();
+			ResultSet res2 = null;
+	
+			System.out.println("\nNow checking state of table 1.");
+	
+			res2 = stmtx.executeQuery("SELECT * FROM test_table");
+			while (res2.next())
+			{
+				System.out.println("Column 1: "+res2.getInt(1));
+				System.out.println("Column 2: "+res2.getInt(2));
+			}
+	
+			System.out.println("\nNow checking state of table 2.");
+	
+			stmtx = conn.createStatement();
+			res2 = stmtx.executeQuery("SELECT * FROM test_table2");
+			while (res2.next())
+			{
+				System.out.println("Column 1: "+res2.getInt(1));
+				System.out.println("Column 2: "+res2.getInt(2));
+			}
+	
+			com.arjuna.ats.jta.UserTransaction.userTransaction().commit(true);
+		}
+		catch (Exception ex)
+		{
+			ex.printStackTrace();
+			System.exit(0);
+		}
+	}
+	catch (Exception sysEx)
+	{
+		sysEx.printStackTrace();
+		System.exit(0);
+	}
+}
+</screen>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Examples-Failure_recovery_example">
+		<title>Failure recovery example</title>
+		<para>
+			This class implements the <interfacename>XAResourceRecovery</interfacename> interface for <code>XAResources</code>. The parameter supplied in setParameters can contain arbitrary information necessary to initialize the class once created. In this instance it contains the name of the property file in which the db connection information is specified, as well as the number of connections that this file contains information on (separated by ;).
+		</para>
+		<important>
+			<para>
+				This is only an <emphasis>example</emphasis> of the sorts of things an <code>XAResourceRecovery</code> implementer could do. This implementation uses a property file that is assumed to contain sufficient information to recreate connections used during the normal run of an application so that we can perform recovery on them. It is not recommended that information such as user name and password appear in such a raw text format as it opens up a potential security hole.
+			</para>
+		</important>
+		<para>
+			The db parameters specified in the property file are assumed to be in the format:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					DB_x_DatabaseURL=
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					DB_x_DatabaseUser=
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					DB_x_DatabasePassword=
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					DB_x_DatabaseDynamicClass=
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Where x is the number of the connection information.
+		</para>
+		<note>
+			<para>
+				Some error handling code has been removed from this text for ease of readability purposes.
+			</para>
+		</note>
+<screen>
+/*
+ * Some XAResourceRecovery implementations will do their startup work here,
+ * and then do little or nothing in setDetails. Since this one needs to know
+ * dynamic class name, the constructor does nothing.
+ */
+	
+public BasicXARecovery () throws SQLException
+{
+	numberOfConnections = 1;
+	connectionIndex = 0;
+	props = null;
+}
+	
+/*
+ * The recovery module will have chopped off this class name already. The
+ * parameter should specify a property file from which the url, user name,
+ * password, etc. can be read.
+ * 
+ * @message com.arjuna.ats.internal.jdbc.recovery.initexp An exception
+ *          occurred during initialisation.
+ */
+	
+public boolean initialise (String parameter) throws SQLException
+{
+	if (parameter == null) 
+		return true;
+	
+	int breakPosition = parameter.indexOf(BREAKCHARACTER);
+	String fileName = parameter;
+	
+	if (breakPosition != -1)
+	{
+		fileName = parameter.substring(0, breakPosition - 1);
+	
+		try
+		{
+			numberOfConnections = Integer.parseInt(parameter.substring(breakPosition + 1));
+		}
+		catch (NumberFormatException e)
+		{
+			return false;
+		}
+	}
+	
+	try
+	{
+		String uri = com.arjuna.common.util.FileLocator.locateFile(fileName);
+		jdbcPropertyManager.propertyManager.load(XMLFilePlugin.class.getName(), uri);
+	
+		props = jdbcPropertyManager.propertyManager.getProperties();
+	}
+	catch (Exception e)
+	{
+		return false;
+	}
+	
+	return true;
+}
+	
+/*
+ * @message com.arjuna.ats.internal.jdbc.recovery.xarec {0} could not find
+ *          information for connection!
+ */
+	
+public synchronized XAResource getXAResource () throws SQLException
+{
+	JDBC2RecoveryConnection conn = null;
+	
+	if (hasMoreResources())
+	{
+		connectionIndex++;
+	
+		conn = getStandardConnection();
+	
+	if (conn == null) conn = getJNDIConnection();
+	}
+	
+		return conn.recoveryConnection().getConnection().getXAResource();
+}
+	
+public synchronized boolean hasMoreResources ()
+{
+	if (connectionIndex == numberOfConnections) 
+		return false;
+	else
+		return true;
+}
+	
+private final JDBC2RecoveryConnection getStandardConnection ()
+	throws SQLException
+{
+	String number = new String("" + connectionIndex);
+	String url = new String(dbTag + number + urlTag);
+	String password = new String(dbTag + number + passwordTag);
+	String user = new String(dbTag + number + userTag);
+	String dynamicClass = new String(dbTag + number + dynamicClassTag);
+	
+	Properties dbProperties = new Properties();
+	
+	String theUser = props.getProperty(user);
+	String thePassword = props.getProperty(password);
+	
+	if (theUser != null)
+	{
+		dbProperties.put(TransactionalDriver.userName, theUser);
+		dbProperties.put(TransactionalDriver.password, thePassword);
+	
+		String dc = props.getProperty(dynamicClass);
+	
+		if (dc != null)
+			dbProperties.put(TransactionalDriver.dynamicClass, dc);
+	
+		return new JDBC2RecoveryConnection(url, dbProperties);
+	}
+	else
+		return null;
+}
+	
+private final JDBC2RecoveryConnection getJNDIConnection ()
+	throws SQLException
+{
+	String number = new String("" + connectionIndex);
+	String url = new String(dbTag + jndiTag + number + urlTag);
+	String password = new String(dbTag + jndiTag + number + passwordTag);
+	String user = new String(dbTag + jndiTag + number + userTag);
+	
+	Properties dbProperties = new Properties();
+	
+	String theUser = props.getProperty(user);
+	String thePassword = props.getProperty(password);
+	
+	if (theUser != null)
+	{
+		dbProperties.put(TransactionalDriver.userName, theUser);
+		dbProperties.put(TransactionalDriver.password, thePassword);
+	
+		return new JDBC2RecoveryConnection(url, dbProperties);
+	}
+	else
+		return null;
+}
+	
+private int numberOfConnections;
+private int connectionIndex;
+private Properties props;
+private static final String dbTag = "DB_";
+private static final String urlTag = "_DatabaseURL";
+private static final String passwordTag = "_DatabasePassword";
+private static final String userTag = "_DatabaseUser";
+private static final String dynamicClassTag = "_DatabaseDynamicClass";
+private static final String jndiTag = "JNDI_";
+	
+/*
+ * Example:
+ * 
+ * DB2_DatabaseURL=jdbc\:arjuna\:sequelink\://qa02\:20001
+ * DB2_DatabaseUser=tester2 DB2_DatabasePassword=tester
+ * DB2_DatabaseDynamicClass=com.arjuna.ats.internal.jdbc.drivers.sequelink_5_1
+ * 
+ * DB_JNDI_DatabaseURL=jdbc\:arjuna\:jndi DB_JNDI_DatabaseUser=tester1
+ * DB_JNDI_DatabasePassword=tester DB_JNDI_DatabaseName=empay
+ * DB_JNDI_Host=qa02 DB_JNDI_Port=20000
+ */
+
+ private static final char BREAKCHARACTER = &#39;;&#39;; // delimiter for parameters
+</screen>
+		<para>
+			The class <classname>com.arjuna.ats.internal.jdbc.recovery.JDBC2RecoveryConnection</classname> may be used to create a new connection to the database using the same parameters that were used to create the initial connection.
+		</para>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_JTA_Programmers_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,19 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="An_Introduction_to_the_JTA.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Transactions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="The_Resource_Manager.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Transaction_Recovery.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="JDBC_and_Transactions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Examples.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Configuring_JBossJTA.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Using_JBossJTA_in_Application_Servers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,350 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-JDBC_and_Transactions">
+	<title>JDBC and Transactions</title>
+	<section id="sect-Transactions_JTA_Programmers_Guide-JDBC_and_Transactions-Using_the_transactional_JDBC_driver">
+		<title>Using the transactional JDBC driver</title>
+		<para>
+			JBossJTA supports the construction of both local and distributed transactional applications which access databases using the JDBC 2.0 APIs. JDBC 2.0 supports two-phase commit of transactions, and is similar to the XA X/Open standard. The JDBC 2.0 support is found in the com.arjuna.ats.jdbc package.
+		</para>
+		<para>
+			The JDBC 2.0 support has been tested with the following drivers and databases:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Oracle 8.1.6/8.1.7, 9i and 10g thin driver.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					MS SQL Server 2000 native driver.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			In the past we have qualified against:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Merant’s Sequelink 5.1 with Oracle 8.1.6
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Cloudscape 3.6 with Cloudscape’s own database.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			However, these drivers and databases are no longer part of our supported platforms. They may continue to work with JBossTS, but we cannot make that guarantee.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Using_the_transactional_JDBC_driver-Managing_transactions">
+			<title>Managing transactions</title>
+			<para>
+				JBossJTA must be able to associate work performed on a JDBC connection with a specific transaction. Therefore, implicit transaction propagation and/or indirect transaction management must be used by applications, i.e., for each JDBC connection it must be possible for JBossJTA to determine the invoking thread’s current transaction context.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Using_the_transactional_JDBC_driver-Restrictions">
+			<title>Restrictions</title>
+			<para>
+				The following restrictions are imposed by limitations in the JDBC specifications and by JBossJTA to ensure that transactional interactions with JDBC databases can be correctly managed:
+			</para>
+		</formalpara>
+		<para>
+			Nested transactions are not supported by JDBC 2.0. If an attempt is made to use a JDBC connection within a subtransaction, JBossJTA will throw a suitable exception and no work will be allowed on that connection. However, if you wish to have nested transactions, then you can set the <property>com.arjuna.ats.jta.supportSubtransactions</property> property to YES.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-JDBC_and_Transactions-Transactional_drivers">
+		<title>Transactional drivers</title>
+		<para>
+			The JBossJTA approach to incorporating JDBC connections within transactions is to provide transactional JDBC drivers through which all interactions occur. These drivers intercept all invocations and ensure that they are registered with, and driven by, appropriate transactions. There is a single type of transactional driver through which any JDBC driver can be driven; obviously if the database is not transactional then ACID properties cannot be guaranteed. This driver is <code>com.arjuna.ats.jdbc.TransactionalDriver</code>, which implements the <interfacename>java.sql.Driver</interfacename> interface.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Transactional_drivers-Loading_drivers">
+			<title>Loading drivers</title>
+			<para>
+				The driver may be directly instantiated and used within an application. For example:
+			</para>
+		</formalpara>
+<screen>
+TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();
+</screen>
+		<para>
+			They can be registered with the JDBC driver manager (<code>java.sql.DriverManager</code>) by adding them to the Java system properties. The <property>jdbc.drivers</property> property contains a list of driver class names, separated by colons, that are loaded by the JDBC driver manager when it is initialized.
+		</para>
+<screen>
+/*
+ * Register the driver via the system properties variable
+ * "jdbc.drivers"
+ */ 
+	
+Properties p = System.getProperties(); 
+	
+switch (dbType)
+{
+case MYSQL:
+	p.put("jdbc.drivers", "org.gjt.mm.mysql.Driver"); 
+	break;
+case CLOUDSCAPE:
+	p.put("jdbc.drivers", "COM.cloudscape.core.JDBCDriver"); 
+	break;
+}
+	
+System.setProperties(p);
+</screen>
+		<para>
+			Alternatively, the <methodname>Class.forName()</methodname> method may be used to load the driver or drivers:
+		</para>
+<screen>
+Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
+</screen>
+		<para>
+			Calling <methodname>Class.forName()</methodname> will automatically register the driver with the JDBC driver manager. It is also possible to explicitly create an instance of the JDBC driver:
+		</para>
+<screen>
+sun.jdbc.odbc.JdbcOdbcDriver drv = new sun.jdbc.odbc.JdbcOdbcDriver();
+	
+DriverManager.registerDriver(drv);
+</screen>
+		<para>
+			When you have loaded a driver, it is available for making a connection with a DBMS.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-JDBC_and_Transactions-Connections">
+		<title>Connections</title>
+		<para>
+			In this section we shall discuss the notion of transactional JDBC connections, how they are managed within JBossJTA and the implications on using them within an application.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Making_the_connection">
+			<title>Making the connection</title>
+			<para>
+				Because JDBC connectivity in JBossJTA works by simply providing a new JDBC driver, application code can remain relatively the same to that when not using transactions. Typically, the application programmer need only start and terminate transactions.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-JDBC_2.0">
+			<title>JDBC 2.0</title>
+			<para>
+				Before describing the JDBC 2.0 support it is necessary to mention that the following properties can be set and passed to the JBossJTA driver (they are all located in the <classname>com.arjuna.ats.jdbc.TransactionalDriver</classname> class):
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<property>userName</property>: the user name to use when attempting to connect to the database.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>password</property>: the password to use when attempting to connect to the database.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>createDb</property>: if set to true, the driver will attempt to create the database when it connects. This may not be supported by all JDBC 2.0 implementations.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<property>dynamicClass</property>: this specifies a class to instantiate to connect to the database, rather than using JNDI.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-XADataSources">
+			<title>XADataSources</title>
+			<para>
+				JDBC 2.0 connections are created from appropriate DataSources. Those connections which must participate within distributed transactions are obtained from <code>XADataSources</code>. Therefore, when using a JDBC 2.0 driver, JBossJTA will use the appropriate DataSource whenever a connection to the database is made. It will then obtain <code>XAResources</code> and register them with the transaction via the JTA interfaces. It is these <code>XAResources</code> which the transaction service will use when the transaction terminates in order to drive the database to either commit or rollback the changes made via the JDBC connection.
+			</para>
+		</formalpara>
+		<para>
+			There are two ways in which the JBossJTA JDBC 2.0 support can obtain <code>XADataSources</code>. These will be explained in the following sections. Note, for simplicity we shall assume that the JDBC 2.0 driver is instantiated directly by the application.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Java_Naming_and_Directory_Interface_JNDI">
+			<title>Java Naming and Directory Interface (JNDI)</title>
+			<para>
+				In order to allow a JDBC driver to use arbitrary DataSources without having to know specific details about their implementations, DataSources are typically obtained from JNDI. A specific (XA)DataSource can be created and registered with an appropriate JNDI implementation, and the application (or JDBC driver) can later bind to and use it. Since JNDI only allows the application to see the (XA)DataSource as an instance of the interface (for example, <property>javax.sql.XADataSource</property>) rather than as an instance of the implementation class (for example, <property>com.mydb.myXADataSource</property>), the application is not tied at build time to only use a specific (XA)DataSource implementation.
+			</para>
+		</formalpara>
+		<para>
+			To get the <classname>TransactionalDriver</classname> class to use a JNDI registered <code>XADataSource</code> it is first necessary to create the <code>XADataSource</code> instance and store it in an appropriate JNDI implementation. Details of how to do this can be found in the JDBC 2.0 tutorial available at JavaSoft. An example is show below:
+		</para>
+<screen>
+XADataSource ds = MyXADataSource();
+Hashtable env = new Hashtable();
+String initialCtx = PropertyManager.getProperty("Context.INITIAL_CONTEXT_FACTORY");
+	
+env.put(Context.INITIAL_CONTEXT_FACTORY, initialCtx);
+	
+initialContext ctx = new InitialContext(env);
+	
+ctx.bind("jdbc/foo", ds);
+</screen>
+		<para>
+			Where the <property>Context.INITIAL_CONTEXT_FACTORY</property> property is the JNDI way of specifying the type of JNDI implementation to use.
+		</para>
+		<para>
+			Then the application must pass an appropriate connection URL to the JDBC 2.0 driver:
+		</para>
+<screen>
+Properties dbProps = new Properties();
+	
+dbProps.setProperty(TransactionalDriver.userName, "user");
+dbProps.setProperty(TransactionalDriver.password, "password");
+	
+TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();
+Connection connection = arjunaJDBC2Driver.connect("jdbc:arjuna:jdbc/foo", dbProps);
+</screen>
+		<para>
+			The JNDI URL must be pre-pended with jdbc:arjuna: in order for the <code>ArjunaJDBC2Driver</code> to recognise that the DataSource must participate within transactions and be driven accordingly.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Dynamic_class_instantiation">
+			<title>Dynamic class instantiation</title>
+			<para>
+				Many JDBC 2.0 implementations provide proprietary implementations of <interfacename>XADataSources</interfacename> that provide non-standard extensions to the specification. In order to allow the application to remain isolated from the actual JDBC 2.0 implementation it is using and yet continue to be able to use these extensions, JBossJTA hides the details of these proprietary implementations using dynamic class instantiation. In addition, the use of JNDI is not required when using this mechanism because the actual implementation of the <interfacename>XADataSource</interfacename> will be directly instantiated, albeit in a manner which will not tie an application or driver to a specific implementation. JBossJTA therefore has several classes which are for specific JDBC 2.0 implementations, and these can be selected at runtime by the application setting the <property>dynamicClass</property> property appropriately:
+			</para>
+		</formalpara>
+		<table frame="all" id="tabl-Transactions_JTA_Programmers_Guide-Connections-Dynamic_Class_property_values_for_specific_databases">
+			<title>Dynamic Class property values for specific databases</title>
+			<tgroup cols="2">
+				<thead>
+					<row>
+						<entry>
+							Database Type
+						</entry>
+						<entry>
+							Property Name
+						</entry>
+					</row>
+				</thead>
+				<tbody>
+					<row>
+						<entry>
+							Cloudscape 3.6
+						</entry>
+						<entry>
+							com.arjuna.ats.internal.jdbc.drivers.cloudscape_3_6
+						</entry>
+					</row>
+					<row>
+						<entry>
+							Sequelink 5.1
+						</entry>
+						<entry>
+							com.arjuna.ats.internal.jdbc.drivers.sequelink_5_1
+						</entry>
+					</row>
+					<row>
+						<entry>
+							Oracle 8.1.6
+						</entry>
+						<entry>
+							com.arjuna.ats.internal.jdbc.drivers.oracle_8_1_6
+						</entry>
+					</row>
+				</tbody>
+			</tgroup>
+		</table>
+		<note>
+			<para>
+				As mentioned earlier, JBossTS no longer supports Cloudscape or Sequelink as part of the qualified drivers. Furthermore, we recommend using JNDI to obtain JDBC classes rather than the direct method described here.
+			</para>
+		</note>
+		<para>
+			The application code must specify which dynamic class the <code>TransactionalDriver</code> should instantiate when setting up the connection:
+		</para>
+<screen>
+Properties dbProps = new Properties();
+	
+dbProps.setProperty(TransactionalDriver.userName, "user");
+dbProps.setProperty(TransactionalDriver.password, "password");
+dbProps.setProperty(TransactionalDriver.dynamicClass,
+"com.arjuna.ats.internal.jdbc.drivers.sequelink_5_0");
+	
+TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();
+Connection connection = arjunaJDBC2Driver.connect("jdbc:arjuna:sequelink://host:port;databaseName=foo",dbProperties);
+</screen>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Using_the_connection">
+			<title>Using the connection</title>
+			<para>
+				Once the connection has been established (for example, using the <methodname>java.sql.DriverManager.getConnection</methodname> method), all operations on the connection will be monitored by JBossJTA. Note, it is not necessary to use the transactional connection within transactions. If a transaction is not present when the connection is used, then operations will be performed directly on the database.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				JDBC does not support subtransactions.
+			</para>
+		</note>
+		<para>
+			Transaction timeouts can be used to automatically terminate transactions should the connection not be terminated within an appropriate period.
+		</para>
+		<para>
+			JBossJTA connections can be used within multiple different transactions simultaneously, for instance, different threads, with different notions of the current transaction, may use the same JDBC connection. JBossJTA does connection pooling for each transaction within the JDBC connection. So, although multiple threads may use the same instance of the JDBC connection, internally this may be using a different connection instance per transaction. With the exception of close, all operations performed on the connection at the application level will only be performed on this transaction-specific connection.
+		</para>
+		<para>
+			JBossJTA will automatically register the JDBC driver connection with the transaction via an appropriate resource . When the transaction terminates, this resource will be responsible for either committing or rolling back any changes made to the underlying database via appropriate calls on the JDBC driver.
+		</para>
+		<para>
+			Once created, the driver and any connection can be used in the same way as any other JDBC driver or connection.
+		</para>
+<screen>
+Statement stmt = conn.createStatement();
+	
+try
+{
+	stmt.executeUpdate("CREATE TABLE test_table (a INTEGER,b INTEGER)");
+}
+catch (SQLException e)
+{
+	// table already exists
+}
+	
+stmt.executeUpdate("INSERT INTO test_table (a, b) VALUES (1,2)");
+	
+ResultSet res1 = stmt.executeQuery("SELECT * FROM test_table");
+</screen>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Connection_pooling">
+			<title>Connection pooling</title>
+			<para>
+				For each user name and password, JBossJTA will maintain a single instance of each connection for as long as that connection is in use. Subsequent requests for the same connection will get a reference to the originally created connection, rather than a new instance. Attempts to close the connection are allowed, but the connection will only actually be closed when all users (including transactions) have either finished with the connection, or issued close calls.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Reusing_connections">
+			<title>Reusing connections</title>
+			<para>
+				Some JDBC drivers allow the reuse of a connection for multiple different transactions once a given transaction has completed. Unfortunately this is not a common feature, and other drivers require a new connection to be obtained for each new transaction. By default, the JBossJTA transactional driver will always obtain a new connection for each new transaction. However, if an existing connection is available and is currently unused, it is possible to make JBossJTA reuse this connection. In order to do this, the reuseconnection=true option must be specified on the JDBC URL. For example:
+			</para>
+		</formalpara>
+<screen>
+jdbc:arjuna:sequelink://host:port;databaseName=foo;reuseconnection=true
+</screen>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Terminating_the_transaction">
+			<title>Terminating the transaction</title>
+			<para>
+				Whenever a transaction terminates (either explicitly by the application programmer, or implicitly when any associated transaction timeout expires) that has a JDBC connection registered with it, JBossJTA will drive the database (via the JDBC driver) to either commit or roll back any changes made to it. This happens transparently to the application.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-AutoCommit">
+			<title>AutoCommit</title>
+			<para>
+				If <code>AutoCommit</code> of the <code>java.sql.Connection</code> is set to true for JDBC 1.0 then the execution of every SQL statement is a separate top-level transaction, and grouping multiple statements to be managed within a single OTS transaction is not possible. Therefore, JBossJTA will disable <code>AutoCommit</code> on JDBC 1.0 connections before they can be used. If auto commit is subsequently set to true by the application, JBossJTA will raise the <code>java.sql.SQLException</code>.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-Connections-Setting_isolation_levels">
+			<title>Setting isolation levels</title>
+			<para>
+				When using the JBossJTA JDBC driver, it may be necessary to set the underlying transaction isolation level on the XA connection. By default, this is set to <code>TRANSACTION_SERIALIZABLE</code>, but you may want to set this to something more appropriate for your application. In order to do this, set the <property>com.arjuna.ats.jdbc.isolationLevel</property> property to the appropriate isolation level in string form, for example, <code>TRANSACTION_READ_COMMITTED</code>, or <code>TRANSACTION_REPEATABLE_READ</code>.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				At present this property applies to all XA connections created in the JVM.
+			</para>
+		</note>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Preface.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="pref-Transactions_JTA_Programmers_Guide-Preface">
+	<title>Preface</title>
+
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
+		<xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+		<xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+		</xi:fallback>
+	</xi:include>
+</preface>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,265 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-Test">
+	<title>Test</title>
+	<para>
+		This is a test paragraph
+	</para>
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-The_XAResource_Interface">
+		<title>The XAResource Interface</title>
+		<para>
+			Whereas some transaction specifications and systems define a generic resource which can be used to register arbitrary resources with a transaction, the JTA is much more XA specific. The <interfacename>javax.transaction.xa.XAResource</interfacename> interface is a Java mapping of the <interfacename>XA</interfacename> interface. The <interfacename>XAResource</interfacename> interface defines the contract between a Resource Manager and a Transaction Manager in a distributed transaction processing environment. A resource adapter for a resource manager implements the <interfacename>XAResource</interfacename> interface to support association of a top-level transaction to a resource such as a relational database.
+		</para>
+		<para>
+			The <interfacename>XAResource</interfacename> interface can be supported by any transactional resource adapter that is intended to be used in an environment where transactions are controlled by an external transaction manager, for example, a database management system. An application may access data through multiple database connections. Each database connection is associated with an <code>XAResource</code> object that serves as a proxy object to the underlying resource manager instance. The transaction manager obtains an <code>XAResource</code> for each resource manager participating in a top-level transaction. It uses the start method to associate the transaction with the resource, and it uses the end method to disassociate the transaction from the resource.
+		</para>
+		<para>
+			The resource manager is responsible for associating the transaction with all work performed on its data between the start and end invocations. At transaction commit time, these transactional resource managers are informed by the transaction manager to prepare, commit, or rollback the transaction according to the two-phase commit protocol.
+		</para>
+		<para>
+			In order to be better integrated with Java, the <interfacename>XAResource</interfacename> differs from the standard <interfacename>XA</interfacename> interface in the following ways:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The resource manager initialization is done implicitly by the resource adapter when the resource (connection) is acquired. There is no <code>xa_open</code> equivalent.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<code>Rmid</code> is not passed as an argument. Each <code>Rmid</code> is represented by a separate <code>XAResource</code> object.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Asynchronous operations are not supported because Java supports multi-threaded processing and most databases do not support asynchronous operations.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Error return values that are caused by the transaction manager’s improper handling of the <code>XAResource</code> object are mapped to Java exceptions via the <classname>XAException</classname> class.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The DTP concept of <emphasis>Thread of Control</emphasis> maps to all Java threads that are given access to the <code>XAResource</code> and <code>Connection</code> objects. For example, it is legal for two different threads to perform the start and end operations on the same <code>XAResource</code> object.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_XAResource_Interface-Extended_XAResource_control">
+			<title>Extended XAResource control</title>
+			<para>
+				By default, whenever an <code>XAResource</code> object is registered with a JTA compliant transaction service, you have no control over the order in which it will be invoked during the two-phase commit protocol, with respect to other <code>XAResource</code> objects. In JBossTS, however, there is support for controlling the order via the two interfaces <interfacename>com.arjuna.ats.jta.resources.StartXAResource</interfacename> and <interfacename>com.arjuna.ats.jta.resources.EndXAResource</interfacename>. By inheriting your <code>XAResource</code> instance from either of these interfaces, you control whether an instance of your class will be invoked first or last, respectively.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				Only one instance of each interface type may be registered with a specific transaction.
+			</para>
+		</note>
+		<para>
+			In the TxCore manual we discussed the Last Resource Commit optimization (LRCO), whereby a single resource that is only one-phase aware (does not support prepare), can be enlisted with a transaction that is manipulating two-phase aware participants. This optimization is also supported within the JTA aspects of JBossTS.
+		</para>
+		<para>
+			In order to use the LRCO, your <interfacename>XAResource</interfacename> implementation must extend the <interfacename>com.arjuna.ats.jta.resources.LastResourceCommitOptimisation</interfacename> marker interface (it provides no methods). When enlisting the resource via Transaction.enlistResource, JBossTS will ensure that only a single instance of this type of participant is used within each transaction. Your resource will be driven last in the commit protocol: no invocation of prepare will occur.
+		</para>
+		<note>
+			<para>
+				By default an attempt to enlist more than one instance of a <classname>LastResourceCommitOptimisation</classname> class will fail and false will be returned from <methodname>Transaction.enlistResource</methodname>. This behaviour can be overridden by setting the <property>com.arjuna.ats.jta.allowMultipleLastResources</property> to true. However, before doing so you should read the Section on enlisting multiple one-phase aware resources.
+			</para>
+		</note>
+		<para>
+			In order to utilize the LRCO in a distributed environment, it is necessary to disable interposition support. It is still possible to use implicit context propagation.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_XAResource_Interface-Enlisting_multiple_one_phase_aware_resources">
+			<title>Enlisting multiple one-phase aware resources</title>
+			<para>
+				As discussed in the Transaction Core documentation, in order to guarantee consistency (atomicity) of outcome between multiple participants (resources) within the same transaction, the two-phase commit protocol is used with a durable transaction log. In the case of possessing a single one-phase aware resource, it is still possible to achieve an atomic (all of nothing) outcome across resources by utilizing the Last Resource Commit Optimization, as explained earlier.
+			</para>
+		</formalpara>
+		<para>
+			However, there may be situations where multiple one-phase aware resources are enlisted within the same transaction. For example, a legacy database running within the same transaction as a legacy JMS implementation. In these situations it is not possible to achieve atomicity of transaction outcome across multiple resources because none of them enter the prepare (waiting for final outcome) state: they commit or rollback immediately when instructed by the transaction coordinator, without knowledge of other resource states and without any way of undoing should subsequent resources make a different choice. This can result in data corruption or heuristic outcomes.
+		</para>
+		<para>
+			In these situations we recommend one of the following approaches:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Wrap the resources in compensating transactions. See the Web Services transactions guides for further details.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Migrate the legacy implementations to two-phase aware equivalents.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			In the cases where neither of these options are viable, JBossTS does support the enlistment of multiple one-phase aware resources within the same transaction. In order to do this, see the section on the Last Resource Commit Optimization.
+		</para>
+		<important>
+			<para>
+				Even when this support is enabled, JBossTS will issue warnings when it detects that the option has been enabled ("You have chosen to enable multiple last resources in the transaction manager. This is transactionally unsafe and should not be relied upon.”) and when multiple one-phase resources are enlisted within the transaction (“This is transactionally unsafe and should not be relied on.”).
+			</para>
+		</important>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Opening_a_Resource_Manager">
+		<title>Opening a Resource Manager</title>
+		<para>
+			The X/Open <interfacename>XA</interfacename> interface requires that the transaction manager initialize a resource manager (xa_open) prior to any other xa_ calls. JTA requires initialization of a resource manager to be embedded within the resource adapter that represents the resource manager. The transaction manager does not need to know how to initialize a resource manager; it is only responsible for informing the resource manager about when to start and end work associated with a transaction and when to complete the transaction. The resource adapter is responsible for opening (initializing) the resource manager when the connection to the resource manager is established.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Closing_a_Resource_Manager">
+		<title>Closing a Resource Manager</title>
+		<para>
+			A resource manager is closed by the resource adapter as a result of destroying the transactional resource. A transaction resource at the resource adapter level is comprised of two separate objects:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					An <code>XAResource</code> object that allows the transaction manager to start and end the transaction association with the resource in use and to coordinate transaction completion process.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					A connection object that allows the application to perform operations on the underlying resource (for example, JDBC operations on an RDBMS).
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Once opened, the resource manager is kept open until the resource is released (closed) explicitly. When the application invokes the connection’s close method, the resource adapter invalidates the connection object reference that was held by the application and notifies the application server about the close. The transaction manager should invoke the <methodname>XAResource.end</methodname> method to disassociate the transaction from that connection.
+		</para>
+		<para>
+			The close notification allows the application server to perform any necessary cleanup work and to mark the physical XA connection as free for reuse, if connection pooling is in place.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Threads_of_control">
+		<title>Threads of control</title>
+		<para>
+			The X/Open <interfacename>XA</interfacename> interface specifies that the transaction association related xa calls must be invoked from the same thread context. This thread-of-control requirement is not applicable to the object-oriented component-based application run-time environment, in which application threads are dispatched dynamically at method invocation time. Different threads may be using the same connection resource to access the resource manager if the connection spans multiple method invocation. Depending on the implementation of the application server, different threads may be involved with the same <code>XAResource</code> object. The resource context and the transaction context may be operated independent of thread context. This means that it is possible for different threads to be invoking the start and end methods.
+		</para>
+		<para>
+			If the application server allows multiple threads to use a single <code>XAResource</code> object and the associated connection to the resource manager, it is the responsibility of the application server to ensure that there is only one transaction context associated with the resource at any point of time. Thus the <interfacename>XAResource</interfacename> interface requires that the resource managers be able to support the two-phase commit protocol from any thread context.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Transaction_association">
+		<title>Transaction association</title>
+		<para>
+			Transactions are associated with a transactional resource via the start method, and disassociated from the resource via the <methodname>end</methodname> method. The resource adapter is responsible for internally maintaining an association between the resource connection object and the <code>XAResource</code> object. At any given time, a connection is associated with a single transaction, or it is not associated with any transaction at all. Because JTA does not support nested transactions it is an error for the start method to be invoked on a connection that is currently associated with a different transaction.
+		</para>
+		<para>
+			Interleaving multiple transaction contexts using the same resource may be done by the transaction manager as long as start and end are invoked properly for each transaction context switch. Each time the resource is used with a different transaction, the method end must be invoked for the previous transaction that was associated with the resource, and start must be invoked for the current transaction context.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Externally_controlled_connections">
+		<title>Externally controlled connections</title>
+		<para>
+			For transactional application whose transaction states are managed by an application server, its resources must also be managed by the application server so that transaction association is performed properly. If an application is associated with a transaction, it is an error for the application to perform transactional work through the connection without having the connection’s resource object already associated with the global transaction. The application server must ensure that the <code>XAResource</code> object in use is associated with the transaction. This is done by invoking the <methodname>Transaction.enlistResource</methodname> method.
+		</para>
+		<para>
+			If a server side transactional application retains its database connection across multiple client requests, the application server must ensure that before dispatching a client request to the application thread, the resource is enlisted with the application’s current transaction context. This implies that the application server manages the connection resource usage status across multiple method invocations.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Resource_sharing">
+		<title>Resource sharing</title>
+		<para>
+			When the same transactional resource is used to interleave multiple transactions, it is the responsibility of the application server to ensure that only one transaction is enlisted with the resource at any given time. To initiate the transaction commit process, the transaction manager is allowed to use any of the resource objects connected to the same resource manager instance. The resource object used for the two-phase commit protocol does not need to have been involved with the transaction being completed.
+		</para>
+		<para>
+			The resource adapter must be able to handle multiple threads invoking the <interfacename>XAResource</interfacename> methods concurrently for transaction commit processing. For example, with reference to the code below, suppose we have a transactional resource <code>r1</code>. Global transaction <code>xid1</code> was started and ended with <code>r1</code>. Then a different global transaction <code>xid2</code> is associated with <code>r1</code>. In the meanwhile, the transaction manager may start the two phase commit process for <code>xid1</code> using <code>r1</code> or any other transactional resource connected to the same resource manager. The resource adapter needs to allow the commit process to be executed while the resource is currently associated with a different global transaction.
+		</para>
+<screen>
+XAResource xares = r1.getXAResource();
+	
+xares.start(xid1); // associate xid1 to the connection
+	
+..
+xares.end(xid1); // disassociate xid1 to the connection
+..
+xares.start(xid2); // associate xid2 to the connection
+..
+// While the connection is associated with xid2,
+// the TM starts the commit process for xid1
+status = xares.prepare(xid1);
+..
+xares.commit(xid1, false);
+</screen>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Local_and_global_transactions">
+		<title>Local and global transactions</title>
+		<para>
+			The resource adapter must support the usage of both local and global transactions within the same transactional connection. Local transactions are transactions that are started and coordinated by the resource manager internally. The <interfacename>XAResource</interfacename> interface is not used for local transactions. When using the same connection to perform both local and global transactions, the following rules apply:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The local transaction must be committed (or rolled back) before starting a global transaction in the connection.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The global transaction must be disassociated from the connection before any local transaction is started.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Transaction_timeouts">
+		<title>Transaction timeouts</title>
+		<para>
+			Timeout values can be associated with transactions in order to control their lifetime. If a transaction has not terminated (committed or rolled back) before the timeout value elapses, the transaction system will automatically roll it back. The <interfacename>XAResource</interfacename> interface supports a operation, which allows the timeout associated with the current transaction to be propagated to the resource manager and if supported, will override any default timeout associated with the resource manager. This can be useful when long running transactions may have lifetimes that would exceed the default and in which case, if the timeout were not altered, the resource manager would rollback before the transaction terminated and subsequently cause the transaction to roll back as well.
+		</para>
+		<para>
+			If no timeout value is explicitly set for a transaction, or a value of 0 is specified, then an implementation specific default value may be used. In the case of JBossTS, how this default value is set depends upon which JTA implementation you are using.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Local JTA: use the <property>com.arjuna.ats.arjuna.coordinator.defaultTimeout</property> property value and give a timeout in seconds. The default value is 60 seconds.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					JTS: use the <property>com.arjuna.ats.jts.defaultTimeout</property> property value and give a timeout in seconds. The default value is 0, for instance, transactions do not timeout.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Unfortunately there are situations where imposing the same timeout as the transaction on a resource manager may not be appropriate. For example, if the system administrator wishes to have control over the lifetimes on resource managers and does not want to (or cannot) allow that control to be passed to some external entity. At present JBossTS supports an all-or-nothing approach to whether or not <methodname>setTransactionTimeout</methodname> is called on <interfacename>XAResource</interfacename> instances.
+		</para>
+		<para>
+			If the <property>com.arjuna.ats.jta.xaTransactionTimeoutEnabled</property> property is set to true (the default) then it will be called on all instances. Alternatively, the <methodname>setXATransactionTimeoutEnabled</methodname> method of <classname>com.arjuna.ats.jta.common.Configuration</classname> can be used.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Test-Dynamic_Registration">
+		<title>Dynamic Registration</title>
+		<para>
+			Dynamic registration is not supported in <interfacename>XAResource</interfacename> because of the following reasons:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					In the Java component-based application server environment, connections to the resource manager are acquired dynamically when the application explicitly requests a connection. These resources are enlisted with the transaction manager on a needed basis.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					If a resource manager requires a way to dynamically register its work to the global transaction, the implementation can be done at the resource adapter level via a private interface between the resource adapter and the underlying resource manager.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,153 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-Transaction_Recovery">
+	<title>Transaction Recovery</title>
+	<para>
+	</para>
+	<section id="sect-Transactions_JTA_Programmers_Guide-Transaction_Recovery-Failure_recovery">
+		<title>Failure recovery</title>
+		<para>
+			During recovery, the Transaction Manager needs to be able to communicate to all resource managers that are in use by the applications in the system. For each resource manager, the Transaction Manager uses the <methodname>XAResource.recover</methodname> method to retrieve the list of transactions that are currently in a prepared or heuristically completed state. Typically, the system administrator configures all transactional resource factories that are used by the applications deployed on the system. An example of such a resource factory is the JDBC <code>XADataSource</code> object, which is a factory for the JDBC <code>XAConnection</code> objects.
+		</para>
+		<para>
+			Because <code>XAResource</code> objects are not persistent across system failures, the Transaction Manager needs to have some way to acquire the <code>XAResource</code> objects that represent the resource managers which might have participated in the transactions prior to the system failure. For example, a Transaction Manager might, through the use of JNDI lookup mechanism, acquire a connection from each of the transactional resource factories, and then obtain the corresponding <code>XAResource</code> object for each connection. The Transaction Manager then invokes the <methodname>XAResource.recover</methodname> method to ask each resource manager to return the transactions that are currently in a prepared or heuristically completed state.
+		</para>
+		<note>
+			<para>
+				When running XA recovery it is necessary to tell JBossTS which types of Xid it can recover. Each Xid that JBossTS creates has a unique node identifier encoded within it and JBossTS will only recover transactions and states that match a specified node identifier. The node identifier to use should be provided to JBossTS via a property that starts with the name <property>com.arjuna.ats.jta.xaRecoveryNode</property>; multiple values may be provided. A value of ‘*’ will force JBossTS to recover (and possibly rollback) all transactions irrespective of their node identifier and should be used with caution.
+			</para>
+		</note>
+		<para>
+			If using the JBossJTA JDBC 2.0 driver, then JBossJTA will take care of all <interfacename>XAResource</interfacename> crash recovery automatically. Otherwise one of the following recovery mechanisms will be used:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					If the <code>XAResource</code> is serializable, then the serialized form will be saved during transaction commitment, and used during recovery. It is assumed that the recreated <code>XAResource</code> is valid and can be used to drive recovery on the associated database.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The <interfacename>com.arjuna.ats.jta.recovery.XAResourceRecovery</interfacename>, <interfacename>com.arjuna.ats.jta.recovery.XARecoveryResourceManager</interfacename> and <interfacename>com.arjuna.ats.jta.recovery.XARecoveryResource</interfacename> interfaces are used. These are documented in the JDBC chapters on failure recovery.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<note>
+			<para>
+				In JBossTS 3.3 the interface <interfacename>XAConnectionRecovery</interfacename> was deprecated in favor of <interfacename>XAResourceRecovery</interfacename>. Users are encouraged to move to his new interface.
+			</para>
+		</note>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Transaction_Recovery-Recovering_XAConnections">
+		<title>Recovering XAConnections</title>
+		<para>
+			When recovering from failures, JBossJTA requires the ability to reconnect to databases that were in use prior to the failures in order to resolve any outstanding transactions. Most connection information will be saved by the transaction service during its normal execution, and can be used during recovery to recreate the connection. However, it is possible that not all such information will have been saved prior to a failure (for example, a failure occurs before such information can be saved, but after the database connection is used). In order to recreate those connections it is necessary to provide implementations of the following JBossJTA interface <interfacename>com.arjuna.ats.jta.recovery.XAResourceRecovery</interfacename>, one for each database that may be used by an application.
+		</para>
+		<note>
+			<para>
+				If using the transactional JDBC 2.0 driver provided with JBossJTA, then no additional work is necessary in order to ensure that recovery occurs.
+			</para>
+		</note>
+		<para>
+			To inform the recovery system about each of the <code>XAResourceRecovery</code> instances, it is necessary to specify their class names through property variables. Any property variable found in the properties file, or registered at runtime, which starts with the name <property>com.arjuna.ats.jta.recovery.XAResourceRecovery</property> will be assumed to represent one of these instances, and its value should be the class name. For example:
+		</para>
+<screen>
+com.arjuna.ats.jta.recovery.XAResourceRecoveryOracle=com.foo.barRecovery
+</screen>
+		<para>
+			Additional information that will be passed to the instance when it is created may be specified after a semicolon:
+		</para>
+<screen>
+com.arjuna.ats.jta.recovery.XAResourceRecoveryOracle=com.foo.barRecovery;myData=hello
+</screen>
+		<note>
+			<para>
+				These properties need to go into the JTA section of the property file.
+			</para>
+		</note>
+		<para>
+			Any errors will be reported during recovery.
+		</para>
+<screen>
+public interface XAResourceRecovery
+{
+	public XAResource getXAResource () throws SQLException;
+	
+	public boolean initialise (String p);
+	
+	public boolean hasMoreResources ();
+};
+</screen>
+		<para>
+			Each method should return the following information:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<methodname>initialise</methodname>: once the instance has been created, any additional information which occurred on the property value (anything found after the first semi-colon) will be passed to the object. The object can then use this information in an implementation specific manner to initialise itself, for example.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<methodname>hasMoreResources</methodname>: each <code>XAResourceRecovery</code> implementation may provide multiple <code>XAResource</code> instances. Before any call to <methodname>getXAResource</methodname> is made, <methodname>hasMoreResources</methodname> is called to determine whether there are any further connections to be obtained. If this returns false, <methodname>getXAResource</methodname> will not be called again during this recovery sweep and the instance will not be used further until the next recovery scan.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<methodname>getXAResource</methodname>: returns an instance of the <code>XAResource</code> object. How this is created (and how the parameters to its constructors are obtained) is up to the <code>XAResourceRecovery</code> implementation. The parameters to the constructors of this class should be similar to those used when creating the initial driver or data source, and should obviously be sufficient to create new <code>XAResources</code> that can be used to drive recovery.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<note>
+			<para>
+				If you want your <code>XAResourceRecovery</code> instance to be called during each sweep of the recovery manager then you should ensure that once <methodname>hasMoreResources</methodname> returns false to indicate the end of work for the current scan it then returns true for the next recovery scan.
+			</para>
+		</note>
+	</section>
+	
+	<section id="sect-Transactions_JTA_Programmers_Guide-Transaction_Recovery-Shipped_XAResourceRecovery_implementations">
+		<title>Shipped XAResourceRecovery implementations</title>
+		<para>
+			Recovery of <interfacename>XA</interfacename> datasources can sometimes be implementation dependant, requiring developers to provide their own <interfacename>XAResourceRecovery</interfacename> instances. However, JBossTS ships with several out-of-the-box implementations that may be useful.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<interfacename>com.arjuna.ats.internal.jdbc.recovery.OracleXARecovery</interfacename>: this expects an XML property file to be specified upon creation and from which it will read the database URL, username and password. For example:
+				</para>
+<screen>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+	
+&lt;transaction-service&gt;
+	&lt;properties name="jdbc" type="system"&gt;
+		&lt;property name="DatabaseURL" value="jdbc:oracle:thin:@hostname:1521:sid"/&gt;
+		&lt;property name="UserName"    value="username"/&gt;
+		&lt;property name="Password"    value="password"/&gt;
+	&lt;/properties&gt;
+&lt;/transaction-service&gt;
+</screen>
+			</listitem>
+			<listitem>
+				<para>
+					<interfacename>com.arjuna.ats.internal.jdbc.recovery.JDBCXARecovery</interfacename>: this recovery implementation should work on any datasource that is exposed via JNDI. It expects an XML property file to be specified upon creation and from which it will read the database JNDI name, username and password. For example:
+				</para>
+<screen>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+	
+&lt;transaction-service&gt;
+	&lt;properties name="jdbc" type="system"&gt;
+		&lt;property name="DatabaseJNDIName" value="java:ExampleDS"/&gt;
+		&lt;property name="UserName"         value="username"/&gt;
+		&lt;property name="Password"         value="password"/&gt;
+	&lt;/properties&gt;
+&lt;/transaction-service&gt;
+</screen>
+			</listitem>
+		</itemizedlist>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,187 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-Transactions">
+	<title>Transactions</title>
+	<section id="sect-Transactions_JTA_Programmers_Guide-Transactions-The_API">
+		<title>The API</title>
+		<para>
+			The Java Transaction API consists of three elements: a high-level application transaction demarcation interface, a high-level transaction manager interface intended for application server, and a standard Java mapping of the X/Open XA protocol intended for transactional resource manager. All of the JTA classes and interfaces occur within the <package>javax.transaction</package> package, and the corresponding JBossJTA implementations within the <package>com.arjuna.ats.jta</package> package.
+		</para>
+		<important>
+			<para>
+				Each Xid that JBossTS creates must have a unique node identifier encoded within it and JBossTS will only recover transactions and states that match a specified node identifier. The node identifier to use should be provided to JBossTS via the <property>com.arjuna.ats.arjuna.xa.nodeIdentifier</property> property. You must make sure this value is unique across your JBossTS instances. If you do not provide a value, then JBossTS will fabricate one and report the value via the logging infrastructure. The contents of this should be alphanumeric.
+			</para>
+		</important>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-UserTransaction">
+			<title>UserTransaction</title>
+			<para>
+				The <interfacename>UserTransaction</interfacename> interface provides applications with the ability to control transaction boundaries. It has methods for beginning, committing, and rolling back top-level transactions: nested transactions are not supported, and begin throws the <code>NotSupportedException</code> when the calling thread is already associated with a transaction. <interfacename>UserTransaction</interfacename> automatically associates newly created transactions with the invoking thread.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				In JBossJTA, UserTransactions can be obtained from the static <methodname>com.arjuna.ats.jta.UserTransaction.userTransaction()</methodname> method.
+			</para>
+		</note>
+		<para>
+			In order to select the local JTA implementation it is necessary to perform the following steps:
+		</para>
+		<orderedlist>
+			<listitem>
+				<para>
+					make sure the property <property>com.arjuna.ats.jta.jtaTMImplementation</property> is set to <property>com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple</property>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					1.make sure the property <property>com.arjuna.ats.jta.jtaUTImplementation</property> is set to <property>com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple</property>.
+				</para>
+			</listitem>
+		</orderedlist>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-TransactionManager">
+			<title>TransactionManager</title>
+			<para>
+				The <interfacename>TransactionManager</interfacename> interface allows the application server to control transaction boundaries on behalf of the application being managed.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				In JBossJTA, transaction manager implementations can be obtained from the static <methodname>com.arjuna.ats.jta.TransactionManager.transactionManager</methodname> method.
+			</para>
+		</note>
+		<para>
+			The Transaction Manager maintains the transaction context association with threads as part of its internal data structure. A thread’s transaction context is either null or it refers to a specific global transaction. Multiple threads may be associated with the same global transaction. As noted above, nested transactions are not supported.
+		</para>
+		<para>
+			Each transaction context is encapsulated by a Transaction object, which can be used to perform operations which are specific to the target transaction, regardless of the calling thread’s transaction context.
+		</para>
+		<para>
+			The <methodname>begin</methodname> method of <interfacename>TransactionManager</interfacename> starts a new top-level transaction and associates the transaction context with the calling thread. If the calling thread is already associated with a transaction then it throws the <code>NotSupportedException</code>.
+		</para>
+		<para>
+			The <methodname>getTransaction</methodname> method returns the Transaction object that represents the transaction context currently associated with the calling thread. This object can be used to perform various operations on the target transaction, described later.
+		</para>
+		<para>
+			The commit method is used to complete the transaction currently associated with the calling thread. After it returns, the calling thread is associated with no transaction. If commit is called when the thread is not associated with any transaction context, the TM throws an exception. In some implementation, the commit operation is restricted to the transaction originator only. If the calling thread is not allowed to commit the transaction, the TM throws an exception. JBossJTA does not currently impose any restriction on the ability of threads to terminate transactions.
+		</para>
+		<para>
+			The <methodname>rollback</methodname> method is used to rollback the transaction associated with the current thread. After the <methodname>rollback</methodname> method completes, the thread is associated with no transaction.
+		</para>
+		<note>
+			<para>
+				In a multi-threaded environment it is possible that multiple threads are active within the same transaction. If checked transaction semantics have been disabled, or the transaction times out, then it is possible for a transaction to be terminated by a thread other than the one that created it. In this case, it is often important that this information is communicated to the creator. JBossTS does this during commit or rollback by throwing <code>IllegalStateException</code>.
+			</para>
+		</note>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-Suspending_and_resuming_a_transaction">
+			<title>Suspending and resuming a transaction</title>
+			<para>
+				The JTA supports the concept of a thread temporarily suspending and resuming transactions to enable it to perform non-transactional work. The suspend method is called to temporarily suspend the current transaction that is associated with the calling thread, i.e., so that the thread is no longer operating within its scope. If the thread is not associated with any transaction, a null object reference is returned; otherwise, a valid <code>Transaction</code> object is returned. The <code>Transaction</code> object can later be passed to the resume method to reinstate the transaction context.
+			</para>
+		</formalpara>
+		<para>
+			The <methodname>resume</methodname> method associates the specified transaction context with the calling thread. If the transaction specified is a valid transaction, the transaction context is associated with the calling thread; otherwise, the thread is associated with no transaction.
+		</para>
+		<note>
+			<para>
+				If <methodname>resume</methodname> is invoked when the calling thread is already associated with another transaction, the Transaction Manager throws the <code>IllegalStateException</code> exception.
+			</para>
+		</note>
+<screen>
+Transaction tobj = TransactionManager.suspend();
+	..
+TransactionManager.resume(tobj);
+</screen>
+		<note>
+			<para>
+				Some Transaction Manager implementations allow a suspended transaction to be resumed by a different thread. This feature is not required by JTA, but JBossJTA does support this.
+			</para>
+		</note>
+		<para>
+			When a transaction is suspended the application server must ensure that the resources in use by the application are no longer registered with the suspended transaction. When a resource is de-listed this triggers the Transaction Manager to inform the resource manager to disassociate the transaction from the specified resource object. When the application’s transaction context is resumed, the application server must ensure that the resources in use by the application are again enlisted with the transaction. Enlisting a resource as a result of resuming a transaction triggers the Transaction Manager to inform the resource manager to re-associate the resource object with the resumed transaction.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-The_Transaction_interface">
+			<title>The Transaction interface</title>
+			<para>
+				The <interfacename>Transaction</interfacename> interface allows operations to be performed on the transaction associated with the target object. Every top-level transaction is associated with one <code>Transaction</code> object when the transaction is created. The <code>Transaction</code> object can be used to:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Enlist the transactional resources in use by the application.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Register for transaction synchronization call backs.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Commit or rollback the transaction.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Obtain the status of the transaction.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The <methodname>commit</methodname> and <methodname>rollback</methodname> methods allow the target object to be committed or rolled back. The calling thread is not required to have the same transaction associated with the thread. If the calling thread is not allowed to commit the transaction, the transaction manager throws an exception. At present JBossJTA does not impose restrictions on threads terminating transactions.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-Resource_enlistment">
+			<title>Resource enlistment</title>
+			<para>
+				Transactional resources such as database connections are typically managed by the application server in conjunction with some resource adapter and optionally with connection pooling optimization. In order for an external transaction manager to co-ordinate transactional work performed by the resource managers, the application server must enlist and de-list the resources used in the transaction. These resources (participants) are enlisted with the transaction so that they can be informed when the transaction terminates, for example, are driven through the two-phase commit protocol.
+			</para>
+		</formalpara>
+		<para>
+			As stated previously, the JTA is much more closely integrated with the XA concept of resources than the arbitrary objects. For each resource in-use by the application, the application server invokes the <methodname>enlistResource</methodname> method with an <code>XAResource</code> object which identifies the resource in use. See for details on how the implementation of the <code>XAResource</code> can affect recovery in the event of a failure.
+		</para>
+		<para>
+			The enlistment request results in the transaction manager informing the resource manager to start associating the transaction with the work performed through the corresponding resource. The transaction manager is responsible for passing the appropriate flag in its <methodname>XAResource.start</methodname> method call to the resource manager.
+		</para>
+		<para>
+			The <methodname>delistResource</methodname> method is used to disassociate the specified resource from the transaction context in the target object. The application server invokes the method with the two parameters: the <code>XAResource</code> object that represents the resource, and a flag to indicate whether the operation is due to the transaction being suspended (TMSUSPEND), a portion of the work has failed (TMFAIL), or a normal resource release by the application (TMSUCCESS).
+		</para>
+		<para>
+			The de-list request results in the transaction manager informing the resource manager to end the association of the transaction with the target <code>XAResource</code>. The flag value allows the application server to indicate whether it intends to come back to the same resource whereby the resource states must be kept intact. The transaction manager passes the appropriate flag value in its <methodname>XAResource.end</methodname> method call to the underlying resource manager.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-Transaction_synchronization">
+			<title>Transaction synchronization</title>
+			<para>
+				Transaction synchronization allows the application server to be notified before and after the transaction completes. For each transaction started, the application server may optionally register a Synchronization call back object to be invoked by the transaction manager:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The <methodname>beforeCompletion</methodname> method is called prior to the start of the two-phase transaction complete process. This call is executed in the same transaction context of the caller who initiates the <methodname>TransactionManager.commit</methodname> or the call is executed with no transaction context if <methodname>Transaction.commit</methodname> is used.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The <methodname>afterCompletion</methodname> method is called after the transaction has completed. The status of the transaction is supplied in the parameter. This method is executed without a transaction context.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-The_API-Transaction_equality">
+			<title>Transaction equality</title>
+			<para>
+				The transaction manager implements the Transaction object’s equals method to allow comparison between the target object and another Transaction object. The equals method should return true if the target object and the parameter object both refer to the same global transaction.
+			</para>
+		</formalpara>
+<screen>
+Transaction txObj = TransactionManager.getTransaction();
+Transaction someOtherTxObj = ..
+	..
+	
+boolean isSame = txObj.equals(someOtherTxObj);
+</screen>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,91 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_JTA_Programmers_Guide-Using_JBossJTA_in_Application_Servers">
+	<title>Using JBossJTA in Application Servers</title>
+	<section id="sect-Transactions_JTA_Programmers_Guide-Using_JBossJTA_in_Application_Servers-JBoss_Application_Server">
+		<title>JBoss Application Server</title>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-JBoss_Application_Server-Service_Configuration">
+			<title>Service Configuration</title>
+			<para>
+				The JBoss Transaction Service is configured primarily via the XML files stored in the etc directory, but when run as a JBOSS service there are a number of configurable attributes available. They are as follows:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					TransactionTimeout – The default transaction timeout to be used for new transactions. Specified as an integer in seconds.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					StatisticsEnabled – This determines whether or not the transaction service should gather statistical information. This information can then be viewed using the PerformanceStatistics MBean. Specified as a Boolean. The default is to not gather this information.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					PropagateFullContext – This determines whether a full transactional context is propagated by context importer/exporter. If set to false only the current transaction context is propagated. If set to true the full transaction context (including parent transactions) is propagated.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			These attributes are specified as MBean attributes in the jboss-service.xml file located in the server/all/conf directory, for example:
+		</para>
+<screen>
+&lt;mbean code="com.arjuna.ats.jbossatx.jts.TransactionManagerService" name="jboss:service=TransactionManager"&gt;
+		
+&lt;attribute name="TransactionTimeout"&gt;300&lt;/attribute&gt;
+&lt;attribute name="StatisticsEnabled&gt;true&lt;/attribute&gt;&gt;
+		
+&lt;/mbean&gt;
+</screen>
+		<para>
+			The transaction service is configurable also via the standard JBoss Transaction Service property files. These are located in the JBossTS install location under the etc sub-directory.
+		</para>
+		<para>
+			These files can be edited manually or through JMX. Each property file is exposed via an object with the name <code>com.arjuna.ts.properties</code> and an attribute of module where module is equal to the name of the module to be configured, for example, <code>com.arjuna.ts.properties:module=arjuna</code>.
+		</para>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-JBoss_Application_Server-Logging">
+			<title>Logging</title>
+			<para>
+				In order to make JBossTS logging semantically consistent with JBossAS, the TransactionManagerService modifies the level of some log messages. This is achieved by overriding the value of the <property>com.arjuna.common.util.logger</property> property given in the <filename>jbossjta-properties.xml</filename> file. Therefore, the value of this property will have no effect on the logging behaviour when running embedded in JBossAS. By forcing use of the log4j_releveler logger, the TransactionManagerService causes all INFO level messages in the transaction code to be modified to behave as DEBUG messages. Therefore, these messages will not appear in log files if the filter level is INFO. All other log messages behave as normal.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-JBoss_Application_Server-The_services">
+			<title>The services</title>
+			<para>
+				There is currently one service offered by the JBOSS integration called TransactionManagerService. Here we shall discuss what this service does.
+			</para>
+		</formalpara>
+		<para>
+			The transaction manager service’s main purpose is to ensure the recovery manager is started. It also binds the JBossTS JTA transaction manager to java:/TransactionManager name with the JNDI provider. This service depends upon the existence of the CORBA ORB Service and it must be using JacORB as the underlying ORB implementation.
+		</para>
+		<para>
+			There are two instances of this service:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					distributed: this uses the JTS enabled transaction manager implementation and hence supports distributed transactions and recovery. To configure this use the <classname>com.arjuna.ats.jbossatx.jts.TransactionManagerService</classname> class. This is the default configuration.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					local: this uses the purely local JTA implementation. To configure this use the <classname>com.arjuna.ats.jbossatx.jta.TransactionManagerService</classname> class.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_JTA_Programmers_Guide-JBoss_Application_Server-Ensuring_Transactional_Context_is_Propagated_to_the_Server">
+			<title>Ensuring Transactional Context is Propagated to the Server</title>
+			<para>
+				It is possible to coordinate transactions from a coordinator which is not located within the JBoss server (e.g. using transactions created by an external OTS server). To ensure the transaction context is propagated via JRMP invocations to the server, the transaction propagation context factory needs to be explicitly set for the JRMP invoker proxy. This is done as follows:
+			</para>
+		</formalpara>
+<screen>
+JRMPInvokerProxy.setTPCFactory( new com.arjuna.ats.internal.jbossatx.jts.PropagationContextManager() );
+</screen>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/An_Introduction_to_the_JTA.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/An_Introduction_to_the_JTA.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/An_Introduction_to_the_JTA.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,112 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: An_Introduction_to_the_JTA.xml:6
+#, no-c-format
+msgid "An Introduction to the JTA"
+msgstr ""
+
+#. Tag: title
+#: An_Introduction_to_the_JTA.xml:8
+#, no-c-format
+msgid "The Java Transaction API"
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:9
+#, no-c-format
+msgid ""
+"The interfaces specified by the many transaction standards are typically too "
+"low-level for most application programmers. Therefore, Sun Microsystems has "
+"specified higher-level interfaces to assist in the development of "
+"distributed transactional applications. Note, these interfaces are still low-"
+"level, and require, for example, the programmer to be concerned with state "
+"management and concurrency for transactional application. In addition, they "
+"are geared more for applications which require XA resource integration "
+"capabilities, rather than the more general resources which the other APIs "
+"allow."
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:12
+#, no-c-format
+msgid ""
+"With reference to [JTA99], distributed transaction services typically "
+"involve a number of participants:"
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:17
+#, no-c-format
+msgid ""
+"Application server: which provides the infrastructure required to support "
+"the application run-time environment which includes transaction state "
+"management, for example, an EJB server."
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:22
+#, no-c-format
+msgid ""
+"Transaction manager: provides the services and management functions required "
+"to support transaction demarcation, transactional resource management, "
+"synchronisation and transaction context propagation."
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:27
+#, no-c-format
+msgid ""
+"Resource manager: (through a resource adapter<footnote> <para> A Resource "
+"Adapter is used by an application server or client to connect to a Resource "
+"Manager. JDBC drivers which are used to connect to relational databases are "
+"examples of Resource Adapters. </para> </footnote>) provides the application "
+"with access to resources. The resource manager participates in distributed "
+"transactions by implementing a transaction resource interface used by the "
+"transaction manager to communicate transaction association, transaction "
+"completion and recovery."
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:36
+#, no-c-format
+msgid ""
+"A communication resource manager (CRM): supports transaction context "
+"propagation and access to the transaction service for incoming and outgoing "
+"requests."
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:41
+#, no-c-format
+msgid ""
+"From the transaction manager’s perspective, the actual implementation of the "
+"transaction services does not need to be exposed; only high-level interfaces "
+"need to be defined to allow transaction demarcation, resource enlistment, "
+"synchronization and recovery process to be driven from the users of the "
+"transaction services. The JTA is a high-level application interface that "
+"allows a transactional application to demarcate transaction boundaries, and "
+"contains also contains a mapping of the X/Open XA protocol."
+msgstr ""
+
+#. Tag: para
+#: An_Introduction_to_the_JTA.xml:45
+#, no-c-format
+msgid ""
+"The JTA support provided by JBossJTA is compliant with the 1.0.1 "
+"specification."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions JTA Programmers Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid "This book is about the Transactions JTA from the view of the programmer"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:21
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:27
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Configuring_JBossJTA.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Configuring_JBossJTA.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Configuring_JBossJTA.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,136 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuring_JBossJTA.xml:6
+#, no-c-format
+msgid "Configuring JBossJTA"
+msgstr ""
+
+#. Tag: title
+#: Configuring_JBossJTA.xml:8
+#, no-c-format
+msgid "Configuring options"
+msgstr ""
+
+#. Tag: para
+#: Configuring_JBossJTA.xml:9
+#, no-c-format
+msgid ""
+"The following table shows the configuration features, with default values "
+"shown in italics. For more detailed information, the relevant section "
+"numbers are provided."
+msgstr ""
+
+#. Tag: title
+#: Configuring_JBossJTA.xml:13
+#, no-c-format
+msgid "JBossJTA configuration options."
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:17
+#, no-c-format
+msgid "Configuration Name"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:20
+#, no-c-format
+msgid "Possibile Values"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:23
+#, no-c-format
+msgid "Relevant Section"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:30
+#, no-c-format
+msgid "com.arjuna.ats.jta.supportSubtransactions"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:33
+#, no-c-format
+msgid "YES/NO"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:40
+#, no-c-format
+msgid "com.arjuna.ats.jta.jtaTMImplementation"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:43
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple/"
+"com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:50
+#, no-c-format
+msgid "com.arjuna.ats.jta.jtaUTImplementation"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:53
+#, no-c-format
+msgid ""
+"com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple/com."
+"arjuna.ats.internal.jta.transaction.jts.UserTransactionImple"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:60
+#, no-c-format
+msgid "com.arjuna.ats.jta.xaBackoffPeriod"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:69
+#, no-c-format
+msgid "com.arjuna.ats.jdbc.isolationLevel"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:72
+#, no-c-format
+msgid "Any supported JDBC isolation level."
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:79
+#, no-c-format
+msgid "com.arjuna.ats.jta.xaTransactionTimetouEnabled"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:82
+#, no-c-format
+msgid "true/false"
+msgstr ""
+
+#. Tag: entry
+#: Configuring_JBossJTA.xml:85
+#, no-c-format
+msgid "Chapter 3"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Examples.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Examples.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Examples.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,471 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Examples.xml:6
+#, no-c-format
+msgid "Examples"
+msgstr ""
+
+#. Tag: title
+#: Examples.xml:8
+#, no-c-format
+msgid "JDBC example"
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:9
+#, no-c-format
+msgid ""
+"The following code illustrates many of the points described above (note that "
+"for simplicity, much error checking code has been remove). This example "
+"assumes that you are using the transactional JDBC driver provided with "
+"JBossTS. For details about how to configure and use this driver see the "
+"previous Chapter."
+msgstr ""
+
+#. Tag: screen
+#: Examples.xml:12
+#, no-c-format
+msgid ""
+"public class JDBCTest\n"
+"{\n"
+"public static void main (String[] args)\n"
+"{\n"
+"        /*\n"
+"         */\n"
+"        \n"
+"        Connection conn = null;\n"
+"        Connection conn2 = null;\n"
+"        Statement stmt = null;        // non-tx statement\n"
+"        Statement stmtx = null;        // will be a tx-statement\n"
+"        Properties dbProperties = new Properties();\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                System.out.println(\"\\nCreating connection to database: "
+"\"+url);\n"
+"        \n"
+"                /*\n"
+"                 * Create conn and conn2 so that they are bound to the "
+"JBossTS\n"
+"                 * transactional JDBC driver. The details of how to do this "
+"will\n"
+"                 * depend on your environment, the database you wish to use "
+"and\n"
+"                 * whether or not you want to use the Direct or JNDI "
+"approach. See\n"
+"                 * the appropriate chapter in the JTA Programmers Guide.\n"
+"                 */\n"
+"        \n"
+"                stmt = conn.createStatement();  // non-tx statement\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        stmt.executeUpdate(\"DROP TABLE test_table\");\n"
+"                        stmt.executeUpdate(\"DROP TABLE test_table2\");\n"
+"                }\n"
+"                catch (Exception e)\n"
+"                {\n"
+"                        // assume not in database.\n"
+"                }\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        stmt.executeUpdate(\"CREATE TABLE test_table (a "
+"INTEGER,b INTEGER)\");\n"
+"                        stmt.executeUpdate(\"CREATE TABLE test_table2 (a "
+"INTEGER,b INTEGER)\");\n"
+"                }\n"
+"                catch (Exception e)\n"
+"                {\n"
+"                }\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        System.out.println(\"Starting top-level transaction."
+"\");\n"
+"        \n"
+"                        com.arjuna.ats.jta.UserTransaction.userTransaction()."
+"begin();\n"
+"        \n"
+"                        stmtx = conn.createStatement(); // will be a tx-"
+"statement\n"
+"        \n"
+"                        System.out.println(\"\\nAdding entries to table 1."
+"\");\n"
+"        \n"
+"                        stmtx.executeUpdate(\"INSERT INTO test_table (a, b) "
+"VALUES (1,2)\");\n"
+"        \n"
+"                        ResultSet res1 = null;\n"
+"        \n"
+"                        System.out.println(\"\\nInspecting table 1.\");\n"
+"        \n"
+"                        res1 = stmtx.executeQuery(\"SELECT * FROM test_table"
+"\");\n"
+"                        while (res1.next())\n"
+"                        {\n"
+"                                System.out.println(\"Column 1: \"+res1.getInt"
+"(1));\n"
+"                                System.out.println(\"Column 2: \"+res1.getInt"
+"(2));\n"
+"                        }\n"
+"        \n"
+"                        System.out.println(\"\\nAdding entries to table 2."
+"\");\n"
+"        \n"
+"                        stmtx.executeUpdate(\"INSERT INTO test_table2 (a, b) "
+"VALUES (3,4)\");\n"
+"                        \n"
+"                        res1 = stmtx.executeQuery(\"SELECT * FROM test_table2"
+"\");\n"
+"                        \n"
+"                        System.out.println(\"\\nInspecting table 2.\");\n"
+"        \n"
+"                        while (res1.next())\n"
+"                        {\n"
+"                                System.out.println(\"Column 1: \"+res1.getInt"
+"(1));\n"
+"                                System.out.println(\"Column 2: \"+res1.getInt"
+"(2));\n"
+"                        }\n"
+"                        System.out.print(\"\\nNow attempting to rollback "
+"changes.\");\n"
+"        \n"
+"                        com.arjuna.ats.jta.UserTransaction.userTransaction()."
+"rollback();\n"
+"        \n"
+"                        com.arjuna.ats.jta.UserTransaction.userTransaction()."
+"begin();\n"
+"        \n"
+"                        stmtx = conn.createStatement();\n"
+"                        ResultSet res2 = null;\n"
+"        \n"
+"                        System.out.println(\"\\nNow checking state of table "
+"1.\");\n"
+"        \n"
+"                        res2 = stmtx.executeQuery(\"SELECT * FROM test_table"
+"\");\n"
+"                        while (res2.next())\n"
+"                        {\n"
+"                                System.out.println(\"Column 1: \"+res2.getInt"
+"(1));\n"
+"                                System.out.println(\"Column 2: \"+res2.getInt"
+"(2));\n"
+"                        }\n"
+"        \n"
+"                        System.out.println(\"\\nNow checking state of table "
+"2.\");\n"
+"        \n"
+"                        stmtx = conn.createStatement();\n"
+"                        res2 = stmtx.executeQuery(\"SELECT * FROM test_table2"
+"\");\n"
+"                        while (res2.next())\n"
+"                        {\n"
+"                                System.out.println(\"Column 1: \"+res2.getInt"
+"(1));\n"
+"                                System.out.println(\"Column 2: \"+res2.getInt"
+"(2));\n"
+"                        }\n"
+"        \n"
+"                        com.arjuna.ats.jta.UserTransaction.userTransaction()."
+"commit(true);\n"
+"                }\n"
+"                catch (Exception ex)\n"
+"                {\n"
+"                        ex.printStackTrace();\n"
+"                        System.exit(0);\n"
+"                }\n"
+"        }\n"
+"        catch (Exception sysEx)\n"
+"        {\n"
+"                sysEx.printStackTrace();\n"
+"                System.exit(0);\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Examples.xml:16
+#, no-c-format
+msgid "Failure recovery example"
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:17
+#, no-c-format
+msgid ""
+"This class implements the <interfacename>XAResourceRecovery</interfacename> "
+"interface for <code>XAResources</code>. The parameter supplied in "
+"setParameters can contain arbitrary information necessary to initialize the "
+"class once created. In this instance it contains the name of the property "
+"file in which the db connection information is specified, as well as the "
+"number of connections that this file contains information on (separated "
+"by ;)."
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:21
+#, no-c-format
+msgid ""
+"This is only an <emphasis>example</emphasis> of the sorts of things an "
+"<code>XAResourceRecovery</code> implementer could do. This implementation "
+"uses a property file that is assumed to contain sufficient information to "
+"recreate connections used during the normal run of an application so that we "
+"can perform recovery on them. It is not recommended that information such as "
+"user name and password appear in such a raw text format as it opens up a "
+"potential security hole."
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:25
+#, no-c-format
+msgid ""
+"The db parameters specified in the property file are assumed to be in the "
+"format:"
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:30
+#, no-c-format
+msgid "DB_x_DatabaseURL="
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:35
+#, no-c-format
+msgid "DB_x_DatabaseUser="
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:40
+#, no-c-format
+msgid "DB_x_DatabasePassword="
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:45
+#, no-c-format
+msgid "DB_x_DatabaseDynamicClass="
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:50
+#, no-c-format
+msgid "Where x is the number of the connection information."
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:54
+#, no-c-format
+msgid ""
+"Some error handling code has been removed from this text for ease of "
+"readability purposes."
+msgstr ""
+
+#. Tag: screen
+#: Examples.xml:58
+#, no-c-format
+msgid ""
+"/*\n"
+" * Some XAResourceRecovery implementations will do their startup work here,\n"
+" * and then do little or nothing in setDetails. Since this one needs to "
+"know\n"
+" * dynamic class name, the constructor does nothing.\n"
+" */\n"
+"        \n"
+"public BasicXARecovery () throws SQLException\n"
+"{\n"
+"        numberOfConnections = 1;\n"
+"        connectionIndex = 0;\n"
+"        props = null;\n"
+"}\n"
+"        \n"
+"/*\n"
+" * The recovery module will have chopped off this class name already. The\n"
+" * parameter should specify a property file from which the url, user name,\n"
+" * password, etc. can be read.\n"
+" * \n"
+" * @message com.arjuna.ats.internal.jdbc.recovery.initexp An exception\n"
+" *          occurred during initialisation.\n"
+" */\n"
+"        \n"
+"public boolean initialise (String parameter) throws SQLException\n"
+"{\n"
+"        if (parameter == null) \n"
+"                return true;\n"
+"        \n"
+"        int breakPosition = parameter.indexOf(BREAKCHARACTER);\n"
+"        String fileName = parameter;\n"
+"        \n"
+"        if (breakPosition != -1)\n"
+"        {\n"
+"                fileName = parameter.substring(0, breakPosition - 1);\n"
+"        \n"
+"                try\n"
+"                {\n"
+"                        numberOfConnections = Integer.parseInt(parameter."
+"substring(breakPosition + 1));\n"
+"                }\n"
+"                catch (NumberFormatException e)\n"
+"                {\n"
+"                        return false;\n"
+"                }\n"
+"        }\n"
+"        \n"
+"        try\n"
+"        {\n"
+"                String uri = com.arjuna.common.util.FileLocator.locateFile"
+"(fileName);\n"
+"                jdbcPropertyManager.propertyManager.load(XMLFilePlugin.class."
+"getName(), uri);\n"
+"        \n"
+"                props = jdbcPropertyManager.propertyManager.getProperties"
+"();\n"
+"        }\n"
+"        catch (Exception e)\n"
+"        {\n"
+"                return false;\n"
+"        }\n"
+"        \n"
+"        return true;\n"
+"}\n"
+"        \n"
+"/*\n"
+" * @message com.arjuna.ats.internal.jdbc.recovery.xarec {0} could not find\n"
+" *          information for connection!\n"
+" */\n"
+"        \n"
+"public synchronized XAResource getXAResource () throws SQLException\n"
+"{\n"
+"        JDBC2RecoveryConnection conn = null;\n"
+"        \n"
+"        if (hasMoreResources())\n"
+"        {\n"
+"                connectionIndex++;\n"
+"        \n"
+"                conn = getStandardConnection();\n"
+"        \n"
+"        if (conn == null) conn = getJNDIConnection();\n"
+"        }\n"
+"        \n"
+"                return conn.recoveryConnection().getConnection()."
+"getXAResource();\n"
+"}\n"
+"        \n"
+"public synchronized boolean hasMoreResources ()\n"
+"{\n"
+"        if (connectionIndex == numberOfConnections) \n"
+"                return false;\n"
+"        else\n"
+"                return true;\n"
+"}\n"
+"        \n"
+"private final JDBC2RecoveryConnection getStandardConnection ()\n"
+"        throws SQLException\n"
+"{\n"
+"        String number = new String(\"\" + connectionIndex);\n"
+"        String url = new String(dbTag + number + urlTag);\n"
+"        String password = new String(dbTag + number + passwordTag);\n"
+"        String user = new String(dbTag + number + userTag);\n"
+"        String dynamicClass = new String(dbTag + number + dynamicClassTag);\n"
+"        \n"
+"        Properties dbProperties = new Properties();\n"
+"        \n"
+"        String theUser = props.getProperty(user);\n"
+"        String thePassword = props.getProperty(password);\n"
+"        \n"
+"        if (theUser != null)\n"
+"        {\n"
+"                dbProperties.put(TransactionalDriver.userName, theUser);\n"
+"                dbProperties.put(TransactionalDriver.password, "
+"thePassword);\n"
+"        \n"
+"                String dc = props.getProperty(dynamicClass);\n"
+"        \n"
+"                if (dc != null)\n"
+"                        dbProperties.put(TransactionalDriver.dynamicClass, "
+"dc);\n"
+"        \n"
+"                return new JDBC2RecoveryConnection(url, dbProperties);\n"
+"        }\n"
+"        else\n"
+"                return null;\n"
+"}\n"
+"        \n"
+"private final JDBC2RecoveryConnection getJNDIConnection ()\n"
+"        throws SQLException\n"
+"{\n"
+"        String number = new String(\"\" + connectionIndex);\n"
+"        String url = new String(dbTag + jndiTag + number + urlTag);\n"
+"        String password = new String(dbTag + jndiTag + number + "
+"passwordTag);\n"
+"        String user = new String(dbTag + jndiTag + number + userTag);\n"
+"        \n"
+"        Properties dbProperties = new Properties();\n"
+"        \n"
+"        String theUser = props.getProperty(user);\n"
+"        String thePassword = props.getProperty(password);\n"
+"        \n"
+"        if (theUser != null)\n"
+"        {\n"
+"                dbProperties.put(TransactionalDriver.userName, theUser);\n"
+"                dbProperties.put(TransactionalDriver.password, "
+"thePassword);\n"
+"        \n"
+"                return new JDBC2RecoveryConnection(url, dbProperties);\n"
+"        }\n"
+"        else\n"
+"                return null;\n"
+"}\n"
+"        \n"
+"private int numberOfConnections;\n"
+"private int connectionIndex;\n"
+"private Properties props;\n"
+"private static final String dbTag = \"DB_\";\n"
+"private static final String urlTag = \"_DatabaseURL\";\n"
+"private static final String passwordTag = \"_DatabasePassword\";\n"
+"private static final String userTag = \"_DatabaseUser\";\n"
+"private static final String dynamicClassTag = \"_DatabaseDynamicClass\";\n"
+"private static final String jndiTag = \"JNDI_\";\n"
+"        \n"
+"/*\n"
+" * Example:\n"
+" * \n"
+" * DB2_DatabaseURL=jdbc\\:arjuna\\:sequelink\\://qa02\\:20001\n"
+" * DB2_DatabaseUser=tester2 DB2_DatabasePassword=tester\n"
+" * DB2_DatabaseDynamicClass=com.arjuna.ats.internal.jdbc.drivers."
+"sequelink_5_1\n"
+" * \n"
+" * DB_JNDI_DatabaseURL=jdbc\\:arjuna\\:jndi DB_JNDI_DatabaseUser=tester1\n"
+" * DB_JNDI_DatabasePassword=tester DB_JNDI_DatabaseName=empay\n"
+" * DB_JNDI_Host=qa02 DB_JNDI_Port=20000\n"
+" */\n"
+"\n"
+" private static final char BREAKCHARACTER = &#39;;&#39;; // delimiter for "
+"parameters"
+msgstr ""
+
+#. Tag: para
+#: Examples.xml:59
+#, no-c-format
+msgid ""
+"The class <classname>com.arjuna.ats.internal.jdbc.recovery."
+"JDBC2RecoveryConnection</classname> may be used to create a new connection "
+"to the database using the same parameters that were used to create the "
+"initial connection."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/JBoss_Transactions_JTA_Programmers_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/JDBC_and_Transactions.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/JDBC_and_Transactions.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/JDBC_and_Transactions.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,751 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:6
+#, no-c-format
+msgid "JDBC and Transactions"
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:8
+#, no-c-format
+msgid "Using the transactional JDBC driver"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:9
+#, no-c-format
+msgid ""
+"JBossJTA supports the construction of both local and distributed "
+"transactional applications which access databases using the JDBC 2.0 APIs. "
+"JDBC 2.0 supports two-phase commit of transactions, and is similar to the XA "
+"X/Open standard. The JDBC 2.0 support is found in the com.arjuna.ats.jdbc "
+"package."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:12
+#, no-c-format
+msgid ""
+"The JDBC 2.0 support has been tested with the following drivers and "
+"databases:"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:17
+#, no-c-format
+msgid "Oracle 8.1.6/8.1.7, 9i and 10g thin driver."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:22
+#, no-c-format
+msgid "MS SQL Server 2000 native driver."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:27
+#, no-c-format
+msgid "In the past we have qualified against:"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:32
+#, no-c-format
+msgid "Merant’s Sequelink 5.1 with Oracle 8.1.6"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:37
+#, no-c-format
+msgid "Cloudscape 3.6 with Cloudscape’s own database."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:42
+#, no-c-format
+msgid ""
+"However, these drivers and databases are no longer part of our supported "
+"platforms. They may continue to work with JBossTS, but we cannot make that "
+"guarantee."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:46
+#, no-c-format
+msgid "Managing transactions"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:47
+#, no-c-format
+msgid ""
+"JBossJTA must be able to associate work performed on a JDBC connection with "
+"a specific transaction. Therefore, implicit transaction propagation and/or "
+"indirect transaction management must be used by applications, i.e., for each "
+"JDBC connection it must be possible for JBossJTA to determine the invoking "
+"thread’s current transaction context."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:52
+#, no-c-format
+msgid "Restrictions"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:53
+#, no-c-format
+msgid ""
+"The following restrictions are imposed by limitations in the JDBC "
+"specifications and by JBossJTA to ensure that transactional interactions "
+"with JDBC databases can be correctly managed:"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:57
+#, no-c-format
+msgid ""
+"Nested transactions are not supported by JDBC 2.0. If an attempt is made to "
+"use a JDBC connection within a subtransaction, JBossJTA will throw a "
+"suitable exception and no work will be allowed on that connection. However, "
+"if you wish to have nested transactions, then you can set the <property>com."
+"arjuna.ats.jta.supportSubtransactions</property> property to YES."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:63
+#, no-c-format
+msgid "Transactional drivers"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:64
+#, no-c-format
+msgid ""
+"The JBossJTA approach to incorporating JDBC connections within transactions "
+"is to provide transactional JDBC drivers through which all interactions "
+"occur. These drivers intercept all invocations and ensure that they are "
+"registered with, and driven by, appropriate transactions. There is a single "
+"type of transactional driver through which any JDBC driver can be driven; "
+"obviously if the database is not transactional then ACID properties cannot "
+"be guaranteed. This driver is <code>com.arjuna.ats.jdbc.TransactionalDriver</"
+"code>, which implements the <interfacename>java.sql.Driver</interfacename> "
+"interface."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:68
+#, no-c-format
+msgid "Loading drivers"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:69
+#, no-c-format
+msgid ""
+"The driver may be directly instantiated and used within an application. For "
+"example:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:73
+#, no-c-format
+msgid "TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:74
+#, no-c-format
+msgid ""
+"They can be registered with the JDBC driver manager (<code>java.sql."
+"DriverManager</code>) by adding them to the Java system properties. The "
+"<property>jdbc.drivers</property> property contains a list of driver class "
+"names, separated by colons, that are loaded by the JDBC driver manager when "
+"it is initialized."
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:77
+#, no-c-format
+msgid ""
+"/*\n"
+" * Register the driver via the system properties variable\n"
+" * \"jdbc.drivers\"\n"
+" */ \n"
+"        \n"
+"Properties p = System.getProperties(); \n"
+"        \n"
+"switch (dbType)\n"
+"{\n"
+"case MYSQL:\n"
+"        p.put(\"jdbc.drivers\", \"org.gjt.mm.mysql.Driver\"); \n"
+"        break;\n"
+"case CLOUDSCAPE:\n"
+"        p.put(\"jdbc.drivers\", \"COM.cloudscape.core.JDBCDriver\"); \n"
+"        break;\n"
+"}\n"
+"        \n"
+"System.setProperties(p);"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:78
+#, no-c-format
+msgid ""
+"Alternatively, the <methodname>Class.forName()</methodname> method may be "
+"used to load the driver or drivers:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:81
+#, no-c-format
+msgid "Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:82
+#, no-c-format
+msgid ""
+"Calling <methodname>Class.forName()</methodname> will automatically register "
+"the driver with the JDBC driver manager. It is also possible to explicitly "
+"create an instance of the JDBC driver:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:85
+#, no-c-format
+msgid ""
+"sun.jdbc.odbc.JdbcOdbcDriver drv = new sun.jdbc.odbc.JdbcOdbcDriver();\n"
+"        \n"
+"DriverManager.registerDriver(drv);"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:86
+#, no-c-format
+msgid ""
+"When you have loaded a driver, it is available for making a connection with "
+"a DBMS."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:92
+#, no-c-format
+msgid "Connections"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:93
+#, no-c-format
+msgid ""
+"In this section we shall discuss the notion of transactional JDBC "
+"connections, how they are managed within JBossJTA and the implications on "
+"using them within an application."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:97
+#, no-c-format
+msgid "Making the connection"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:98
+#, no-c-format
+msgid ""
+"Because JDBC connectivity in JBossJTA works by simply providing a new JDBC "
+"driver, application code can remain relatively the same to that when not "
+"using transactions. Typically, the application programmer need only start "
+"and terminate transactions."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:103
+#, no-c-format
+msgid "JDBC 2.0"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:104
+#, no-c-format
+msgid ""
+"Before describing the JDBC 2.0 support it is necessary to mention that the "
+"following properties can be set and passed to the JBossJTA driver (they are "
+"all located in the <classname>com.arjuna.ats.jdbc.TransactionalDriver</"
+"classname> class):"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:110
+#, no-c-format
+msgid ""
+"<property>userName</property>: the user name to use when attempting to "
+"connect to the database."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:115
+#, no-c-format
+msgid ""
+"<property>password</property>: the password to use when attempting to "
+"connect to the database."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:120
+#, no-c-format
+msgid ""
+"<property>createDb</property>: if set to true, the driver will attempt to "
+"create the database when it connects. This may not be supported by all JDBC "
+"2.0 implementations."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:125
+#, no-c-format
+msgid ""
+"<property>dynamicClass</property>: this specifies a class to instantiate to "
+"connect to the database, rather than using JNDI."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:131
+#, no-c-format
+msgid "XADataSources"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:132
+#, no-c-format
+msgid ""
+"JDBC 2.0 connections are created from appropriate DataSources. Those "
+"connections which must participate within distributed transactions are "
+"obtained from <code>XADataSources</code>. Therefore, when using a JDBC 2.0 "
+"driver, JBossJTA will use the appropriate DataSource whenever a connection "
+"to the database is made. It will then obtain <code>XAResources</code> and "
+"register them with the transaction via the JTA interfaces. It is these "
+"<code>XAResources</code> which the transaction service will use when the "
+"transaction terminates in order to drive the database to either commit or "
+"rollback the changes made via the JDBC connection."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:136
+#, no-c-format
+msgid ""
+"There are two ways in which the JBossJTA JDBC 2.0 support can obtain "
+"<code>XADataSources</code>. These will be explained in the following "
+"sections. Note, for simplicity we shall assume that the JDBC 2.0 driver is "
+"instantiated directly by the application."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:140
+#, no-c-format
+msgid "Java Naming and Directory Interface (JNDI)"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:141
+#, no-c-format
+msgid ""
+"In order to allow a JDBC driver to use arbitrary DataSources without having "
+"to know specific details about their implementations, DataSources are "
+"typically obtained from JNDI. A specific (XA)DataSource can be created and "
+"registered with an appropriate JNDI implementation, and the application (or "
+"JDBC driver) can later bind to and use it. Since JNDI only allows the "
+"application to see the (XA)DataSource as an instance of the interface (for "
+"example, <property>javax.sql.XADataSource</property>) rather than as an "
+"instance of the implementation class (for example, <property>com.mydb."
+"myXADataSource</property>), the application is not tied at build time to "
+"only use a specific (XA)DataSource implementation."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:145
+#, no-c-format
+msgid ""
+"To get the <classname>TransactionalDriver</classname> class to use a JNDI "
+"registered <code>XADataSource</code> it is first necessary to create the "
+"<code>XADataSource</code> instance and store it in an appropriate JNDI "
+"implementation. Details of how to do this can be found in the JDBC 2.0 "
+"tutorial available at JavaSoft. An example is show below:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:148
+#, no-c-format
+msgid ""
+"XADataSource ds = MyXADataSource();\n"
+"Hashtable env = new Hashtable();\n"
+"String initialCtx = PropertyManager.getProperty(\"Context."
+"INITIAL_CONTEXT_FACTORY\");\n"
+"        \n"
+"env.put(Context.INITIAL_CONTEXT_FACTORY, initialCtx);\n"
+"        \n"
+"initialContext ctx = new InitialContext(env);\n"
+"        \n"
+"ctx.bind(\"jdbc/foo\", ds);"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:149
+#, no-c-format
+msgid ""
+"Where the <property>Context.INITIAL_CONTEXT_FACTORY</property> property is "
+"the JNDI way of specifying the type of JNDI implementation to use."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:152
+#, no-c-format
+msgid ""
+"Then the application must pass an appropriate connection URL to the JDBC 2.0 "
+"driver:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:155
+#, no-c-format
+msgid ""
+"Properties dbProps = new Properties();\n"
+"        \n"
+"dbProps.setProperty(TransactionalDriver.userName, \"user\");\n"
+"dbProps.setProperty(TransactionalDriver.password, \"password\");\n"
+"        \n"
+"TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();\n"
+"Connection connection = arjunaJDBC2Driver.connect(\"jdbc:arjuna:jdbc/foo\", "
+"dbProps);"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:156
+#, no-c-format
+msgid ""
+"The JNDI URL must be pre-pended with jdbc:arjuna: in order for the "
+"<code>ArjunaJDBC2Driver</code> to recognise that the DataSource must "
+"participate within transactions and be driven accordingly."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:160
+#, no-c-format
+msgid "Dynamic class instantiation"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:161
+#, no-c-format
+msgid ""
+"Many JDBC 2.0 implementations provide proprietary implementations of "
+"<interfacename>XADataSources</interfacename> that provide non-standard "
+"extensions to the specification. In order to allow the application to remain "
+"isolated from the actual JDBC 2.0 implementation it is using and yet "
+"continue to be able to use these extensions, JBossJTA hides the details of "
+"these proprietary implementations using dynamic class instantiation. In "
+"addition, the use of JNDI is not required when using this mechanism because "
+"the actual implementation of the <interfacename>XADataSource</interfacename> "
+"will be directly instantiated, albeit in a manner which will not tie an "
+"application or driver to a specific implementation. JBossJTA therefore has "
+"several classes which are for specific JDBC 2.0 implementations, and these "
+"can be selected at runtime by the application setting the "
+"<property>dynamicClass</property> property appropriately:"
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:166
+#, no-c-format
+msgid "Dynamic Class property values for specific databases"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:170
+#, no-c-format
+msgid "Database Type"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:173
+#, no-c-format
+msgid "Property Name"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:180
+#, no-c-format
+msgid "Cloudscape 3.6"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:183
+#, no-c-format
+msgid "com.arjuna.ats.internal.jdbc.drivers.cloudscape_3_6"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:188
+#, no-c-format
+msgid "Sequelink 5.1"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:191
+#, no-c-format
+msgid "com.arjuna.ats.internal.jdbc.drivers.sequelink_5_1"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:196
+#, no-c-format
+msgid "Oracle 8.1.6"
+msgstr ""
+
+#. Tag: entry
+#: JDBC_and_Transactions.xml:199
+#, no-c-format
+msgid "com.arjuna.ats.internal.jdbc.drivers.oracle_8_1_6"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:207
+#, no-c-format
+msgid ""
+"As mentioned earlier, JBossTS no longer supports Cloudscape or Sequelink as "
+"part of the qualified drivers. Furthermore, we recommend using JNDI to "
+"obtain JDBC classes rather than the direct method described here."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:211
+#, no-c-format
+msgid ""
+"The application code must specify which dynamic class the "
+"<code>TransactionalDriver</code> should instantiate when setting up the "
+"connection:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:214
+#, no-c-format
+msgid ""
+"Properties dbProps = new Properties();\n"
+"        \n"
+"dbProps.setProperty(TransactionalDriver.userName, \"user\");\n"
+"dbProps.setProperty(TransactionalDriver.password, \"password\");\n"
+"dbProps.setProperty(TransactionalDriver.dynamicClass,\n"
+"\"com.arjuna.ats.internal.jdbc.drivers.sequelink_5_0\");\n"
+"        \n"
+"TransactionalDriver arjunaJDBC2Driver = new TransactionalDriver();\n"
+"Connection connection = arjunaJDBC2Driver.connect(\"jdbc:arjuna:sequelink://"
+"host:port;databaseName=foo\",dbProperties);"
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:216
+#, no-c-format
+msgid "Using the connection"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:217
+#, no-c-format
+msgid ""
+"Once the connection has been established (for example, using the "
+"<methodname>java.sql.DriverManager.getConnection</methodname> method), all "
+"operations on the connection will be monitored by JBossJTA. Note, it is not "
+"necessary to use the transactional connection within transactions. If a "
+"transaction is not present when the connection is used, then operations will "
+"be performed directly on the database."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:222
+#, no-c-format
+msgid "JDBC does not support subtransactions."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:226
+#, no-c-format
+msgid ""
+"Transaction timeouts can be used to automatically terminate transactions "
+"should the connection not be terminated within an appropriate period."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:229
+#, no-c-format
+msgid ""
+"JBossJTA connections can be used within multiple different transactions "
+"simultaneously, for instance, different threads, with different notions of "
+"the current transaction, may use the same JDBC connection. JBossJTA does "
+"connection pooling for each transaction within the JDBC connection. So, "
+"although multiple threads may use the same instance of the JDBC connection, "
+"internally this may be using a different connection instance per "
+"transaction. With the exception of close, all operations performed on the "
+"connection at the application level will only be performed on this "
+"transaction-specific connection."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:232
+#, no-c-format
+msgid ""
+"JBossJTA will automatically register the JDBC driver connection with the "
+"transaction via an appropriate resource . When the transaction terminates, "
+"this resource will be responsible for either committing or rolling back any "
+"changes made to the underlying database via appropriate calls on the JDBC "
+"driver."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:235
+#, no-c-format
+msgid ""
+"Once created, the driver and any connection can be used in the same way as "
+"any other JDBC driver or connection."
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:238
+#, no-c-format
+msgid ""
+"Statement stmt = conn.createStatement();\n"
+"        \n"
+"try\n"
+"{\n"
+"        stmt.executeUpdate(\"CREATE TABLE test_table (a INTEGER,b INTEGER)"
+"\");\n"
+"}\n"
+"catch (SQLException e)\n"
+"{\n"
+"        // table already exists\n"
+"}\n"
+"        \n"
+"stmt.executeUpdate(\"INSERT INTO test_table (a, b) VALUES (1,2)\");\n"
+"        \n"
+"ResultSet res1 = stmt.executeQuery(\"SELECT * FROM test_table\");"
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:240
+#, no-c-format
+msgid "Connection pooling"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:241
+#, no-c-format
+msgid ""
+"For each user name and password, JBossJTA will maintain a single instance of "
+"each connection for as long as that connection is in use. Subsequent "
+"requests for the same connection will get a reference to the originally "
+"created connection, rather than a new instance. Attempts to close the "
+"connection are allowed, but the connection will only actually be closed when "
+"all users (including transactions) have either finished with the connection, "
+"or issued close calls."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:246
+#, no-c-format
+msgid "Reusing connections"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:247
+#, no-c-format
+msgid ""
+"Some JDBC drivers allow the reuse of a connection for multiple different "
+"transactions once a given transaction has completed. Unfortunately this is "
+"not a common feature, and other drivers require a new connection to be "
+"obtained for each new transaction. By default, the JBossJTA transactional "
+"driver will always obtain a new connection for each new transaction. "
+"However, if an existing connection is available and is currently unused, it "
+"is possible to make JBossJTA reuse this connection. In order to do this, the "
+"reuseconnection=true option must be specified on the JDBC URL. For example:"
+msgstr ""
+
+#. Tag: screen
+#: JDBC_and_Transactions.xml:251
+#, no-c-format
+msgid "jdbc:arjuna:sequelink://host:port;databaseName=foo;reuseconnection=true"
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:253
+#, no-c-format
+msgid "Terminating the transaction"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:254
+#, no-c-format
+msgid ""
+"Whenever a transaction terminates (either explicitly by the application "
+"programmer, or implicitly when any associated transaction timeout expires) "
+"that has a JDBC connection registered with it, JBossJTA will drive the "
+"database (via the JDBC driver) to either commit or roll back any changes "
+"made to it. This happens transparently to the application."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:259
+#, no-c-format
+msgid "AutoCommit"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:260
+#, no-c-format
+msgid ""
+"If <code>AutoCommit</code> of the <code>java.sql.Connection</code> is set to "
+"true for JDBC 1.0 then the execution of every SQL statement is a separate "
+"top-level transaction, and grouping multiple statements to be managed within "
+"a single OTS transaction is not possible. Therefore, JBossJTA will disable "
+"<code>AutoCommit</code> on JDBC 1.0 connections before they can be used. If "
+"auto commit is subsequently set to true by the application, JBossJTA will "
+"raise the <code>java.sql.SQLException</code>."
+msgstr ""
+
+#. Tag: title
+#: JDBC_and_Transactions.xml:265
+#, no-c-format
+msgid "Setting isolation levels"
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:266
+#, no-c-format
+msgid ""
+"When using the JBossJTA JDBC driver, it may be necessary to set the "
+"underlying transaction isolation level on the XA connection. By default, "
+"this is set to <code>TRANSACTION_SERIALIZABLE</code>, but you may want to "
+"set this to something more appropriate for your application. In order to do "
+"this, set the <property>com.arjuna.ats.jdbc.isolationLevel</property> "
+"property to the appropriate isolation level in string form, for example, "
+"<code>TRANSACTION_READ_COMMITTED</code>, or "
+"<code>TRANSACTION_REPEATABLE_READ</code>."
+msgstr ""
+
+#. Tag: para
+#: JDBC_and_Transactions.xml:271
+#, no-c-format
+msgid ""
+"At present this property applies to all XA connections created in the JVM."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Preface.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Preface.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/The_Resource_Manager.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/The_Resource_Manager.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/The_Resource_Manager.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,663 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: The_Resource_Manager.xml:6
+#, no-c-format
+msgid "Test"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:7
+#, no-c-format
+msgid "This is a test paragraph"
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:11
+#, no-c-format
+msgid "The XAResource Interface"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:12
+#, no-c-format
+msgid ""
+"Whereas some transaction specifications and systems define a generic "
+"resource which can be used to register arbitrary resources with a "
+"transaction, the JTA is much more XA specific. The <interfacename>javax."
+"transaction.xa.XAResource</interfacename> interface is a Java mapping of the "
+"<interfacename>XA</interfacename> interface. The <interfacename>XAResource</"
+"interfacename> interface defines the contract between a Resource Manager and "
+"a Transaction Manager in a distributed transaction processing environment. A "
+"resource adapter for a resource manager implements the "
+"<interfacename>XAResource</interfacename> interface to support association "
+"of a top-level transaction to a resource such as a relational database."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:15
+#, no-c-format
+msgid ""
+"The <interfacename>XAResource</interfacename> interface can be supported by "
+"any transactional resource adapter that is intended to be used in an "
+"environment where transactions are controlled by an external transaction "
+"manager, for example, a database management system. An application may "
+"access data through multiple database connections. Each database connection "
+"is associated with an <code>XAResource</code> object that serves as a proxy "
+"object to the underlying resource manager instance. The transaction manager "
+"obtains an <code>XAResource</code> for each resource manager participating "
+"in a top-level transaction. It uses the start method to associate the "
+"transaction with the resource, and it uses the end method to disassociate "
+"the transaction from the resource."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:18
+#, no-c-format
+msgid ""
+"The resource manager is responsible for associating the transaction with all "
+"work performed on its data between the start and end invocations. At "
+"transaction commit time, these transactional resource managers are informed "
+"by the transaction manager to prepare, commit, or rollback the transaction "
+"according to the two-phase commit protocol."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:21
+#, no-c-format
+msgid ""
+"In order to be better integrated with Java, the <interfacename>XAResource</"
+"interfacename> differs from the standard <interfacename>XA</interfacename> "
+"interface in the following ways:"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:26
+#, no-c-format
+msgid ""
+"The resource manager initialization is done implicitly by the resource "
+"adapter when the resource (connection) is acquired. There is no "
+"<code>xa_open</code> equivalent."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:31
+#, no-c-format
+msgid ""
+"<code>Rmid</code> is not passed as an argument. Each <code>Rmid</code> is "
+"represented by a separate <code>XAResource</code> object."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:36
+#, no-c-format
+msgid ""
+"Asynchronous operations are not supported because Java supports multi-"
+"threaded processing and most databases do not support asynchronous "
+"operations."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:41
+#, no-c-format
+msgid ""
+"Error return values that are caused by the transaction manager’s improper "
+"handling of the <code>XAResource</code> object are mapped to Java exceptions "
+"via the <classname>XAException</classname> class."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:46
+#, no-c-format
+msgid ""
+"The DTP concept of <emphasis>Thread of Control</emphasis> maps to all Java "
+"threads that are given access to the <code>XAResource</code> and "
+"<code>Connection</code> objects. For example, it is legal for two different "
+"threads to perform the start and end operations on the same "
+"<code>XAResource</code> object."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:52
+#, no-c-format
+msgid "Extended XAResource control"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:53
+#, no-c-format
+msgid ""
+"By default, whenever an <code>XAResource</code> object is registered with a "
+"JTA compliant transaction service, you have no control over the order in "
+"which it will be invoked during the two-phase commit protocol, with respect "
+"to other <code>XAResource</code> objects. In JBossTS, however, there is "
+"support for controlling the order via the two interfaces <interfacename>com."
+"arjuna.ats.jta.resources.StartXAResource</interfacename> and "
+"<interfacename>com.arjuna.ats.jta.resources.EndXAResource</interfacename>. "
+"By inheriting your <code>XAResource</code> instance from either of these "
+"interfaces, you control whether an instance of your class will be invoked "
+"first or last, respectively."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:58
+#, no-c-format
+msgid ""
+"Only one instance of each interface type may be registered with a specific "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:62
+#, no-c-format
+msgid ""
+"In the TxCore manual we discussed the Last Resource Commit optimization "
+"(LRCO), whereby a single resource that is only one-phase aware (does not "
+"support prepare), can be enlisted with a transaction that is manipulating "
+"two-phase aware participants. This optimization is also supported within the "
+"JTA aspects of JBossTS."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:65
+#, no-c-format
+msgid ""
+"In order to use the LRCO, your <interfacename>XAResource</interfacename> "
+"implementation must extend the <interfacename>com.arjuna.ats.jta.resources."
+"LastResourceCommitOptimisation</interfacename> marker interface (it provides "
+"no methods). When enlisting the resource via Transaction.enlistResource, "
+"JBossTS will ensure that only a single instance of this type of participant "
+"is used within each transaction. Your resource will be driven last in the "
+"commit protocol: no invocation of prepare will occur."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:69
+#, no-c-format
+msgid ""
+"By default an attempt to enlist more than one instance of a "
+"<classname>LastResourceCommitOptimisation</classname> class will fail and "
+"false will be returned from <methodname>Transaction.enlistResource</"
+"methodname>. This behaviour can be overridden by setting the <property>com."
+"arjuna.ats.jta.allowMultipleLastResources</property> to true. However, "
+"before doing so you should read the Section on enlisting multiple one-phase "
+"aware resources."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:73
+#, no-c-format
+msgid ""
+"In order to utilize the LRCO in a distributed environment, it is necessary "
+"to disable interposition support. It is still possible to use implicit "
+"context propagation."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:77
+#, no-c-format
+msgid "Enlisting multiple one-phase aware resources"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:78
+#, no-c-format
+msgid ""
+"As discussed in the Transaction Core documentation, in order to guarantee "
+"consistency (atomicity) of outcome between multiple participants (resources) "
+"within the same transaction, the two-phase commit protocol is used with a "
+"durable transaction log. In the case of possessing a single one-phase aware "
+"resource, it is still possible to achieve an atomic (all of nothing) outcome "
+"across resources by utilizing the Last Resource Commit Optimization, as "
+"explained earlier."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:82
+#, no-c-format
+msgid ""
+"However, there may be situations where multiple one-phase aware resources "
+"are enlisted within the same transaction. For example, a legacy database "
+"running within the same transaction as a legacy JMS implementation. In these "
+"situations it is not possible to achieve atomicity of transaction outcome "
+"across multiple resources because none of them enter the prepare (waiting "
+"for final outcome) state: they commit or rollback immediately when "
+"instructed by the transaction coordinator, without knowledge of other "
+"resource states and without any way of undoing should subsequent resources "
+"make a different choice. This can result in data corruption or heuristic "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:85
+#, no-c-format
+msgid "In these situations we recommend one of the following approaches:"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:90
+#, no-c-format
+msgid ""
+"Wrap the resources in compensating transactions. See the Web Services "
+"transactions guides for further details."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:95
+#, no-c-format
+msgid "Migrate the legacy implementations to two-phase aware equivalents."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:100
+#, no-c-format
+msgid ""
+"In the cases where neither of these options are viable, JBossTS does support "
+"the enlistment of multiple one-phase aware resources within the same "
+"transaction. In order to do this, see the section on the Last Resource "
+"Commit Optimization."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:104
+#, no-c-format
+msgid ""
+"Even when this support is enabled, JBossTS will issue warnings when it "
+"detects that the option has been enabled (\"You have chosen to enable "
+"multiple last resources in the transaction manager. This is transactionally "
+"unsafe and should not be relied upon.”) and when multiple one-phase "
+"resources are enlisted within the transaction (“This is transactionally "
+"unsafe and should not be relied on.”)."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:111
+#, no-c-format
+msgid "Opening a Resource Manager"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:112
+#, no-c-format
+msgid ""
+"The X/Open <interfacename>XA</interfacename> interface requires that the "
+"transaction manager initialize a resource manager (xa_open) prior to any "
+"other xa_ calls. JTA requires initialization of a resource manager to be "
+"embedded within the resource adapter that represents the resource manager. "
+"The transaction manager does not need to know how to initialize a resource "
+"manager; it is only responsible for informing the resource manager about "
+"when to start and end work associated with a transaction and when to "
+"complete the transaction. The resource adapter is responsible for opening "
+"(initializing) the resource manager when the connection to the resource "
+"manager is established."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:118
+#, no-c-format
+msgid "Closing a Resource Manager"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:119
+#, no-c-format
+msgid ""
+"A resource manager is closed by the resource adapter as a result of "
+"destroying the transactional resource. A transaction resource at the "
+"resource adapter level is comprised of two separate objects:"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:124
+#, no-c-format
+msgid ""
+"An <code>XAResource</code> object that allows the transaction manager to "
+"start and end the transaction association with the resource in use and to "
+"coordinate transaction completion process."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:129
+#, no-c-format
+msgid ""
+"A connection object that allows the application to perform operations on the "
+"underlying resource (for example, JDBC operations on an RDBMS)."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:134
+#, no-c-format
+msgid ""
+"Once opened, the resource manager is kept open until the resource is "
+"released (closed) explicitly. When the application invokes the connection’s "
+"close method, the resource adapter invalidates the connection object "
+"reference that was held by the application and notifies the application "
+"server about the close. The transaction manager should invoke the "
+"<methodname>XAResource.end</methodname> method to disassociate the "
+"transaction from that connection."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:137
+#, no-c-format
+msgid ""
+"The close notification allows the application server to perform any "
+"necessary cleanup work and to mark the physical XA connection as free for "
+"reuse, if connection pooling is in place."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:143
+#, no-c-format
+msgid "Threads of control"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:144
+#, no-c-format
+msgid ""
+"The X/Open <interfacename>XA</interfacename> interface specifies that the "
+"transaction association related xa calls must be invoked from the same "
+"thread context. This thread-of-control requirement is not applicable to the "
+"object-oriented component-based application run-time environment, in which "
+"application threads are dispatched dynamically at method invocation time. "
+"Different threads may be using the same connection resource to access the "
+"resource manager if the connection spans multiple method invocation. "
+"Depending on the implementation of the application server, different threads "
+"may be involved with the same <code>XAResource</code> object. The resource "
+"context and the transaction context may be operated independent of thread "
+"context. This means that it is possible for different threads to be invoking "
+"the start and end methods."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:147
+#, no-c-format
+msgid ""
+"If the application server allows multiple threads to use a single "
+"<code>XAResource</code> object and the associated connection to the resource "
+"manager, it is the responsibility of the application server to ensure that "
+"there is only one transaction context associated with the resource at any "
+"point of time. Thus the <interfacename>XAResource</interfacename> interface "
+"requires that the resource managers be able to support the two-phase commit "
+"protocol from any thread context."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:153
+#, no-c-format
+msgid "Transaction association"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:154
+#, no-c-format
+msgid ""
+"Transactions are associated with a transactional resource via the start "
+"method, and disassociated from the resource via the <methodname>end</"
+"methodname> method. The resource adapter is responsible for internally "
+"maintaining an association between the resource connection object and the "
+"<code>XAResource</code> object. At any given time, a connection is "
+"associated with a single transaction, or it is not associated with any "
+"transaction at all. Because JTA does not support nested transactions it is "
+"an error for the start method to be invoked on a connection that is "
+"currently associated with a different transaction."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:157
+#, no-c-format
+msgid ""
+"Interleaving multiple transaction contexts using the same resource may be "
+"done by the transaction manager as long as start and end are invoked "
+"properly for each transaction context switch. Each time the resource is used "
+"with a different transaction, the method end must be invoked for the "
+"previous transaction that was associated with the resource, and start must "
+"be invoked for the current transaction context."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:163
+#, no-c-format
+msgid "Externally controlled connections"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:164
+#, no-c-format
+msgid ""
+"For transactional application whose transaction states are managed by an "
+"application server, its resources must also be managed by the application "
+"server so that transaction association is performed properly. If an "
+"application is associated with a transaction, it is an error for the "
+"application to perform transactional work through the connection without "
+"having the connection’s resource object already associated with the global "
+"transaction. The application server must ensure that the <code>XAResource</"
+"code> object in use is associated with the transaction. This is done by "
+"invoking the <methodname>Transaction.enlistResource</methodname> method."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:167
+#, no-c-format
+msgid ""
+"If a server side transactional application retains its database connection "
+"across multiple client requests, the application server must ensure that "
+"before dispatching a client request to the application thread, the resource "
+"is enlisted with the application’s current transaction context. This implies "
+"that the application server manages the connection resource usage status "
+"across multiple method invocations."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:173
+#, no-c-format
+msgid "Resource sharing"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:174
+#, no-c-format
+msgid ""
+"When the same transactional resource is used to interleave multiple "
+"transactions, it is the responsibility of the application server to ensure "
+"that only one transaction is enlisted with the resource at any given time. "
+"To initiate the transaction commit process, the transaction manager is "
+"allowed to use any of the resource objects connected to the same resource "
+"manager instance. The resource object used for the two-phase commit protocol "
+"does not need to have been involved with the transaction being completed."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:177
+#, no-c-format
+msgid ""
+"The resource adapter must be able to handle multiple threads invoking the "
+"<interfacename>XAResource</interfacename> methods concurrently for "
+"transaction commit processing. For example, with reference to the code "
+"below, suppose we have a transactional resource <code>r1</code>. Global "
+"transaction <code>xid1</code> was started and ended with <code>r1</code>. "
+"Then a different global transaction <code>xid2</code> is associated with "
+"<code>r1</code>. In the meanwhile, the transaction manager may start the two "
+"phase commit process for <code>xid1</code> using <code>r1</code> or any "
+"other transactional resource connected to the same resource manager. The "
+"resource adapter needs to allow the commit process to be executed while the "
+"resource is currently associated with a different global transaction."
+msgstr ""
+
+#. Tag: screen
+#: The_Resource_Manager.xml:180
+#, no-c-format
+msgid ""
+"XAResource xares = r1.getXAResource();\n"
+"        \n"
+"xares.start(xid1); // associate xid1 to the connection\n"
+"        \n"
+"..\n"
+"xares.end(xid1); // disassociate xid1 to the connection\n"
+"..\n"
+"xares.start(xid2); // associate xid2 to the connection\n"
+"..\n"
+"// While the connection is associated with xid2,\n"
+"// the TM starts the commit process for xid1\n"
+"status = xares.prepare(xid1);\n"
+"..\n"
+"xares.commit(xid1, false);"
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:184
+#, no-c-format
+msgid "Local and global transactions"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:185
+#, no-c-format
+msgid ""
+"The resource adapter must support the usage of both local and global "
+"transactions within the same transactional connection. Local transactions "
+"are transactions that are started and coordinated by the resource manager "
+"internally. The <interfacename>XAResource</interfacename> interface is not "
+"used for local transactions. When using the same connection to perform both "
+"local and global transactions, the following rules apply:"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:190
+#, no-c-format
+msgid ""
+"The local transaction must be committed (or rolled back) before starting a "
+"global transaction in the connection."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:195
+#, no-c-format
+msgid ""
+"The global transaction must be disassociated from the connection before any "
+"local transaction is started."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:203
+#, no-c-format
+msgid "Transaction timeouts"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:204
+#, no-c-format
+msgid ""
+"Timeout values can be associated with transactions in order to control their "
+"lifetime. If a transaction has not terminated (committed or rolled back) "
+"before the timeout value elapses, the transaction system will automatically "
+"roll it back. The <interfacename>XAResource</interfacename> interface "
+"supports a operation, which allows the timeout associated with the current "
+"transaction to be propagated to the resource manager and if supported, will "
+"override any default timeout associated with the resource manager. This can "
+"be useful when long running transactions may have lifetimes that would "
+"exceed the default and in which case, if the timeout were not altered, the "
+"resource manager would rollback before the transaction terminated and "
+"subsequently cause the transaction to roll back as well."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:207
+#, no-c-format
+msgid ""
+"If no timeout value is explicitly set for a transaction, or a value of 0 is "
+"specified, then an implementation specific default value may be used. In the "
+"case of JBossTS, how this default value is set depends upon which JTA "
+"implementation you are using."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:212
+#, no-c-format
+msgid ""
+"Local JTA: use the <property>com.arjuna.ats.arjuna.coordinator."
+"defaultTimeout</property> property value and give a timeout in seconds. The "
+"default value is 60 seconds."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:217
+#, no-c-format
+msgid ""
+"JTS: use the <property>com.arjuna.ats.jts.defaultTimeout</property> property "
+"value and give a timeout in seconds. The default value is 0, for instance, "
+"transactions do not timeout."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:222
+#, no-c-format
+msgid ""
+"Unfortunately there are situations where imposing the same timeout as the "
+"transaction on a resource manager may not be appropriate. For example, if "
+"the system administrator wishes to have control over the lifetimes on "
+"resource managers and does not want to (or cannot) allow that control to be "
+"passed to some external entity. At present JBossTS supports an all-or-"
+"nothing approach to whether or not <methodname>setTransactionTimeout</"
+"methodname> is called on <interfacename>XAResource</interfacename> instances."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:225
+#, no-c-format
+msgid ""
+"If the <property>com.arjuna.ats.jta.xaTransactionTimeoutEnabled</property> "
+"property is set to true (the default) then it will be called on all "
+"instances. Alternatively, the <methodname>setXATransactionTimeoutEnabled</"
+"methodname> method of <classname>com.arjuna.ats.jta.common.Configuration</"
+"classname> can be used."
+msgstr ""
+
+#. Tag: title
+#: The_Resource_Manager.xml:231
+#, no-c-format
+msgid "Dynamic Registration"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:232
+#, no-c-format
+msgid ""
+"Dynamic registration is not supported in <interfacename>XAResource</"
+"interfacename> because of the following reasons:"
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:237
+#, no-c-format
+msgid ""
+"In the Java component-based application server environment, connections to "
+"the resource manager are acquired dynamically when the application "
+"explicitly requests a connection. These resources are enlisted with the "
+"transaction manager on a needed basis."
+msgstr ""
+
+#. Tag: para
+#: The_Resource_Manager.xml:242
+#, no-c-format
+msgid ""
+"If a resource manager requires a way to dynamically register its work to the "
+"global transaction, the implementation can be done at the resource adapter "
+"level via a private interface between the resource adapter and the "
+"underlying resource manager."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transaction_Recovery.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transaction_Recovery.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transaction_Recovery.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,330 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Transaction_Recovery.xml:6
+#, no-c-format
+msgid "Transaction Recovery"
+msgstr ""
+
+#. Tag: title
+#: Transaction_Recovery.xml:10
+#, no-c-format
+msgid "Failure recovery"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:11
+#, no-c-format
+msgid ""
+"During recovery, the Transaction Manager needs to be able to communicate to "
+"all resource managers that are in use by the applications in the system. For "
+"each resource manager, the Transaction Manager uses the "
+"<methodname>XAResource.recover</methodname> method to retrieve the list of "
+"transactions that are currently in a prepared or heuristically completed "
+"state. Typically, the system administrator configures all transactional "
+"resource factories that are used by the applications deployed on the system. "
+"An example of such a resource factory is the JDBC <code>XADataSource</code> "
+"object, which is a factory for the JDBC <code>XAConnection</code> objects."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:14
+#, no-c-format
+msgid ""
+"Because <code>XAResource</code> objects are not persistent across system "
+"failures, the Transaction Manager needs to have some way to acquire the "
+"<code>XAResource</code> objects that represent the resource managers which "
+"might have participated in the transactions prior to the system failure. For "
+"example, a Transaction Manager might, through the use of JNDI lookup "
+"mechanism, acquire a connection from each of the transactional resource "
+"factories, and then obtain the corresponding <code>XAResource</code> object "
+"for each connection. The Transaction Manager then invokes the "
+"<methodname>XAResource.recover</methodname> method to ask each resource "
+"manager to return the transactions that are currently in a prepared or "
+"heuristically completed state."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:18
+#, no-c-format
+msgid ""
+"When running XA recovery it is necessary to tell JBossTS which types of Xid "
+"it can recover. Each Xid that JBossTS creates has a unique node identifier "
+"encoded within it and JBossTS will only recover transactions and states that "
+"match a specified node identifier. The node identifier to use should be "
+"provided to JBossTS via a property that starts with the name <property>com."
+"arjuna.ats.jta.xaRecoveryNode</property>; multiple values may be provided. A "
+"value of ‘*’ will force JBossTS to recover (and possibly rollback) all "
+"transactions irrespective of their node identifier and should be used with "
+"caution."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:22
+#, no-c-format
+msgid ""
+"If using the JBossJTA JDBC 2.0 driver, then JBossJTA will take care of all "
+"<interfacename>XAResource</interfacename> crash recovery automatically. "
+"Otherwise one of the following recovery mechanisms will be used:"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:27
+#, no-c-format
+msgid ""
+"If the <code>XAResource</code> is serializable, then the serialized form "
+"will be saved during transaction commitment, and used during recovery. It is "
+"assumed that the recreated <code>XAResource</code> is valid and can be used "
+"to drive recovery on the associated database."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:32
+#, no-c-format
+msgid ""
+"The <interfacename>com.arjuna.ats.jta.recovery.XAResourceRecovery</"
+"interfacename>, <interfacename>com.arjuna.ats.jta.recovery."
+"XARecoveryResourceManager</interfacename> and <interfacename>com.arjuna.ats."
+"jta.recovery.XARecoveryResource</interfacename> interfaces are used. These "
+"are documented in the JDBC chapters on failure recovery."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:38
+#, no-c-format
+msgid ""
+"In JBossTS 3.3 the interface <interfacename>XAConnectionRecovery</"
+"interfacename> was deprecated in favor of <interfacename>XAResourceRecovery</"
+"interfacename>. Users are encouraged to move to his new interface."
+msgstr ""
+
+#. Tag: title
+#: Transaction_Recovery.xml:45
+#, no-c-format
+msgid "Recovering XAConnections"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:46
+#, no-c-format
+msgid ""
+"When recovering from failures, JBossJTA requires the ability to reconnect to "
+"databases that were in use prior to the failures in order to resolve any "
+"outstanding transactions. Most connection information will be saved by the "
+"transaction service during its normal execution, and can be used during "
+"recovery to recreate the connection. However, it is possible that not all "
+"such information will have been saved prior to a failure (for example, a "
+"failure occurs before such information can be saved, but after the database "
+"connection is used). In order to recreate those connections it is necessary "
+"to provide implementations of the following JBossJTA interface "
+"<interfacename>com.arjuna.ats.jta.recovery.XAResourceRecovery</"
+"interfacename>, one for each database that may be used by an application."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:50
+#, no-c-format
+msgid ""
+"If using the transactional JDBC 2.0 driver provided with JBossJTA, then no "
+"additional work is necessary in order to ensure that recovery occurs."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:54
+#, no-c-format
+msgid ""
+"To inform the recovery system about each of the <code>XAResourceRecovery</"
+"code> instances, it is necessary to specify their class names through "
+"property variables. Any property variable found in the properties file, or "
+"registered at runtime, which starts with the name <property>com.arjuna.ats."
+"jta.recovery.XAResourceRecovery</property> will be assumed to represent one "
+"of these instances, and its value should be the class name. For example:"
+msgstr ""
+
+#. Tag: screen
+#: Transaction_Recovery.xml:57
+#, no-c-format
+msgid ""
+"com.arjuna.ats.jta.recovery.XAResourceRecoveryOracle=com.foo.barRecovery"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:58
+#, no-c-format
+msgid ""
+"Additional information that will be passed to the instance when it is "
+"created may be specified after a semicolon:"
+msgstr ""
+
+#. Tag: screen
+#: Transaction_Recovery.xml:61
+#, no-c-format
+msgid ""
+"com.arjuna.ats.jta.recovery.XAResourceRecoveryOracle=com.foo.barRecovery;"
+"myData=hello"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:63
+#, no-c-format
+msgid "These properties need to go into the JTA section of the property file."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:67
+#, no-c-format
+msgid "Any errors will be reported during recovery."
+msgstr ""
+
+#. Tag: screen
+#: Transaction_Recovery.xml:70
+#, no-c-format
+msgid ""
+"public interface XAResourceRecovery\n"
+"{\n"
+"        public XAResource getXAResource () throws SQLException;\n"
+"        \n"
+"        public boolean initialise (String p);\n"
+"        \n"
+"        public boolean hasMoreResources ();\n"
+"};"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:71
+#, no-c-format
+msgid "Each method should return the following information:"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:76
+#, no-c-format
+msgid ""
+"<methodname>initialise</methodname>: once the instance has been created, any "
+"additional information which occurred on the property value (anything found "
+"after the first semi-colon) will be passed to the object. The object can "
+"then use this information in an implementation specific manner to initialise "
+"itself, for example."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:81
+#, no-c-format
+msgid ""
+"<methodname>hasMoreResources</methodname>: each <code>XAResourceRecovery</"
+"code> implementation may provide multiple <code>XAResource</code> instances. "
+"Before any call to <methodname>getXAResource</methodname> is made, "
+"<methodname>hasMoreResources</methodname> is called to determine whether "
+"there are any further connections to be obtained. If this returns false, "
+"<methodname>getXAResource</methodname> will not be called again during this "
+"recovery sweep and the instance will not be used further until the next "
+"recovery scan."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:86
+#, no-c-format
+msgid ""
+"<methodname>getXAResource</methodname>: returns an instance of the "
+"<code>XAResource</code> object. How this is created (and how the parameters "
+"to its constructors are obtained) is up to the <code>XAResourceRecovery</"
+"code> implementation. The parameters to the constructors of this class "
+"should be similar to those used when creating the initial driver or data "
+"source, and should obviously be sufficient to create new <code>XAResources</"
+"code> that can be used to drive recovery."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:92
+#, no-c-format
+msgid ""
+"If you want your <code>XAResourceRecovery</code> instance to be called "
+"during each sweep of the recovery manager then you should ensure that once "
+"<methodname>hasMoreResources</methodname> returns false to indicate the end "
+"of work for the current scan it then returns true for the next recovery scan."
+msgstr ""
+
+#. Tag: title
+#: Transaction_Recovery.xml:99
+#, no-c-format
+msgid "Shipped XAResourceRecovery implementations"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:100
+#, no-c-format
+msgid ""
+"Recovery of <interfacename>XA</interfacename> datasources can sometimes be "
+"implementation dependant, requiring developers to provide their own "
+"<interfacename>XAResourceRecovery</interfacename> instances. However, "
+"JBossTS ships with several out-of-the-box implementations that may be useful."
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:105
+#, no-c-format
+msgid ""
+"<interfacename>com.arjuna.ats.internal.jdbc.recovery.OracleXARecovery</"
+"interfacename>: this expects an XML property file to be specified upon "
+"creation and from which it will read the database URL, username and "
+"password. For example:"
+msgstr ""
+
+#. Tag: screen
+#: Transaction_Recovery.xml:108
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"        \n"
+"&lt;transaction-service&gt;\n"
+"        &lt;properties name=\"jdbc\" type=\"system\"&gt;\n"
+"                &lt;property name=\"DatabaseURL\" value=\"jdbc:oracle:thin:"
+"@hostname:1521:sid\"/&gt;\n"
+"                &lt;property name=\"UserName\"    value=\"username\"/&gt;\n"
+"                &lt;property name=\"Password\"    value=\"password\"/&gt;\n"
+"        &lt;/properties&gt;\n"
+"&lt;/transaction-service&gt;"
+msgstr ""
+
+#. Tag: para
+#: Transaction_Recovery.xml:111
+#, no-c-format
+msgid ""
+"<interfacename>com.arjuna.ats.internal.jdbc.recovery.JDBCXARecovery</"
+"interfacename>: this recovery implementation should work on any datasource "
+"that is exposed via JNDI. It expects an XML property file to be specified "
+"upon creation and from which it will read the database JNDI name, username "
+"and password. For example:"
+msgstr ""
+
+#. Tag: screen
+#: Transaction_Recovery.xml:114
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"        \n"
+"&lt;transaction-service&gt;\n"
+"        &lt;properties name=\"jdbc\" type=\"system\"&gt;\n"
+"                &lt;property name=\"DatabaseJNDIName\" value=\"java:ExampleDS"
+"\"/&gt;\n"
+"                &lt;property name=\"UserName\"         value=\"username\"/"
+"&gt;\n"
+"                &lt;property name=\"Password\"         value=\"password\"/"
+"&gt;\n"
+"        &lt;/properties&gt;\n"
+"&lt;/transaction-service&gt;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transactions.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transactions.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Transactions.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,473 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Transactions.xml:6
+#, no-c-format
+msgid "Transactions"
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:8
+#, no-c-format
+msgid "The API"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:9
+#, no-c-format
+msgid ""
+"The Java Transaction API consists of three elements: a high-level "
+"application transaction demarcation interface, a high-level transaction "
+"manager interface intended for application server, and a standard Java "
+"mapping of the X/Open XA protocol intended for transactional resource "
+"manager. All of the JTA classes and interfaces occur within the "
+"<package>javax.transaction</package> package, and the corresponding JBossJTA "
+"implementations within the <package>com.arjuna.ats.jta</package> package."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:13
+#, no-c-format
+msgid ""
+"Each Xid that JBossTS creates must have a unique node identifier encoded "
+"within it and JBossTS will only recover transactions and states that match a "
+"specified node identifier. The node identifier to use should be provided to "
+"JBossTS via the <property>com.arjuna.ats.arjuna.xa.nodeIdentifier</property> "
+"property. You must make sure this value is unique across your JBossTS "
+"instances. If you do not provide a value, then JBossTS will fabricate one "
+"and report the value via the logging infrastructure. The contents of this "
+"should be alphanumeric."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:18
+#, no-c-format
+msgid "UserTransaction"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:19
+#, no-c-format
+msgid ""
+"The <interfacename>UserTransaction</interfacename> interface provides "
+"applications with the ability to control transaction boundaries. It has "
+"methods for beginning, committing, and rolling back top-level transactions: "
+"nested transactions are not supported, and begin throws the "
+"<code>NotSupportedException</code> when the calling thread is already "
+"associated with a transaction. <interfacename>UserTransaction</"
+"interfacename> automatically associates newly created transactions with the "
+"invoking thread."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:24
+#, no-c-format
+msgid ""
+"In JBossJTA, UserTransactions can be obtained from the static "
+"<methodname>com.arjuna.ats.jta.UserTransaction.userTransaction()</"
+"methodname> method."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:28
+#, no-c-format
+msgid ""
+"In order to select the local JTA implementation it is necessary to perform "
+"the following steps:"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:33
+#, no-c-format
+msgid ""
+"make sure the property <property>com.arjuna.ats.jta.jtaTMImplementation</"
+"property> is set to <property>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.TransactionManagerImple</property>."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:38
+#, no-c-format
+msgid ""
+"1.make sure the property <property>com.arjuna.ats.jta.jtaUTImplementation</"
+"property> is set to <property>com.arjuna.ats.internal.jta.transaction."
+"arjunacore.UserTransactionImple</property>."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:44
+#, no-c-format
+msgid "TransactionManager"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:45
+#, no-c-format
+msgid ""
+"The <interfacename>TransactionManager</interfacename> interface allows the "
+"application server to control transaction boundaries on behalf of the "
+"application being managed."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:50
+#, no-c-format
+msgid ""
+"In JBossJTA, transaction manager implementations can be obtained from the "
+"static <methodname>com.arjuna.ats.jta.TransactionManager.transactionManager</"
+"methodname> method."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:54
+#, no-c-format
+msgid ""
+"The Transaction Manager maintains the transaction context association with "
+"threads as part of its internal data structure. A thread’s transaction "
+"context is either null or it refers to a specific global transaction. "
+"Multiple threads may be associated with the same global transaction. As "
+"noted above, nested transactions are not supported."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:57
+#, no-c-format
+msgid ""
+"Each transaction context is encapsulated by a Transaction object, which can "
+"be used to perform operations which are specific to the target transaction, "
+"regardless of the calling thread’s transaction context."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:60
+#, no-c-format
+msgid ""
+"The <methodname>begin</methodname> method of "
+"<interfacename>TransactionManager</interfacename> starts a new top-level "
+"transaction and associates the transaction context with the calling thread. "
+"If the calling thread is already associated with a transaction then it "
+"throws the <code>NotSupportedException</code>."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:63
+#, no-c-format
+msgid ""
+"The <methodname>getTransaction</methodname> method returns the Transaction "
+"object that represents the transaction context currently associated with the "
+"calling thread. This object can be used to perform various operations on the "
+"target transaction, described later."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:66
+#, no-c-format
+msgid ""
+"The commit method is used to complete the transaction currently associated "
+"with the calling thread. After it returns, the calling thread is associated "
+"with no transaction. If commit is called when the thread is not associated "
+"with any transaction context, the TM throws an exception. In some "
+"implementation, the commit operation is restricted to the transaction "
+"originator only. If the calling thread is not allowed to commit the "
+"transaction, the TM throws an exception. JBossJTA does not currently impose "
+"any restriction on the ability of threads to terminate transactions."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:69
+#, no-c-format
+msgid ""
+"The <methodname>rollback</methodname> method is used to rollback the "
+"transaction associated with the current thread. After the "
+"<methodname>rollback</methodname> method completes, the thread is associated "
+"with no transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:73
+#, no-c-format
+msgid ""
+"In a multi-threaded environment it is possible that multiple threads are "
+"active within the same transaction. If checked transaction semantics have "
+"been disabled, or the transaction times out, then it is possible for a "
+"transaction to be terminated by a thread other than the one that created it. "
+"In this case, it is often important that this information is communicated to "
+"the creator. JBossTS does this during commit or rollback by throwing "
+"<code>IllegalStateException</code>."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:78
+#, no-c-format
+msgid "Suspending and resuming a transaction"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:79
+#, no-c-format
+msgid ""
+"The JTA supports the concept of a thread temporarily suspending and resuming "
+"transactions to enable it to perform non-transactional work. The suspend "
+"method is called to temporarily suspend the current transaction that is "
+"associated with the calling thread, i.e., so that the thread is no longer "
+"operating within its scope. If the thread is not associated with any "
+"transaction, a null object reference is returned; otherwise, a valid "
+"<code>Transaction</code> object is returned. The <code>Transaction</code> "
+"object can later be passed to the resume method to reinstate the transaction "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:83
+#, no-c-format
+msgid ""
+"The <methodname>resume</methodname> method associates the specified "
+"transaction context with the calling thread. If the transaction specified is "
+"a valid transaction, the transaction context is associated with the calling "
+"thread; otherwise, the thread is associated with no transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:87
+#, no-c-format
+msgid ""
+"If <methodname>resume</methodname> is invoked when the calling thread is "
+"already associated with another transaction, the Transaction Manager throws "
+"the <code>IllegalStateException</code> exception."
+msgstr ""
+
+#. Tag: screen
+#: Transactions.xml:91
+#, no-c-format
+msgid ""
+"Transaction tobj = TransactionManager.suspend();\n"
+"        ..\n"
+"TransactionManager.resume(tobj);"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:93
+#, no-c-format
+msgid ""
+"Some Transaction Manager implementations allow a suspended transaction to be "
+"resumed by a different thread. This feature is not required by JTA, but "
+"JBossJTA does support this."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:97
+#, no-c-format
+msgid ""
+"When a transaction is suspended the application server must ensure that the "
+"resources in use by the application are no longer registered with the "
+"suspended transaction. When a resource is de-listed this triggers the "
+"Transaction Manager to inform the resource manager to disassociate the "
+"transaction from the specified resource object. When the application’s "
+"transaction context is resumed, the application server must ensure that the "
+"resources in use by the application are again enlisted with the transaction. "
+"Enlisting a resource as a result of resuming a transaction triggers the "
+"Transaction Manager to inform the resource manager to re-associate the "
+"resource object with the resumed transaction."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:101
+#, no-c-format
+msgid "The Transaction interface"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:102
+#, no-c-format
+msgid ""
+"The <interfacename>Transaction</interfacename> interface allows operations "
+"to be performed on the transaction associated with the target object. Every "
+"top-level transaction is associated with one <code>Transaction</code> object "
+"when the transaction is created. The <code>Transaction</code> object can be "
+"used to:"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:108
+#, no-c-format
+msgid "Enlist the transactional resources in use by the application."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:113
+#, no-c-format
+msgid "Register for transaction synchronization call backs."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:118
+#, no-c-format
+msgid "Commit or rollback the transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:123
+#, no-c-format
+msgid "Obtain the status of the transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:128
+#, no-c-format
+msgid ""
+"The <methodname>commit</methodname> and <methodname>rollback</methodname> "
+"methods allow the target object to be committed or rolled back. The calling "
+"thread is not required to have the same transaction associated with the "
+"thread. If the calling thread is not allowed to commit the transaction, the "
+"transaction manager throws an exception. At present JBossJTA does not impose "
+"restrictions on threads terminating transactions."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:132
+#, no-c-format
+msgid "Resource enlistment"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:133
+#, no-c-format
+msgid ""
+"Transactional resources such as database connections are typically managed "
+"by the application server in conjunction with some resource adapter and "
+"optionally with connection pooling optimization. In order for an external "
+"transaction manager to co-ordinate transactional work performed by the "
+"resource managers, the application server must enlist and de-list the "
+"resources used in the transaction. These resources (participants) are "
+"enlisted with the transaction so that they can be informed when the "
+"transaction terminates, for example, are driven through the two-phase commit "
+"protocol."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:137
+#, no-c-format
+msgid ""
+"As stated previously, the JTA is much more closely integrated with the XA "
+"concept of resources than the arbitrary objects. For each resource in-use by "
+"the application, the application server invokes the "
+"<methodname>enlistResource</methodname> method with an <code>XAResource</"
+"code> object which identifies the resource in use. See for details on how "
+"the implementation of the <code>XAResource</code> can affect recovery in the "
+"event of a failure."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:140
+#, no-c-format
+msgid ""
+"The enlistment request results in the transaction manager informing the "
+"resource manager to start associating the transaction with the work "
+"performed through the corresponding resource. The transaction manager is "
+"responsible for passing the appropriate flag in its <methodname>XAResource."
+"start</methodname> method call to the resource manager."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:143
+#, no-c-format
+msgid ""
+"The <methodname>delistResource</methodname> method is used to disassociate "
+"the specified resource from the transaction context in the target object. "
+"The application server invokes the method with the two parameters: the "
+"<code>XAResource</code> object that represents the resource, and a flag to "
+"indicate whether the operation is due to the transaction being suspended "
+"(TMSUSPEND), a portion of the work has failed (TMFAIL), or a normal resource "
+"release by the application (TMSUCCESS)."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:146
+#, no-c-format
+msgid ""
+"The de-list request results in the transaction manager informing the "
+"resource manager to end the association of the transaction with the target "
+"<code>XAResource</code>. The flag value allows the application server to "
+"indicate whether it intends to come back to the same resource whereby the "
+"resource states must be kept intact. The transaction manager passes the "
+"appropriate flag value in its <methodname>XAResource.end</methodname> method "
+"call to the underlying resource manager."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:150
+#, no-c-format
+msgid "Transaction synchronization"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:151
+#, no-c-format
+msgid ""
+"Transaction synchronization allows the application server to be notified "
+"before and after the transaction completes. For each transaction started, "
+"the application server may optionally register a Synchronization call back "
+"object to be invoked by the transaction manager:"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:157
+#, no-c-format
+msgid ""
+"The <methodname>beforeCompletion</methodname> method is called prior to the "
+"start of the two-phase transaction complete process. This call is executed "
+"in the same transaction context of the caller who initiates the "
+"<methodname>TransactionManager.commit</methodname> or the call is executed "
+"with no transaction context if <methodname>Transaction.commit</methodname> "
+"is used."
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:162
+#, no-c-format
+msgid ""
+"The <methodname>afterCompletion</methodname> method is called after the "
+"transaction has completed. The status of the transaction is supplied in the "
+"parameter. This method is executed without a transaction context."
+msgstr ""
+
+#. Tag: title
+#: Transactions.xml:168
+#, no-c-format
+msgid "Transaction equality"
+msgstr ""
+
+#. Tag: para
+#: Transactions.xml:169
+#, no-c-format
+msgid ""
+"The transaction manager implements the Transaction object’s equals method to "
+"allow comparison between the target object and another Transaction object. "
+"The equals method should return true if the target object and the parameter "
+"object both refer to the same global transaction."
+msgstr ""
+
+#. Tag: screen
+#: Transactions.xml:173
+#, no-c-format
+msgid ""
+"Transaction txObj = TransactionManager.getTransaction();\n"
+"Transaction someOtherTxObj = ..\n"
+"        ..\n"
+"        \n"
+"boolean isSame = txObj.equals(someOtherTxObj);"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Using_JBossJTA_in_Application_Servers.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Using_JBossJTA_in_Application_Servers.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_JTA_Programmers_Guide/pot/Using_JBossJTA_in_Application_Servers.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,209 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:35+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Using_JBossJTA_in_Application_Servers.xml:6
+#, no-c-format
+msgid "Using JBossJTA in Application Servers"
+msgstr ""
+
+#. Tag: title
+#: Using_JBossJTA_in_Application_Servers.xml:8
+#, no-c-format
+msgid "JBoss Application Server"
+msgstr ""
+
+#. Tag: title
+#: Using_JBossJTA_in_Application_Servers.xml:10
+#, no-c-format
+msgid "Service Configuration"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:11
+#, no-c-format
+msgid ""
+"The JBoss Transaction Service is configured primarily via the XML files "
+"stored in the etc directory, but when run as a JBOSS service there are a "
+"number of configurable attributes available. They are as follows:"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:17
+#, no-c-format
+msgid ""
+"TransactionTimeout – The default transaction timeout to be used for new "
+"transactions. Specified as an integer in seconds."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:22
+#, no-c-format
+msgid ""
+"StatisticsEnabled – This determines whether or not the transaction service "
+"should gather statistical information. This information can then be viewed "
+"using the PerformanceStatistics MBean. Specified as a Boolean. The default "
+"is to not gather this information."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:27
+#, no-c-format
+msgid ""
+"PropagateFullContext – This determines whether a full transactional context "
+"is propagated by context importer/exporter. If set to false only the current "
+"transaction context is propagated. If set to true the full transaction "
+"context (including parent transactions) is propagated."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:32
+#, no-c-format
+msgid ""
+"These attributes are specified as MBean attributes in the jboss-service.xml "
+"file located in the server/all/conf directory, for example:"
+msgstr ""
+
+#. Tag: screen
+#: Using_JBossJTA_in_Application_Servers.xml:35
+#, no-c-format
+msgid ""
+"&lt;mbean code=\"com.arjuna.ats.jbossatx.jts.TransactionManagerService\" "
+"name=\"jboss:service=TransactionManager\"&gt;\n"
+"                \n"
+"&lt;attribute name=\"TransactionTimeout\"&gt;300&lt;/attribute&gt;\n"
+"&lt;attribute name=\"StatisticsEnabled&gt;true&lt;/attribute&gt;&gt;\n"
+"                \n"
+"&lt;/mbean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:36
+#, no-c-format
+msgid ""
+"The transaction service is configurable also via the standard JBoss "
+"Transaction Service property files. These are located in the JBossTS install "
+"location under the etc sub-directory."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:39
+#, no-c-format
+msgid ""
+"These files can be edited manually or through JMX. Each property file is "
+"exposed via an object with the name <code>com.arjuna.ts.properties</code> "
+"and an attribute of module where module is equal to the name of the module "
+"to be configured, for example, <code>com.arjuna.ts.properties:module=arjuna</"
+"code>."
+msgstr ""
+
+#. Tag: title
+#: Using_JBossJTA_in_Application_Servers.xml:43
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:44
+#, no-c-format
+msgid ""
+"In order to make JBossTS logging semantically consistent with JBossAS, the "
+"TransactionManagerService modifies the level of some log messages. This is "
+"achieved by overriding the value of the <property>com.arjuna.common.util."
+"logger</property> property given in the <filename>jbossjta-properties.xml</"
+"filename> file. Therefore, the value of this property will have no effect on "
+"the logging behaviour when running embedded in JBossAS. By forcing use of "
+"the log4j_releveler logger, the TransactionManagerService causes all INFO "
+"level messages in the transaction code to be modified to behave as DEBUG "
+"messages. Therefore, these messages will not appear in log files if the "
+"filter level is INFO. All other log messages behave as normal."
+msgstr ""
+
+#. Tag: title
+#: Using_JBossJTA_in_Application_Servers.xml:49
+#, no-c-format
+msgid "The services"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:50
+#, no-c-format
+msgid ""
+"There is currently one service offered by the JBOSS integration called "
+"TransactionManagerService. Here we shall discuss what this service does."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:54
+#, no-c-format
+msgid ""
+"The transaction manager service’s main purpose is to ensure the recovery "
+"manager is started. It also binds the JBossTS JTA transaction manager to "
+"java:/TransactionManager name with the JNDI provider. This service depends "
+"upon the existence of the CORBA ORB Service and it must be using JacORB as "
+"the underlying ORB implementation."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:57
+#, no-c-format
+msgid "There are two instances of this service:"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:62
+#, no-c-format
+msgid ""
+"distributed: this uses the JTS enabled transaction manager implementation "
+"and hence supports distributed transactions and recovery. To configure this "
+"use the <classname>com.arjuna.ats.jbossatx.jts.TransactionManagerService</"
+"classname> class. This is the default configuration."
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:67
+#, no-c-format
+msgid ""
+"local: this uses the purely local JTA implementation. To configure this use "
+"the <classname>com.arjuna.ats.jbossatx.jta.TransactionManagerService</"
+"classname> class."
+msgstr ""
+
+#. Tag: title
+#: Using_JBossJTA_in_Application_Servers.xml:73
+#, no-c-format
+msgid "Ensuring Transactional Context is Propagated to the Server"
+msgstr ""
+
+#. Tag: para
+#: Using_JBossJTA_in_Application_Servers.xml:74
+#, no-c-format
+msgid ""
+"It is possible to coordinate transactions from a coordinator which is not "
+"located within the JBoss server (e.g. using transactions created by an "
+"external OTS server). To ensure the transaction context is propagated via "
+"JRMP invocations to the server, the transaction propagation context factory "
+"needs to be explicitly set for the JRMP invoker proxy. This is done as "
+"follows:"
+msgstr ""
+
+#. Tag: screen
+#: Using_JBossJTA_in_Application_Servers.xml:78
+#, no-c-format
+msgid ""
+"JRMPInvokerProxy.setTPCFactory( new com.arjuna.ats.internal.jbossatx.jts."
+"PropagationContextManager() );"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/Makefile	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/Makefile	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,11 @@
+#Makefile for Transactions_Web_Services_Programmers_Guide
+
+XML_LANG	= en-US
+
+BRAND		= JBoss
+
+#OTHER_LANGS	= as-IN bn-IN de-DE es-ES fr-FR gu-IN hi-IN it-IT ja-JP kn-IN ko-KR ml-IN mr-IN or-IN pa-IN pt-BR ru-RU si-LK ta-IN te-IN zh-CN zh-TW
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+<author>
+      <firstname>Red Hat Documentation Group</firstname>
+      <surname></surname>
+   </author>
+</authorgroup>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<bookinfo id="book-Transactions_Web_Services_Programmers_Guide-Transactions_Web_Services_Programmers_Guide">
+	<title>JBoss Transactions Web Services Programmers Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>4</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.2</productnumber>
+	<abstract>
+		<para>This book is about Programming for Transaction Web Services</para></abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
+			</imageobject>
+			<textobject>
+				<phrase>Logo</phrase>
+			</textobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+</bookinfo>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,65 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-Getting_Started">
+	<title>Getting Started</title>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Getting_Started-Creating_and_deploying_participants">
+		<title>Creating and deploying participants</title>
+		<para>
+			A participant is a software entity which is driven by the transaction manager on behalf of a Web service. The creation of participants is non-trivial since they ultimately reflect the state of a Web service’s back-end processing facilities which is a function of an enterprise’s own IT infrastructure. The most that can be said about the implementation of a participant without getting into detail about the back-end systems it represents, or the details of the underlying transaction protocol is that implementations must implement one of the following interfaces, depending upon the protocol it will participate within: <code>com.arjuna.wst.Durable2PCParticipant</code>, <code>com.arjuna.wst.Volatile2PCParticipant</code>, or, <code>com.arjuna.wst.BusinessAgreementWithParticipantCompletionParticipant</code>, <code>com.arjuna.wst.BusinessAgreementWithCoordinatorCompletionParticipant</code>.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Getting_Started-Creating_Client_Applications">
+		<title>Creating Client Applications</title>
+		<para>
+			There are two aspects to a client application using XTS. The first is the transaction declaration aspects and the second is the business logic that the client application performs. The transaction declaration aspects are taken care of automatically with XTS’s client API. This API provides simple transaction directives like begin, commit, and rollback which the client application can use to initialize, manage, and terminate transactions. Under the covers, this API invokes (via SOAP) operations on the transaction manager.
+		</para>
+		<para>
+			When the client application performs invocations on business logic Web services, then XTS does not dictate an API for that purpose. However, there is a requirement that whatever API is chosen, the XTS context be inserted onto outgoing messages, and extracted and associated with the current thread for incoming messages. To make the user’s life easier, the XTS software comes complete with three sets of “filters” which can perform the task automatically. These filters are designed to work with JAX-RPC and webMethods client libraries.
+		</para>
+		<note>
+			<para>
+				If the user chooses to use a different SOAP client infrastructure, then the onus to perform client-side header processing rests with them. XTS does not provide client-side infrastructure for anything other than JAX-RPC or webMethods for this release.
+			</para>
+		</note>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Creating_Client_Applications-JAX_RPC_Context_Handlers">
+			<title>JAX-RPC Context Handlers</title>
+			<para>
+				In order to register the JAX-RPC server-side context handler with the deployed web services, a handler chain must be included in the web services deployment descriptor. Please refer to the demo application <filename>jboss/webservices.xml</filename> deployment descriptor for an example of how this can be achieved.
+			</para>
+		</formalpara>
+		<para>
+			In order to register the JAX-RPC client-side context handler used by the client applications, a handler chain must be included in the definition of the service-ref in the client web.xml deployment descriptor. Please refer to the demo application <filename>jboss/client-web-app.xml</filename> for an example of how this can be achieved.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Creating_Client_Applications-webMethods_Context_Handlers">
+			<title>webMethods Context Handlers</title>
+			<para>
+				In order to register the webMethods server-side context handler with the deployed web services, the inbound and outbound interceptors must be configured in the web services deployment descriptor. An example of how this can be configured can be found in the demo application, for example, the <filename>RestaurantServiceAT.xml</filename>.
+			</para>
+		</formalpara>
+		<para>
+			In order to register the webMethods client-side context handler, the inbound and outbound interceptors must be configured in the <filename>glue-config.xml</filename> deployment descriptor. Please refer to the soap interceptor section of the demo application glue-config.xml for an example of how this can be achieved.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Getting_Started-Hints_and_tips">
+		<title>Hints and tips</title>
+		<para>
+			If you want to create multiple JBoss deploys on the same machine, then you may wish to look at <ulink url="http://www.yorku.ca/dkha/jboss/docs/MultipleInstances.htm"><emphasis>Setting up multiple instances</emphasis></ulink> for information on what is required.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Getting_Started-Summary">
+		<title>Summary</title>
+		<para>
+			This chapter has provided a high-level overview of how to use each of the major software pieces of the Web Services transactions component of JBossTS. The Web Services transaction manager provided by JBossTS is the hub of the architecture and is the only piece of software that users’ software does not bind to directly. XTS provides header processing infrastructure for dealing with Web Services transactions contexts for both users’ client applications and Web services. For developing transaction participants, XTS provides a simple interface plus the necessary document handling code.
+		</para>
+		<para>
+			This chapter is meant as an overview only, and is unlikely to answer questions on more difficult and subtle aspects. For fuller explanations of the components, please refer to the appropriate chapter elsewhere in this document.
+		</para>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,83 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-Introduction">
+	<title>Introduction</title>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Introduction-JBossTS_Web_Services_transactions_overview">
+		<title>JBossTS Web Services transactions overview</title>
+		<para>
+			The XML transaction service component of JBossTS (shorthand referred to as XTS) supports the coordination of private and public Web services in a business transaction. Therefore, to understand XTS, you must be familiar with Web services, and also understand a little about transactions. This chapter introduces XTS and provides a brief overview of the technologies that form the Web services standard. Additionally, this chapter explores some of the fundamentals of transactioning technology and how it can be applied to Web services. Much of the content presented in this chapter is detailed throughout this guide; however, only overview information about Web services is provided. If you are new to creating Web services, please see consult your Web services platform documentation.
+		</para>
+		<para>
+			JBossTS provides as the XTS component a transaction solution for Web services. Using XTS, business partners can coordinate complex business transactions in a controlled and reliable manner. The JBossTS Web Services API supports a transactional coordination model based on the WS-C, WS-Atomic Transaction and WS-Business Activity specifications. WS-C is a generic coordination framework developed by IBM, Microsoft and BEA, WS-Atomic Transaction and WS-Business Activity are transaction protocols that utilize this framework.
+		</para>
+		<para>
+			Web services are modular, reusable software components that are created by exposing business functionality through a Web service interface. Web services communicate directly with other Web services using standards-based technologies such as SOAP and HTTP. These standards-based communication technologies allow Web services to be accessed by customers, suppliers, and trading partners, independent of hardware operation system or programming environment. The result is a vastly improved collaboration environment as compared to today&#39;s EDI and business-to-business (B2B) solutions—an environment where businesses can expose their current and future business applications as Web services that can be easily discovered and accessed by external partners.
+		</para>
+		<para>
+			Web services, by themselves, are not fault tolerant. In fact, some of the reasons that make it an attractive development solution are also the same reasons that service-based applications may have drawbacks:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Application components that are exposed as Web services may be owned by third parties, which provides benefits in terms of cost of maintenance, but drawbacks in terms of having exclusive control over their behavior;
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Web services are usually remotely located which increases risk of failure due to increased network travel for invocations.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Applications that have high dependability requirements, must find a method of minimizing the effects of errors that may occur when an application consumes Web services. One method of safeguarding against such failures is to interact with an application’s Web services within the context of a transaction. A transaction is simply a unit of work which is completed entirely, or in the case of failures is reversed to some agreed consistent state – normally to appear as if the work had never occurred in the first place. With XTS, transactions can span multiple Web services which mean that work performed across multiple enterprises can be managed with transactional support.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-JBossTS_Web_Services_transactions_overview-Managing_Service_Based_Processes">
+			<title>Managing Service-Based Processes</title>
+			<para>
+				XTS allows you to create transactions that drive complex business processes spanning multiple Web services. Current Web services standards do not address the requirements for a high-level coordination of services since in today’s Web services applications, which use single request/receive interactions, coordination is typically not a problem. However, for applications that engage multiple services among multiple business partners, coordinating and controlling the resulting interactions is essential. This becomes even more apparent when you realize that you generally have little in the way of formal guarantees when interacting with third-party Web services.
+			</para>
+		</formalpara>
+		<para>
+			XTS provides the infrastructure for coordinating services during a business process. By organizing processes as transactions, business partners can collaborate on complex business interactions in a reliable manner, insuring the integrity of their data - usually represented by multiple changes to a database – but without the usual overheads and drawbacks of directly exposing traditional transaction-processing engines directly onto the web. The following example demonstrates how an application may manage service-based processes as transactions:
+		</para>
+		<para>
+			The application in question allows a user to plan a social evening. This application is responsible for reserving a table at a restaurant, and reserving tickets to a show. Both activities are paid for using a credit card. In this example, each service represents exposed Web services provided by different service providers. XTS is used to envelop the interactions between the theater and restaurant services into a single (potentially) long-running business transaction. The business transaction must insure that seats are reserved both at the restaurant and the theater. If one event fails the user has the ability to decline both events, thus returning both services back to their original state. If both events are successful, the user’s credit card is charged and both seats are booked. As you may expect, the interaction between the services must be controlled in a reliable manner over a period of time. In addition, management must span several third-party services that are !
 remotely deployed.
+		</para>
+		<note>
+			<para>
+				Without the backing of a transaction, an undesirable outcome may occur. For example, the user credit card may be charged, even though one or both of the bookings may have failed.
+			</para>
+		</note>
+		<para>
+			This simple example describes the situations where XTS excels at supporting business processes across multiple enterprises. This example is further refined throughout this guide, and appears as a standard demonstrator (including source code) with the XTS distribution.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-JBossTS_Web_Services_transactions_overview-Servlets">
+			<title>Servlets</title>
+			<para>
+				The WS-C, WS-Atomic Transaction and WS-Business Activity protocols are based on one-way interactions of entities rather than traditional synchronous request/response RPC style interactions. Entities (for example, transaction participants) invoke operations on other entities (for example, the transaction coordinator) in order to return responses to requests. What this means is that the programming model is based on peer-to-peer relationships, with the result that all services, whether they are participants, coordinators or clients, must have an active component that allows them to receive unsolicited messages.
+			</para>
+		</formalpara>
+		<para>
+			In the current implementation of XTS, the active component is achieved through the use of Java servlet technology. Each endpoint that can be communicated with via SOAP/XML is represented as a servlet (and published within JNDI). Fortunately for the developer, this use of servlets occurs transparently. The only drawback is that (currently) clients must reside within a domain capable of hosting servlets, i.e., an application server. It is our intention that future versions of XTS will provide configurable deployment options, allowing servlets where required, but not mandating them.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-JBossTS_Web_Services_transactions_overview-SOAP">
+			<title>SOAP</title>
+			<para>
+				SOAP has emerged as the de-facto message format for XML-based communication in the Web services arena. It is a lightweight protocol that allows the user to define the content of a message and to provide hints as to how recipients should process that message.
+			</para>
+		</formalpara>
+		<para>
+			SOAP messages can be divided into two main categories: Remote Procedure Call (RPC) and Document Exchange (DE). The primary difference between the two categories is that the SOAP specification defines encoding rules and conventions for RPC. The document exchange model allows the exchange of arbitrary XML documents - a key ingredient of B2B document exchange. XTS is based on the loosely coupled document-exchange style, yet it can support transactions spanning Web service that use either document-exchange or RPC.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-JBossTS_Web_Services_transactions_overview-Web_Services_Description_Language_WSDL">
+			<title>Web Services Description Language (WSDL)</title>
+			<para>
+				WSDL is an XML-based language used to define Web service interfaces. An application that consumes a Web service parses the service’s WSDL document to discover the location of the service, the operations that the service supports, the protocol bindings the service supports (SOAP, HTTP, etc), and how to access them (for each operation, WSDL describes the format that the client must follow).
+			</para>
+		</formalpara>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.ent	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.ent	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_Web_Services_Programmers_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "4.2.0.CP07">

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,19 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> 
+	<xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Transactions_Overview.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Getting_Started.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Transactional_Web_Services.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Participants.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Stand-alone_Coordinator.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="The_XTS_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,249 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-Test">
+	<title>Test</title>
+	<para>
+		This is a test paragraph
+	</para>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Test-The_Participant_an_Overview">
+		<title>The Participant: an Overview</title>
+		<para>
+			The participant is the entity that performs the work pertaining to transaction management on behalf of the business services involved in an application. The Web service (for example, a theatre booking system) contains some business logic for reserving a seat, enquiring availability etc, but it will need to be supported by something that maintains information in a durable manner. Typically this will be a database, but it could be a file system, NVRAM, etc. Now, although the service may talk to the back-end database directly, it cannot commit or undo any changes it (the services) makes, since these are ultimately under the control of the transaction that scoped the work. In order for the transaction to be able to exercise this control, it must have some contact with the database. In XTS this is accomplished by the participant, and the role played by the participant between the transaction and back-end transaction processing infrastructure is shown in the following figure.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Transaction_Control.png" format="PNG" />
+			</imageobject>
+			<caption>Transactions, Participants, and Back-End Transaction Control</caption>
+		</mediaobject>
+		<para>
+			Each participant in XTS is related to either the Atomic Transaction or Business Activity protocols. In the following sections we’ll consider both protocols and their respective participants.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-Atomic_Transaction">
+			<title>Atomic Transaction</title>
+			<para>
+				All Atomic Transaction participants are instances of one of the following interfaces.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-Durable2PCParticipant">
+			<title>Durable2PCParticipant</title>
+			<para>
+				This participant supports the WS-Atomic Transaction Durable2PC protocol with the following signatures, as per the <interfacename>com.arjuna.wst.Durable2Participant</interfacename> interface:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>prepare</emphasis>: the participant should perform any work necessary to allow it to either commit or rollback the work performed by the Web service under the scope of the transaction. The implementation is free to do whatever it needs to in order to fulfill the implicit contract between it and the coordinator. The participant is expected to indicate whether it can prepare or not by returning an instance of the <code>com.arjuna.wst.Vote</code>. Values are: <code>ReadOnly</code>, indicating the participant does not need to be informed of the transaction outcome as no state updates were made; Prepared, indicating the participant is prepared to commit or rollback depending on the final transaction outcome, and it has made sufficient state updates persistent to accomplish this; and Aborted, indicating the participant has aborted and the transaction should also attempt to do so.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>commit</emphasis>: the participant should make permanent the work that it controls. What it does will depend upon its implementation, for example, commit the reservation of the theatre ticket. The participant will then return an indication of whether or not it succeeded.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>rollback</emphasis>: the participant should undo the work that it controls. The participant will then return an indication of whether or not it succeeded.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>commitOnePhase</emphasis>: if there is only a single TwoPCParticipant registered with the transaction, then the coordinator can optimize the protocol and simply tell the participant to commit: there is no need for a preparatory phase since consensus is implicit.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>unknown</emphasis>: during recovery the participant can inquire as to the status of the transaction it was registered with. If that transaction is no longer available (has rolled back) then this operation will be invoked by the coordination service.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>error</emphasis>: during recovery the participant can enquire as to the status of the transaction it was registered with. If an error occurs (for example, the transaction service is unavailable) then this operation will be invoked.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-Volatile2PCParticipant">
+			<title>Volatile2PCParticipant</title>
+			<para>
+				This participant supports the WS-Atomic Transaction Volatile2PC protocol with the following signatures, as per the <interfacename>com.arjuna.wst.Volatile2Participant</interfacename> interface:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>prepare</emphasis>: the participant should perform any work necessary to allow it to either commit or rollback the work performed by the Web service under the scope of the transaction. The implementation is free to do whatever it needs to in order to fulfill the implicit contract between it and the coordinator. The participant is expected to indicate whether it can prepare or not by returning an instance of the com.arjuna.wst.Vote. Values are: ReadOnly, indicating the participant does not need to be informed of the transaction outcome as no state updates were made; Prepared, indicating the participant is prepared to commit or rollback depending on the final transaction outcome, and it has made sufficient state updates persistent to accomplish this; and Aborted, indicating the participant has aborted and the transaction should also attempt to do so.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>commit</emphasis>: the participant should make permanent the work that it controls. What it does will depend upon its implementation, for example, commit the reservation of the theatre ticket. The participant will then return an indication of whether or not it succeeded.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>rollback</emphasis>: the participant should undo the work that it controls. The participant will then return an indication of whether or not it succeeded.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>commitOnePhase</emphasis>: if there is only a single TwoPCParticipant registered with the transaction, then the coordinator can optimize the protocol and simply tell the participant to commit: there is no need for a preparatory phase since consensus is implicit.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>unknown</emphasis>: during recovery the participant can inquire as to the status of the transaction it was registered with. If that transaction is no longer available (has rolled back) then this operation will be invoked by the coordination service.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>error</emphasis>: during recovery the participant can enquire as to the status of the transaction it was registered with. If an error occurs (for example, the transaction service is unavailable) then this operation will be invoked.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-Business_Activity">
+			<title>Business Activity</title>
+			<para>
+				All Business Activity participants are instances of the following interfaces.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-BusinessAgreementWithParticipantCompletion">
+			<title>BusinessAgreementWithParticipantCompletion</title>
+			<para>
+				This participant supports the WS-T <code>BusinessAgreementWithParticipantCompletion</code> protocol with the following signatures, as per the <interfacename>com.arjuna.wst.BusinessAgreementWithParticipantCompletionParticipant</interfacename> interface:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>close</emphasis>: the transaction has completed successfully. The participant previously informed the coordinator that it was ready to complete.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>cancel</emphasis>: the transaction has canceled, and the participant should undo any work. The participant cannot have informed the coordinator that it has completed.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>compensate</emphasis>: the transaction has canceled. The participant previously informed the coordinator that it had finished work but could compensate later if required, so it is now requested to do so.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>status</emphasis>: return the status of the participant.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>unknown</emphasis>: if the participant inquires as to the status of the transaction it was registered with and that transaction is no longer available (has rolled back) then this operation will be invoked by the coordination service.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>error</emphasis>: if the participant enquired as to the status of the transaction it was registered with and an error occurs (for example, the transaction service is unavailable) then this operation will be invoked.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-BusinessAgreementWithCoordinatorCompletion">
+			<title>BusinessAgreementWithCoordinatorCompletion</title>
+			<para>
+				This participant supports the WS-T <code>BusinessAgreementWithCoordinatorCompletion</code> protocol with the following signatures, as per the <interfacename>com.arjuna.wst.BusinessAgreementWithCoordinatorCompletionParticipant</interfacename> interface:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>close</emphasis>: the transaction has completed successfully. The participant previously informed the coordinator that it was ready to complete.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>cancel</emphasis>: the transaction has canceled, and the participant should undo any work.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>compensate</emphasis>: the transaction has canceled. The participant previously informed the coordinator that it had finished work but could compensate later if required, so it is now requested to do so.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>complete</emphasis>: the coordinator is informing the participant that all work it needs to do within the scope of this business activity has been received.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>status</emphasis>: return the status of the participant.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>unknown</emphasis>: if the participant inquires as to the status of the transaction it was registered with and that transaction is no longer available (has rolled back) then this operation will be invoked by the coordination service.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>error</emphasis>: if the participant enquired as to the status of the transaction it was registered with and an error occurs (for example, the transaction service is unavailable) then this operation will be invoked.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-The_Participant_an_Overview-BAParticipantManager">
+			<title>BAParticipantManager</title>
+			<para>
+				In order for the Business Activity protocol to work correctly, the participants must be able to autonomously signal the coordinator that they have left the activity (exited) or are ready to complete and (if necessary) compensate (completed). Unlike the Atomic Transaction protocol, where all interactions between the coordinator and participants are instigated by the coordinator when the transaction terminates, this interaction pattern requires the participant to be able to talk to the coordinator at any time during the lifetime of the business activity.
+			</para>
+		</formalpara>
+		<para>
+			As such, whenever a participant is registered with a business activity, it receives a handle on the coordinator. This handle is an instance of the <interfacename>BAParticipantManager</interfacename> interface, located in <code>com.arjuna.wst.BAParticipantManager</code>, with the following methods:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>exit</emphasis>: the participant has exited the business activity. The participant uses this to inform the coordinator that is has left the activity. It will not be informed when (and how) the business activity terminates.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>completed</emphasis>: the participant has completed it works, but wishes to continue in the business activity, so that it will eventually be told when (and how) the activity terminates. The participant may later be asked to compensate for the work it has done.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>fault</emphasis>: the participant encountered an error during normal activation and has compensated. This places the business activity into a mandatory cancel-only mode.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Test-Participant_Creation_and_Deployment">
+		<title>Participant Creation and Deployment</title>
+		<para>
+			As has been shown, the participant provides the plumbing that drives the transactional aspects of the service. This section discusses the specifics of Participant programming and usage.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Participant_Creation_and_Deployment-Implementing_Participants">
+			<title>Implementing Participants</title>
+			<para>
+				Implementing a participant is, in theory, a relatively straightforward task, though depending on the complexity of the transactional infrastructure that the participant is to manage, the actual size and complexity of a participant will vary. The participant interfaces can be found under <code>com.arjuna.wst</code>. Your implementation must implement one of these interfaces.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Participant_Creation_and_Deployment-Deploying_Participants">
+			<title>Deploying Participants</title>
+			<para>
+				In order to allow Participants to be located remote from the Transaction Manager, XTS includes transparent message routing functionality. The Participant classes are not exposed directly as web services, but rather registered with a web service which receives messages from the Transaction Manager and maps them to appropriate method invocations on the relevant Participant instance. Transactional web services will typically enroll a new Participant instance of the desired type for each new transaction. A unique identifier must be provided at enrollment time and will be used to map transaction protocol messages to the appropriate participant instance. Note that Participant method invocations do not occur in a specific transaction context. Therefore, if your Participant implementation requires knowledge of the transaction context (for example, to look up state information in a persistent store) then you should provide this to the Participant instance, typically as an argume!
 nt to the constructor function. Sample Participant implementations and usage can be found in the demonstration application included with XTS.
+			</para>
+		</formalpara>
+		<para>
+			Any application code which creates and enrolls Participants must be deployed along with the parts of XTS necessary for receiving and processing incoming messages from the Transaction Manager. This typically means including the appropriate XTS .jar, .wsr and .war files in your application. If you are deploying your application only a server which does not already contain a Transaction Manger installation, you will also need to deploy the XTS configuration files.
+		</para>
+		<note>
+			<para>
+				In early access releases of the XTS product, the Transaction Manager and participant management functions are not provided as separable components. Configuration and deployment of the participant infrastructure is therefore as in the Transaction Manger section above. More flexible deployment of the XTS components will be available in the final release.
+			</para>
+		</note>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,14 @@
+<?xml version='1.0'?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<preface id="pref-Transactions_Web_Services_Programmers_Guide-Preface">
+	<title>Preface</title>
+	<xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"> 
+	<xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+			<xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+		</xi:fallback>
+	</xi:include> 
+</preface>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,15 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-Stand_alone_Coordinator">
+	<title>Stand-alone Coordinator</title>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Stand_alone_Coordinator-Introduction">
+		<title>Introduction</title>
+		<para>
+			For configuring a stand-alone Web Services transaction coordinator, see the relevant chapter in the System Administrator’s Guide.
+		</para>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,215 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-The_XTS_API">
+	<title>The XTS API</title>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-The_XTS_API-Introduction">
+		<title>Introduction</title>
+		<para>
+			This chapter shows how to use the XTS API. This is of use both at the client-side where applications consume transactional Web services, and at the service/participant side where transactions need to be coordinated with back-end systems.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-The_XTS_API-API_for_the_Atomic_Transaction_protocol">
+		<title>API for the Atomic Transaction protocol</title>
+		<para>
+			The following classes and interfaces are located within the <package>com.arjuna.wst or com.arjuna.mw.wst</package> packages and sub-packages.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-Vote">
+			<title>Vote</title>
+			<para>
+				During the two-phase commit protocol, a participant will be asked to vote on whether or not it can prepare to confirm the work that it controls. It must return one of the following subtypes of <code>com.arjuna.wst.Vote</code>:
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>Prepared</emphasis>: the participant indicates that it can prepare if asked to by the coordinator. It will not have committed at this stage however, since it does not know what the final outcome will be.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>Aborted</emphasis>: the participant indicates that it cannot prepare and has in fact rolled back. The participant should not expect to get a second phase message.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>ReadOnly</emphasis>: the participant indicates that the work it controls has not made any changes to state that require it to be informed of the final outcome of the transaction. Essentially the participant is resigning from the transaction.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Thus a possible implementation of a 2PC participant’s prepare method may resemble the following:
+		</para>
+<screen>
+public Vote prepare () throws WrongStateException, SystemException
+{
+	// Some participant logic here
+	
+	if(/* some condition based on the outcome of the business logic */)
+	{
+		// Vote to confirm
+		return new com.arjuna.wst.Prepared();
+	}
+	else if(/*some other condition based on the outcome of the business logic*/)
+	{
+		// Resign
+		return new com.arjuna.wst.ReadOnly();
+	}
+	else
+	{
+		// Vote to cancel
+		return new com.arjuna.wst.Aborted();
+	}
+}
+</screen>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-The_transaction_context">
+			<title>The transaction context</title>
+			<para>
+				A transaction is typically represented by some unique identifier and a reference to the coordinator which manages the transaction, for example, a URL. XTS allows transactions to be nested such that a transaction hierarchy (tree) may be formed. Thus, a transaction context may be a set of transactions, with the top-most transaction the root parent (superior).
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-TxContext">
+			<title>TxContext</title>
+			<para>
+				<code>com.arjuna.mw.wst.TxContext</code> is an opaque representation of a transaction context.
+			</para>
+		</formalpara>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>valid</emphasis>: this indicates whether or not the contents are valid.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>equals</emphasis>: can be used to compare two instances.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-UserTransaction">
+			<title>UserTransaction</title>
+			<para>
+				The <classname>com.arjuna.wst.UserTransaction</classname> is the class that most users (for example, clients and services) will see. This isolates them from the underlying protocol-specific aspects of the XTS implementation. Importantly, a UserTransaction does not represent a specific transaction, but rather is responsible for providing access to an implicit per-thread transaction context; it is similar to the UserTransaction in the JTA specification. Therefore, all of the UserTransaction methods implicitly act on the current thread of control.
+			</para>
+		</formalpara>
+		<para>
+			A new transaction is begun and associated with the invoking thread by using the begin method. If there is already a transaction associated with the thread then the <code>WrongStateException</code> exception is thrown. Upon success, this operation associates the newly created transaction with the current thread.
+		</para>
+		<para>
+			The transaction is committed by the commit method. This will execute the Volatile2PC and Durable2PC protocols prior to returning. If there is no transaction associated with the invoking thread then <code>UnknownTransactionException</code> is thrown. If the transaction ultimately rolls back then the <code>TransactionRolledBackException</code> is thrown. When complete, this operation disassociates the transaction from the current thread such that it becomes associated with no transaction.
+		</para>
+		<para>
+			The <code>rollback</code> operation will terminate the transaction and return normally if it succeeded, while throwing an appropriate exception if it didn’t. If there is no transaction associated with the invoking thread then <code>UnknownTransactionException</code> is thrown.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-UserTransactionFactory">
+			<title>UserTransactionFactory</title>
+			<para>
+				UserTransactions are obtained from a <code>UserTransactionFactory</code>.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-TransactionManager">
+			<title>TransactionManager</title>
+			<para>
+				The <interfacename>TransactionManager</interfacename> interface represents the service/container/participant’s (service-side users) typical way in which to interact with the underlying transaction service implementation. As with <interfacename>UserTransaction</interfacename> a <interfacename>TransactionManager</interfacename> does not represent a specific transaction, but rather is responsible for providing access to an implicit per-thread transaction context.
+			</para>
+		</formalpara>
+		<para>
+			A thread of control may require periods of non-transactionality so that it may perform work that is not associated with a specific transaction. In order to do this it is necessary to disassociate the thread from any transactions. The suspend method accomplishes this, returning a <code>TxContext</code> instance, which is a handle on the transaction. The thread is then no longer associated with any transaction.
+		</para>
+		<para>
+			The <methodname>resume</methodname> method can be used to (re-)associate a thread with a transaction(s) via its <code>TxContext</code>. Prior to association, the thread is disassociated with any transaction(s) with which it may be currently associated. If the <code>TxContext</code> is null, then the thread is associated with no transaction. The <code>UnknownTransactionException</code> exception is thrown if the transaction that the <code>TxContext</code> refers to is invalid in the scope of the invoking thread.
+		</para>
+		<para>
+			The <methodname>currentTransaction</methodname> method returns the <code>TxContext</code> for the current transaction, or null if there is none. Unlike suspend, this method does not disassociate the current thread from the transaction(s). This can be used to enable multiple threads to execute within the scope of the same transaction.
+		</para>
+		<para>
+			In order to register and resign participants with a transaction, the container or participant must use:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>enlistForVolatileTwoPhase</emphasis>: enlist the specified participant with current transaction such that it will participate in the Volatile2PC protocol; a unique identifier for the participant is also required. If there is no transaction associated with the invoking thread then the <code>UnknownTransactionException</code> exception is thrown. If the coordinator already has a participant enrolled with the same identifier, then <code>AlreadyRegisteredException</code> will be thrown. If the transaction is not in a state where participants can be enrolled (for example, it is terminating) then <code>WrongStateException</code> will be thrown.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>enlistForDurableTwoPhase</emphasis>: enlist the specified participant with current transaction such that it will participate in the 2PC protocol; a unique identifier for the participant is also required. If there is no transaction associated with the invoking thread then the <code>UnknownTransactionException</code> exception is thrown. If the coordinator already has a participant enrolled with the same identifier, then <code>AlreadyRegisteredException</code> will be thrown. If the transaction is not in a state where participants can be enrolled (for example, it is terminating) then <code>WrongStateException</code> will be thrown.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Atomic_Transaction_protocol-TransactionFactory">
+			<title>TransactionFactory</title>
+			<para>
+				TransactionManagers are obtained from a <code>TransactionFactory</code>.
+			</para>
+		</formalpara>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-The_XTS_API-API_for_the_Business_Activity_protocol">
+		<title>API for the Business Activity protocol</title>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Business_Activity_protocol-UserBusinessActivity">
+			<title>UserBusinessActivity</title>
+			<para>
+				The <classname>com.arjuna.wst.UserBusinessActivity</classname> is the class that most users (for example, clients and services) will see. This isolates them from the underlying protocol-specific aspects of the XTS implementation. Importantly, a <code>UserBusinessActivity</code> does not represent a specific business activity, but rather is responsible for providing access to an implicit per-thread activity. Therefore, all of the <code>UserBusinessActivity</code> methods implicitly act on the current thread of control.
+			</para>
+		</formalpara>
+		<para>
+			A new business activity is begun and associated with the invoking thread by using the begin method. If there is already an activity associated with the thread then the <code>WrongStateException</code> exception is thrown. Upon success, this operation associates the newly created activity with the current thread.
+		</para>
+		<para>
+			The business activity is completed successfully by the close method. This will execute the <code>BusinessAgreementWithParticipantCompletion</code> protocol prior to returning. If there is no activity associated with the invoking thread then <code>UnknownTransactionException</code> is thrown. If the activity ultimately cancels then the <code>TransactionRolledBackException</code> is thrown. When complete, this operation disassociates the business activity from the current thread such that it becomes associated with no activity.
+		</para>
+		<para>
+			The cancel operation will terminate the business activity and return normally if it succeeded, while throwing an appropriate exception if it didn’t. If there is no activity associated with the invoking thread then <code>UnknownTransactionException</code> is thrown. Any participants that had previously completed will be informed to compensate for their work.
+		</para>
+		<para>
+			Some participants may have registered for the <code>BusinessAgreementWithCoordinatorCompletion</code> protocol, which requires the coordinator or application to inform them when all work that they need to do within the scope of a business activity has been performed. The application should therefore use the complete method to inform these participants.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Business_Activity_protocol-UserBusinessActivityFactory">
+			<title>UserBusinessActivityFactory</title>
+			<para>
+				UserBusinessActivities are obtained from a <code>UserBusinessActivityFactory</code>.
+			</para>
+		</formalpara>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Business_Activity_protocol-BusinessActivityManager">
+			<title>BusinessActivityManager</title>
+			<para>
+				The <interfacename>BusinessActivityManager</interfacename> interface represents the service/container/participant’s (service-side users) typical way in which to interact with the underlying business activity service implementation. As with <interfacename>UserBusinessActivity</interfacename> a <interfacename>BusinessActivityManager</interfacename> does not represent a specific activity, but rather is responsible for providing access to an implicit per-thread activity.
+			</para>
+		</formalpara>
+		<para>
+			A thread of control may require periods of non-transactionality so that it may perform work that is not associated with a specific activity. In order to do this it is necessary to disassociate the thread from any business activities. The suspend method accomplishes this, returning a <code>TxContext</code> instance, which is a handle on the activity. The thread is then no longer associated with any activity.
+		</para>
+		<para>
+			The <methodname>resume</methodname> method can be used to (re-)associate a thread with an activity (or activities) via its TxContext. Prior to association, the thread is disassociated with any activity with which it may be currently associated. If the <code>TxContext</code> is null, then the thread is associated with no activity. The <code>UnknownTransactionException</code> exception is thrown if the business activity that the TxContext refers to is invalid in the scope of the invoking thread.
+		</para>
+		<para>
+			The <methodname>currentTransaction</methodname> method returns the <code>TxContext</code> for the current business activity, or null if there is none. Unlike suspend, this method does not disassociate the current thread from the activity. This can be used to enable multiple threads to execute within the scope of the same business activity.
+		</para>
+		<para>
+			In order to register and resign participants with a business activity, the container or participant must use:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					<emphasis>enlistForBusinessAgreementWithParticipantCompletion</emphasis>: enlist the specified participant with current business activity such that it will participate in the <code>BusinessAgreementWithParticipantCompletion</code> protocol; a unique identifier for the participant is also required. If there is no business activity associated with the invoking thread then the <code>UnknownTransactionException</code> exception is thrown. If the coordinator already has a participant enrolled with the same identifier, then <code>AlreadyRegisteredException</code> will be thrown. If the activity is not in a state where participants can be enrolled (for example, it is terminating) then <code>WrongStateException</code> will be thrown.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<emphasis>enlistForBusinessAgreementWithCoordinatorCompletion</emphasis>: enlist the specified participant with current activity such that it will participate in the <code>BusinessAgreementWithCoordinatorCompletion</code> protocol; a unique identifier for the participant is also required. If there is no business activity associated with the invoking thread then the <code>UnknownTransactionException</code> exception is thrown. If the coordinator already has a participant enrolled with the same identifier, then <code>AlreadyRegisteredException</code> will be thrown. If the activity is not in a state where participants can be enrolled (for example, it is terminating) then <code>WrongStateException</code> will be thrown.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-API_for_the_Business_Activity_protocol-BusinessActivityManagerFactory">
+			<title>BusinessActivityManagerFactory</title>
+			<para>
+				BusinessActivityManagers are obtained from a <code>BusinessActivityManagerFactory</code>.
+			</para>
+		</formalpara>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,43 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-Transactional_Web_Services">
+	<title>Transactional Web Services</title>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Transactional_Web_Services-Introduction">
+		<title>Introduction</title>
+		<para>
+			This chapter describes how to provide transactional support for new and existing Web services using the service-side facilities of XTS. It shows how new services can be made transactional with no additional programming, and how existing services can be made WS-T transaction-aware in a non-invasive fashion.
+		</para>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-Transactional_Web_Services-A_Transactional_Web_Service">
+		<title>A Transactional Web Service</title>
+		<para>
+			A Web service is a business-level entity. It encapsulates application logic needed to perform some domain-specific task, or is designed to delegate to a back-end system which executes that logic. Given it is part of application code, such non-functional requirements as transactionality should not impinge on its construction.
+		</para>
+		<para>
+			To support this notion, XTS provides a suite of components designed to work at the SOAP stack level, which deal with transactional matters on behalf of a Web service without requiring any changes to that service. In XTS two context handling components are registered with the SOAP server and deal with context management on behalf of the service without the service having to worry about context propagation issues itself. This is shown in the following figure.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Context_Handlers.png" format="PNG" />
+			</imageobject>
+			<caption>Context Handlers Registered with the SOAP Server</caption>
+		</mediaobject>
+		<para>
+			The detail of the context management that the context processor performs is unimportant to the Web service application logic, and is orthogonal to any work performed by any other protocol-specific context handlers too. However back-end systems which the Web service application logic uses (such as databases) are often interested in the front-end transaction context such that any operations invoked within its scope can be mapped onto a back-end transaction context. This is typically achieved at the back-end by wrapping a database driver in a veneer which implements both the interface of the original driver and hooks into the service-side API to access the transaction context details. The general architecture for this pattern is shown in the figure below.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Back-End_Integration.png" format="PNG" />
+			</imageobject>
+			<caption>General Pattern for Back-End Integration, Service Side</caption>
+		</mediaobject>
+		<para>
+			The missing element from this is the commit protocol which finally allows back-end work to be made durable or not at the end of a transaction. This is covered in the participant chapter where the participant/back-end relation is explored further.
+		</para>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,302 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-Transactions_Overview">
+	<title>Transactions Overview</title>
+	<para>
+		Transactions have emerged as the dominant paradigm for coordinating interactions between parties in a distributed system, and in particular to manage applications that require concurrent access to shared data. Much of the JBossTS Web Service API is based on contemporary transaction APIs whose familiarity will enhance developer productivity and lessen the learning curve. While the following section provides the essential information that you should know before starting to use XTS for building transactional Web Services, it should not be treated as a definitive reference to all transactional technology.
+	</para>
+	<para>
+		A classic transaction is a unit of work that either completely succeeds, or fails with all partially completed work being undone. When a transaction is committed, all changes made by the associated requests are made durable, normally by committing the results of the work to a database. If a transaction should fail and is rolled back, all changes made by the associated work are undone. Transactions in distributed systems typically require the use of a transaction manager that is responsible for coordinating all of the participants that are part of the transaction.
+	</para>
+	<para>
+		The main components involved in using and defining transactional Web Services using XTS are illustrated in Figure 1.
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				A Transaction Service: The Transaction Service captures the model of the underlying transaction protocol and coordinates parties affiliated with the transaction according to that model.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				A Transaction API: Provides an interface for transaction demarcation and the registration of participants.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				A Participant: The entity that cooperates with the transaction service on behalf of its associated business logic.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The Context: Captures the necessary details of the transaction such that participants can enlist within its scope.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Web_Services.png" format="PNG" />
+		</imageobject>
+		<caption>Web Services and XTS</caption>
+	</mediaobject>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-The_Coordinator">
+		<title>The Coordinator</title>
+		<para>
+			Associated with every transaction is a coordinator, which is responsible for governing the outcome of the transaction. The coordinator may be implemented as a separate service or may be co-located with the user for improved performance. Each coordinator is created by the transaction manager service, which is in effect a factory for those coordinators.
+		</para>
+	</formalpara>
+	<para>
+		A coordinator communicates with enrolled participants to inform them of the desired termination requirements, for instance, whether they should accept (for example, confirm) or reject (for example, cancel) the work done within the scope of the given transaction. For example, whether to purchase the (provisionally reserved) flight tickets for the user or to release them. An application/client may wish to terminate a transaction in a number of different ways (for example, confirm or cancel). However, although the coordinator will attempt to terminate in a manner consistent with that desired by the client, it is ultimately the interactions between the coordinator and the participants that will determine the actual final outcome.
+	</para>
+	<para>
+		A transaction manager is typically responsible for managing coordinators for many transactions. The initiator of the transaction (for example, the client) communicates with a transaction manager and asks it to start a new transaction and associate a coordinator with the transaction. Once created, the context can be propagated to Web services in order for them to associate their work with the transaction.
+	</para>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-The_Transaction_Context">
+		<title>The Transaction Context</title>
+		<para>
+			In order for a transaction to span a number of services, certain information has to be shared between those services in order to propagate information about the transaction. This information is known as the Context. Using XTS, the context is automatically propagated and processed by transaction-aware components of an application. Though XTS removes most of the work associated with propagating contexts, it is still instructive to understand what information is captured in a context:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<para>
+				A transaction identifier which guarantees global uniqueness for an individual transaction;
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The transaction coordinator location or endpoint address so participants can be enrolled.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Context_Flow.png" format="PNG" />
+		</imageobject>
+		<caption>Web Services and Context Flow</caption>
+	</mediaobject>
+	<para>
+		As shown in Figure 2, whenever an application message is sent, the XTS Client API automatically creates a context and embeds it into the message. Similarly, any transaction-aware services are able to extract that context using the XTS service-side infrastructure and use it to perform work within the context of a particular transaction – even though that transaction was initiated elsewhere on the Web! The value of this approach is that the business logic contained within the client application and services are not peppered with transaction-processing code.
+	</para>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-ACID_Transactions">
+		<title>ACID Transactions</title>
+		<para>
+			Traditionally, transaction processing systems support ACID properties. ACID is an acronym for Atomic, Consistent, Isolated, and Durable. A unit of work has traditionally been considered transactional only if the ACID properties are maintained:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Atomicity: The transaction executes completely or not at all.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Consistency: The effects of the transaction preserve the internal consistency of an underlying data structure.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Isolated: The transaction runs as if it were running alone with no other transactions running and is not visible to other transactions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Durable: the transaction’s results will not be lost in the event of a failure.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-Two_Phase_Commit">
+		<title>Two-Phase Commit</title>
+		<para>
+			The classical two-phase commit approach is the bedrock of JBossTS (and more generally of Web Services transactions). Two-phase commit provides coordination of parties that are involved in a transaction. In general, the flow of a two-phase commit transaction is as follows:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<para>
+				A transaction is started, and some work is performed.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Once the work is finished, the two-phase commit begins.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The coordinator (transaction manager) of the transaction asks each resource taking part in the transaction whether it is prepared to commit.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				If all resources respond positively, the coordinator instructs all work performed to be made durable (usually committed to a database).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				If not, all work performed is rolled back (undone) such that the underlying data structures are in their original states.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<mediaobject>
+		<imageobject>
+			<imagedata fileref="images/Commit_Protocol.png" format="PNG" />
+		</imageobject>
+		<caption>The Two-Phase Commit Protocol</caption>
+	</mediaobject>
+	<note>
+		<para>
+			During two-phase commit transactions, coordinators and resources keep track of activity in non-volatile data stores so that they can recover in the case of a failure.
+		</para>
+	</note>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-The_synchronization_protocol">
+		<title>The synchronization protocol</title>
+		<para>
+			As well as the two-phase commit protocol, traditional transaction processing systems employ an additional protocol, often referred to as the synchronization protocol. If you recall the original ACID properties, then you’ll remember that Durability is important in the case where state changes have to be available despite failures. What this means is that applications interact with a persistence store of some kind (e.g., a database) and this can impose a significant overhead – disk access is orders of magnitude slower than access to main computer memory.
+		</para>
+	</formalpara>
+	<para>
+		One apparently obvious solution to this problem would be to cache the state in main memory and only operate on that for the duration of a transaction. Unfortunately you’d then need some way of being able to flush the state back to the persistent store before the transaction terminates, or risk losing the full ACID properties. This is what the synchronization protocol does, with Synchronization participants.
+	</para>
+	<para>
+		Synchronizations are informed that a transaction is about to commit, so they can, for example, flush cached state, which may be being used to improve performance of an application, to a durable representation prior to the transaction committing. They are then informed when the transaction has completed and in what state it completed.
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Synchronizations essentially turn the two-phase commit protocol into a four-phase protocol:
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Before the transaction starts the two-phase commit, all registered Synchronizations are informed. Any failure at this point will cause the transaction to roll back.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The coordinator then conducts the normal two-phase commit protocol.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Once the transaction has terminated, all registered Synchronizations are informed. However, this is a courtesy invocation because any failures at this stage are ignored: the transaction has terminated so there’s nothing to affect.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Unlike the two-phase commit protocol, the synchronization protocol does not have the same failure requirements. For example, Synchronization participants don’t need to make sure they can recover in the event of failures; this is because any failure before the two-phase commit protocol completes means the transaction will roll back, and failures after it has completed can’t affect the data the Synchronization participants were managing.
+	</para>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-Optimizations_to_the_protocol">
+		<title>Optimizations to the protocol</title>
+		<para>
+			There are several variants to the standard two-phase commit protocol that are worth knowing about because they can have an impact on performance and failure recovery. We shall briefly describe those that are the most common variants on the protocol:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Presumed abort: if a transaction is going to roll back then it may simply record this information locally and tell all enlisted participants. Failure to contact a participant has no affect on the transaction outcome; the transaction is effectively informing participants as a courtesy. Once all participants have been contacted the information about the transaction can be removed. If a subsequent request for the status of the transaction occurs there will be no information available and the requestor can assume that the transaction has aborted (rolled back). This optimization has the benefit that no information about participants need be made persistent until the transaction has decided to commit (i.e., progressed to the end of the prepare phase), since any failure prior to this point will be assumed to be an abort of the transaction.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				One-phase: if there is only a single participant involved in the transaction, the coordinator need not drive it through the prepare phase. Thus, the participant will simply be told to commit and the coordinator need not record information about the decision since the outcome of the transaction is solely down to the participant.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Read-only: when a participant is asked to prepare, it can indicate to the coordinator that no information or data that it controls has been modified during the transaction. Such a participant does not need to be informed about the outcome of the transaction since the fate of the participant has no affect on the transaction. As such, a read-only participant can be omitted from the second phase of the commit protocol.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-Non_atomic_transactions_and_heuristic_outcomes">
+		<title>Non-atomic transactions and heuristic outcomes</title>
+		<para>
+			In order to guarantee atomicity, the two-phase commit protocol is necessarily blocking. What this means is that as a result of failures, participants may remain blocked for an indefinite period of time even if failure recovery mechanisms exist. Some applications and participants simply cannot tolerate this blocking.
+		</para>
+	</formalpara>
+	<para>
+		To break this blocking nature, participants that have got past the prepare phase are allowed to make autonomous decisions as to whether they commit or rollback: such a participant must record this decision in case it is eventually contacted to complete the original transaction. If the coordinator eventually informs the participant of the transaction outcome and it is the same as the choice the participant made, then there’s no problem. However, if it is contrary, then a non-atomic outcome has obviously happened: a heuristic outcome.
+	</para>
+	<para>
+		How this heuristic outcome is reported to the application and resolved is usually the domain of complex, manually driven system administration tools, since in order to attempt an automatic resolution requires semantic information about the nature of participants involved in the transactions.
+	</para>
+	<para>
+		Precisely when a participant makes a heuristic decision is obviously implementation dependant. Likewise, the choice the participant makes (to commit or to roll back) will depend upon the implementation and possibly the application/environment in which it finds itself. The possible heuristic outcomes are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Heuristic rollback: the commit operation failed because some or all of the participants unilaterally rolled back the transaction.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Heuristic commit: an attempted rollback operation failed because all of the participants unilaterally committed. This may happen if, for example, the coordinator was able to successfully prepare the transaction but then decided to roll it back (for example, it could not update its log) but in the meanwhile the participants decided to commit.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Heuristic mixed: some updates (participants) were committed while others were rolled back.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Heuristic hazard: the disposition of some of the updates is unknown. For those which are known, they have either all been committed or all rolled back.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Heuristic decisions should be used with care and only in exceptional circumstances since there is the possibility that the decision will differ from that determined by the transaction service and will thus lead to a loss of integrity in the system. Having to perform resolution of heuristics is something you should try to avoid, either by working with services/participants that don’t cause heuristics, or by using a transaction service that provides assistance in the resolution process.
+	</para>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-A_New_Transaction_Protocol">
+		<title>A New Transaction Protocol</title>
+		<para>
+			Many component technologies offer mechanisms for coordinating ACID transactions based on two-phase commit semantics (i.e., CORBA/OTS, JTS/JTA, MTS/MSDTC). ACID transactions are not suitable for all Web services transactions since:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Classic ACID transactions are predicated on the idea that an organization that develops and deploys applications does so using their own infrastructure, typically an Intranet. Ownership meant transactions operated in a trusted and predictable manner. To assure ACIDity, potentially long-lived locks could be kept on underlying data structures during two-phase commit. Resources could be used for any period of time and released when the transaction was complete. In the Web services arena, these assumptions are no longer valid. One obvious reason is that the owners of data exposed through a Web service will refuse to allow their data to be locked for extended periods since to allow such locks invites denial-of-service.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				All application infrastructures are generally owned by a single party, systems using classical ACID transactions normally assume that participants in a transaction will obey the will of the transaction manager and only infrequently decide to make unilateral decisions which will hamper other participants in a transaction. On the contrary, Web services participating in a transaction can effectively decide to resign from the transaction at any time, and the consumer of the service generally has little in the way of quality of service guarantees to prevent this.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<formalpara id="form-Transactions_Web_Services_Programmers_Guide-Transactions_Overview-Adressing_the_Problems_of_Transactioning_in_Loosely_Coupled_Systems">
+		<title>Adressing the Problems of Transactioning in Loosely Coupled Systems</title>
+		<para>
+			Though extended transaction models which relax the ACID properties have been proposed over the years, to implement these concepts for the Web services architecture WS-T provides a new transaction protocol. XTS is designed to accommodate four underlying requirements inherent in any loosely coupled architecture like Web services:
+		</para>
+	</formalpara>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Ability to handle multiple successful outcomes to a transaction, with the ability to involve operations whose effects may not be isolated or durable;
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Coordination of autonomous parties whose relationships are governed by contracts rather than the dictates of a central design authority;
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Discontinuous service, where parties are anticipated to suffer outages during their lifetime, and coordinated work must be able to survive such outages;
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Interoperation using XML over multiple communication protocols – XTS chooses to use SOAP encoding carried over HTTP for the first release and other SOAP-friendly transports for future releases.
+			</para>
+		</listitem>
+	</itemizedlist>
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,354 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Transactions_Web_Services_Programmers_Guide-WS_C_WS_Atomic_Transaction_and_WS_Business_Activity_Overview">
+	<title>WS-C, WS-Atomic Transaction and WS-Business Activity Overview</title>
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-WS_C_WS_Atomic_Transaction_and_WS_Business_Activity_Overview-Introduction">
+		<title>Introduction</title>
+		<para>
+			This section provides fundamental concepts associated with WS-C, WS-Atomic Transaction and WS-Business Activity. All of these concepts are defined in the WS-C, WS-Atomic Transaction and WS-Business Activity specifications. WS-C, WS-Atomic Transaction and WS-Business Activity principles are discussed throughout this guide.
+		</para>
+		<note>
+			<para>
+				If you are well versed in the WS-C, WS-Atomic Transaction and WS-Business Activity specifications then you may want to just skim through this part of the manual.
+			</para>
+		</note>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-WS_C_WS_Atomic_Transaction_and_WS_Business_Activity_Overview-WS_Coordination">
+		<title>WS-Coordination</title>
+		<para>
+			In general terms, coordination is the act of one entity (known as the coordinator) disseminating information to a number of participants for some domain-specific reason. This reason could be in order to reach consensus on a decision like in a distributed transaction protocol, or simply to guarantee that all participants obtain a specific message, as occurs in a reliable multicast environment. When parties are being coordinated, information known as the coordination context is propagated to tie together operations which are logically part of the same coordinated work or activity. This context information may flow with normal application messages, or may be an explicit part of a message exchange and is specific to the type of coordination being performed.
+		</para>
+		<para>
+			The fundamental idea underpinning WS-Coordination is that there is a generic need for a coordination infrastructure in a Web services environment. The WS-Coordination specification defines a framework that allows different coordination protocols to be plugged-in to coordinate work between clients, services and participants, as shown in Figure 4.
+		</para>
+		<para>
+			At this level, an activity is minimally specified and is simply created, made to run, and then completed.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/WS-C_Architecture.png" format="PNG" />
+			</imageobject>
+			<caption>WS-C architecture</caption>
+		</mediaobject>
+		<para>
+			Whatever coordination protocol is used, and in whatever domain it is deployed, the same generic requirements are present:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Instantiation (or activation) of a new coordinator for the specific coordination protocol, for a particular application instance;
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Registration of participants with the coordinator, such that they will receive that coordinator’s protocol messages during (some part of) the application’s lifetime;
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Propagation of contextual information between Web services that comprise the application;
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					An entity to drive the coordination protocol through to completion.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The first three of these points are directly the concern of WS-Coordination while the fourth is the responsibility of a third-party entity, usually the client application that controls the application as a whole. These four WS-Coordination roles and their interrelationships are shown in Figure 5.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/WS-C_Infrastructure.png" format="PNG" />
+			</imageobject>
+			<caption>WS-C infrastructure</caption>
+		</mediaobject>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Coordination-Activation">
+			<title>Activation</title>
+			<para>
+				The WS-Coordination framework exposes an Activation Service which supports the creation of coordinators for specific protocols and their associated contexts. The process of invoking an activation service is done asynchronously, and so the specification defines both the interface of the activation service itself, and that of the invoking service, so that the activation service can call back to deliver the results of the activation – namely a context that identifies the protocol type and coordinator location. These interfaces are presented in Figure 6, where the activation service has a one-way operation that expects to receive a <code>CreateCoordinationContext</code> message and correspondingly the service that sent the <code>CreateCoordinationContext</code> message expects to be called back with a <code>CreateCoordinationContextResponse</code> message, or informed of a problem via an <code>Error</code> message.
+			</para>
+		</formalpara>
+<screen>
+&lt;!-- Activation Service portType Declaration --&gt;
+&lt;wsdl:portType name="ActivationCoordinatorPortType"&gt;
+	&lt;wsdl:operation name="CreateCoordinationContext"&gt;
+		&lt;wsdl:input 
+		message="wscoor:CreateCoordinationContext"/&gt;
+	&lt;/wsdl:operation&gt;
+&lt;/wsdl:portType&gt;
+	
+&lt;!-- Activation Requester portType Declaration --&gt;
+&lt;wsdl:portType name="ActivationRequesterPortType"&gt;
+	&lt;wsdl:operation 
+		name="CreateCoordinationContextResponse"&gt;
+		&lt;wsdl:input 
+		message="wscoor:CreateCoordinationContextResponse"/&gt;
+	&lt;/wsdl:operation&gt;
+	&lt;wsdl:operation name="Error"&gt;
+		&lt;wsdl:input message="wscoor:Error"/&gt;
+	&lt;/wsdl:operation&gt;
+&lt;/wsdl:portType&gt;\
+</screen>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Coordination-Registration">
+			<title>Registration</title>
+			<para>
+				Once a coordinator has been instantiated and a corresponding context created by the activation service, a Registration Service is created and exposed. This service allows participants to register to receive protocol messages associated with a particular coordinator. Like the activation service, the registration service assumes asynchronous communication and so specifies WSDL for both registration service and registration requester, as shown below.
+			</para>
+		</formalpara>
+<screen>
+&lt;!-- Registration Service portType Declaration --&gt;
+&lt;wsdl:portType name="RegistrationCoordinatorPortType"&gt;
+	&lt;wsdl:operation name="Register"&gt;
+		&lt;wsdl:input message="wscoor:Register"/&gt;
+	&lt;/wsdl:operation&gt;
+&lt;/wsdl:portType&gt;
+	
+&lt;!-- Registration Requester portType Declaration --&gt;
+&lt;wsdl:portType name="RegistrationRequesterPortType"&gt;
+	&lt;wsdl:operation name="RegisterResponse"&gt;
+		&lt;wsdl:input message="wscoor:RegisterResponse"/&gt;
+	&lt;/wsdl:operation&gt;
+	&lt;wsdl:operation name="Error"&gt;
+		&lt;wsdl:input message="wscoor:Error"/&gt;
+	&lt;/wsdl:operation&gt;
+&lt;/wsdl:portType&gt;
+</screen>
+		<para>
+			When a participant is registered with a coordinator through the registration service, it receives messages that the coordinator sends (for example, “prepare to complete” and “complete” messages if a two-phase protocol is used); where the coordinator’s protocol supports it, participants can also send messages back to the coordinator.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Coordination-Completion">
+			<title>Completion</title>
+			<para>
+				The role of terminator is generally played by the client application, which at an appropriate point will ask the coordinator to perform its particular coordination function with any registered participants – to drive the protocol through to its completion. On completion, the client application may be informed of an outcome for the activity which may vary from simple succeeded/failed notification through to complex structured data detailing the activity’s status.
+			</para>
+		</formalpara>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-WS_C_WS_Atomic_Transaction_and_WS_Business_Activity_Overview-WS_Transaction">
+		<title>WS-Transaction</title>
+		<para>
+			In the past, making traditional transaction systems talk to one another was a holy grail that was rarely achieved. With the advent of Web services, there is an opportunity to leverage an unparalleled interoperability technology to splice together existing transaction processing systems that already form the backbone of enterprise level applications.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-WS_Coordination_Foundations">
+			<title>WS-Coordination Foundations</title>
+			<para>
+				An important aspect of WS-Transaction that differentiates it from traditional transaction protocols is that a synchronous request/response model is not assumed. This model derives from the fact that WS-Transaction is, as shown in the figure below, layered upon the WS-Coordination protocol whose own communication patterns are asynchronous by default.
+			</para>
+		</formalpara>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/WS-Coordination_Foundations.png" format="PNG" />
+			</imageobject>
+			<caption>WS-Coordination WS-Atomic Transaction and WS-Business Activity</caption>
+		</mediaobject>
+		<para>
+			Web Services Coordination provides a generic framework for specific coordination protocols, like WS-Transaction, to be plugged in. Recall that WS-Coordination provides only context management – it allows contexts to be created and activities to be registered with those contexts. WS-Transaction leverages the context management framework provided by WS-Coordination in two ways. Firstly it extends the WS-Coordination context to create a transaction context. Secondly, it augments the activation and registration services with a number of additional services (Completion, CompletionWithAck, PhaseZero, 2PC, OutcomeNotification, BusinessAgreement, and BusinessAgreementWithComplete) and two protocol message sets (one for each of the transaction models supported in WS-Transaction) to build a fully-fledged transaction coordinator on top the WS-Coordination protocol infrastructure.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-WS_Transaction_Architecture">
+			<title>WS-Transaction Architecture</title>
+			<para>
+				WS-Transaction supports the notion of the service and participant as distinct roles, making the distinction between a transaction-aware service and the participants that act on behalf of the service during a transaction: transactional services deal with business-level protocols, while the participants handle the underlying WS-Transaction protocols, as shown above.
+			</para>
+		</formalpara>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/WS-Transaction_Global_View.png" format="PNG" />
+			</imageobject>
+			<caption>WS-Transaction Global View</caption>
+		</mediaobject>
+		<para>
+			A transaction-aware service encapsulates the business logic or work that is required to be conducted within the scope of a transaction. This work cannot be confirmed by the application unless the transaction also commits and so control is ultimately removed from the application and placed into the transaction’s domain.
+		</para>
+		<para>
+			The participant is the entity that, under the dictates of the transaction coordinator, controls the outcome of the work performed by the transaction-aware Web service. In the figure above each service is shown with one associated participant that manages the transaction protocol messages on behalf of its service, while in the figure below, there is a close-up view of a single service, and a client application with their associated participants.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Transactional_Service_and_Participant.png" format="PNG" />
+			</imageobject>
+			<caption>Transactional Service and Participant</caption>
+		</mediaobject>
+		<para>
+			The transaction-aware Web service and its participant both serve a shared transactional resource, and there is a control relationship between them through some API - which on the Java platform is JAXTX. In the example shown in the figure above, it is assumed that the database is accessed through a transactional JDBC database driver, where SQL statements are sent to the database for processing via that driver, but where those statements will be tentative and only commit if the transaction does. In order to do this, the driver/database will associate a participant with the transaction which will inform the database of the transaction outcome. Since all transactional invocations on the Web service carry a transaction context, the participant working with the database is able to identify the work that the transactional service did within the scope of a specific transaction and either commit or rollback the work.
+		</para>
+		<para>
+			At the client end, things are less complex. Through its API, the client application registers a participant with the transaction through which it controls transaction termination.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-WS_Transaction_Models">
+			<title>WS-Transaction Models</title>
+			<para>
+				Given that traditional transaction models are not appropriate for Web services, the following question must be posed, “what type of model or protocol is appropriate?” The answer to that question is that that no one specific protocol is likely to be sufficient, given the wide range of situations that Web service transactions are likely to be deployed within. Hence the WS-Transaction specification proposes two distinct models, where each supports the semantics of a particular kind of B2B interaction. The following sections shall discuss these two WS-Transaction models.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				As with WS-Coordination, the two WS-Transaction models are extensible allowing implementations to tailor the protocols as they see fit (for example, to suit their deployment environments).
+			</para>
+		</note>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-Atomic_Transactions_AT">
+			<title>Atomic Transactions (AT)</title>
+			<para>
+				An atomic transaction or AT is similar to traditional ACID transactions and intended to support short-duration interactions where ACID semantics are appropriate. Within the scope of an AT, services typically enroll transaction-aware resources, such as databases and message queues, indirectly as participants under the control of the transaction. When the transaction terminates, the outcome decision of the AT is then propagated to each enlisted resource via the participant, and the appropriate commit or rollback actions are taken by each.
+			</para>
+		</formalpara>
+		<para>
+			This protocol is very similar to those employed by traditional transaction systems that already form the backbone of an enterprise. It is assumed that all services (and associated participants) provide ACID semantics and that any use of atomic transactions occurs in environments and situations where this is appropriate: in a trusted domain, over short durations.
+		</para>
+		<para>
+			To begin an atomic transaction, the client application firstly locates a WS-Coordination coordinator Web service that supports WS-Transaction. Once located, the client sends a WS-Coordination CreateCoordinationContext message to the activation service specifying http://schemas.xmlsoap.org/ws/2004/10/wsat as its coordination type and will get back an appropriate WS-Transaction context from the activation service. The response to the CreateCoordinationContext message, the transaction context, has its CoordinationType element set to the WS-Atomic Transaction namespace, http://schemas.xmlsoap.org/ws/2004/10/wsat, and also contains a reference to the atomic transaction coordinator endpoint (the WS-Coordination registration service) where participants can be enlisted.
+		</para>
+		<para>
+			After obtaining a transaction context from the coordinator, the client application then proceeds to interact with Web services to accomplish its business-level work. With each invocation on a business Web service, the client inserts the transaction context into a SOAP header block, such that each invocation is implicitly scoped by the transaction – the toolkits that support WS-Atomic Transaction-aware Web services provide facilities to correlate contexts found in SOAP header blocks with back-end operations.
+		</para>
+		<para>
+			Once all the necessary application level work has been completed, the client can terminate the transaction, with the intent of making any changes to the service state permanent. To do this, the client application first registers its own participant for the Completion protocol. Once registered, the participant can instruct the coordinator either to try to commit or rollback the transaction. When the commit or rollback operation has completed, a status is returned to the participant to indicate the outcome of the transaction.
+		</para>
+		<para>
+			While the completion protocol is straightforward, they hide the fact that in order to resolve to an outcome that several other protocols need to be executed.
+		</para>
+		<para>
+			The first of these protocols is the optional Volatile2PC. The Volatile2PC protocol is the WS-Atomic Transaction equivalent of the synchronization protocol we discussed earlier. It is typically executed where a Web service needs to flush volatile (cached) state, which may be being used to improve performance of an application, to a database prior to the transaction committing. Once flushed, the data will then be controlled by a two-phase aware participant.
+		</para>
+		<para>
+			All Volatile2PC participants are told that the transaction is about to complete (via the prepare message) and they can respond with either the prepared, aborted or readonly message; any failures at this stage will cause the transaction to rollback.
+		</para>
+		<para>
+			After Volatile2PC prepare, the next protocol to execute in WS-Atomic Transaction is Durable2PC. The Durable2PC (an abbreviation of the term two-phase commit) protocol is at the very heart of WS-Atomic Transaction and is used to bring about the necessary consensus between participants in a transaction such that the transaction can safely be terminated.
+		</para>
+		<para>
+			The two-phase commit protocol is used to ensure atomicity between participants, and is based on the classic two-phase commit with presumed abort technique. During the first phase, when the coordinator sends the prepare message, a participant must make durable any state changes that occurred during the scope of the transaction, such that these changes can either be rolled back or committed later. That is, any original state must not be lost at this point as the atomic transaction could still roll back. If the participant cannot prepare then it must inform the coordinator (via the aborted message) and the transaction will ultimately roll back. If the participant is responsible for a service that did not do any work during the course of the transaction, or at least did not do any work that modified any state, it can return the readonly message and it will be omitted from the second phase of the commit protocol. Otherwise, the prepared message is sent by the participant.
+		</para>
+		<para>
+			Assuming no failures occurred during the first phase, in the second phase the coordinator sends the commit message to participants, who will make permanent the tentative work done by their associated services.
+		</para>
+		<para>
+			If a transaction involves only a single participant, WS-Atomic Transaction supports a one-phase commit optimization. Since there is only one participant, its decisions implicitly reach consensus, and so the coordinator need not drive the transaction through both phases. In the optimized case, the participant will simply be told to commit and the transaction coordinator need not record information about the decision since the outcome of the transaction is solely down to that single participant.
+		</para>
+		<para>
+			The figure below<footnote>
+			<para>
+				Redrawn from the WS-Atomic Transaction specification.
+			</para>
+			</footnote> shows the state transitions of a WS-Atomic Transaction and the message exchanges between coordinator and participant; the coordinator generated messages are shown in the solid line, whereas the participant messages are shown by dashed lines.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/Commit_State_Transitions.png" format="PNG" />
+			</imageobject>
+			<caption>Two-Phase Commit State Transitions</caption>
+		</mediaobject>
+		<para>
+			Once the 2PC protocol has finished, the Completion protocol that originally began the termination of the transaction can complete, and inform the client application whether the transaction was committed or rolled back. Additionally, the Volatile2PC protocol may complete.
+		</para>
+		<para>
+			Like the prepare phase of Volatile2PC, the final phase is optional and can be used to inform participants when the transaction has completed, typically so that they can release resources (for example, put a database connection back into the pool of connections).
+		</para>
+		<para>
+			Any registered Volatile2PC participants are invoked after the transaction has terminated and are told the state in which the transaction completed (the coordinator sends either the Committed or Aborted message). Since the transaction has terminated, any failures of participants at this stage are ignored –it is essentially a courtesy, and has no bearing on the outcome of the transaction.
+		</para>
+		<para>
+			Finally, after having gone through each of the stages in an AT, it is possible to see the intricate interweaving of individual protocols that goes to make up the AT as a whole in the following figure.
+		</para>
+		<mediaobject>
+			<imageobject>
+				<imagedata fileref="images/AT_Model.png" format="PNG" />
+			</imageobject>
+			<caption>The AT Model</caption>
+		</mediaobject>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-Business_Activities_BA">
+			<title>Business Activities (BA)</title>
+			<para>
+				Most business-to-business applications require transactional support in order to guarantee consistent outcome and correct execution. These applications often involve long running computations, loosely coupled systems and components that do not share data, location, or administration and it is difficult to incorporate atomic transactions within such architectures. For example, an online bookshop may reserve books for an individual for a specific period of time, but if the individual does not purchase the books within that period they will be “put back onto the shelf” for others to buy. Furthermore, because it is not possible for anyone to have an infinite supply of stock, some online shops may appear to users to reserve items for them, but in fact may allow others to pre-empt that reservation (for instance, the same book may be “reserved” for multiple users concurrently); a user may subsequently find that the item is no longer available, or may have to be reorder!
 ed specially for them.
+			</para>
+		</formalpara>
+		<para>
+			A business activity or BA is designed specifically for these kinds of long-duration interactions, where exclusively locking resources is impossible or impractical. In this model services are requested to do work, and where those services have the ability to undo any work, they inform the BA such that if the BA later decides the cancel the work (for instance if the business activity suffers a failure), it can instruct the service to execute its undo behavior. The key point for Business Activities is that how services do their work and provide compensation mechanisms is not the domain of the WS-Business Activity specification, but an implementation decision for the service provider.
+		</para>
+		<para>
+			The WS- Business Activity simply defines a protocol for Web services-based applications to enable existing business processing and workflow systems to wrap their proprietary mechanisms and interoperate across implementations and business boundaries.
+		</para>
+		<para>
+			A business activity may be partitioned into scopes, where a scope is a business task or unit of work using a collection of Web services. Such scopes can be nested to arbitrary degrees, forming parent and child relationships, where a parent scope has the ability to select which child tasks are to be included in the overall outcome protocol for a specific business activity, and so clearly non-atomic outcomes are possible. In a similar manner to traditional nested transactions, if a child task experiences an error, it can be caught by the parent who may be able to compensate and continue processing.
+		</para>
+		<para>
+			When a child task completes it can either leave the business activity or signal to the parent that the work it has done can be compensated later. In the latter case, the compensation task may be called by the parent should it ultimately need to undo the work performed by the child.
+		</para>
+		<para>
+			Unlike the WS-Atomic Transaction protocol model, where participants inform the coordinator of their state only when asked, a task within a business activity can specify its outcome to the parent directly without waiting for a request. This feature is useful when tasks fail such that the notification can be used by business activity exception handler to modify the goals and drive processing forward without having to meekly wait until the end of the transaction to admit to having failed – a well designed Business Activities should be proactive, if it is to perform well.
+		</para>
+		<para>
+			Underpinning all of this are three fundamental assumptions:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					All state transitions are reliably recorded, including application state and coordination metadata (the record of sent and received messages);
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					All request messages are acknowledged, so that problems are detected as early as possible. This avoids executing unnecessary tasks and can also detect a problem earlier when rectifying it is simpler and less expensive;
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					As with atomic transactions, a response is defined as a separate operation and not as the output of the request. Message input-output implementations will typically have timeouts that are too short for some business activity responses. If the response is not received after a timeout, it is resent. This is repeated until a response is received. The request receiver discards all but one identical request received.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			As with atomic transactions, the business activity model has multiple protocols: <code>BusinessAgreementWithParticipantCompletion</code> and <code>BusinessAgreementWithCoordinatorCompletion</code>. However, unlike the AT protocol which is driven from the coordinator down to participants, this protocol is driven much more from the participants upwards.
+		</para>
+		<para>
+			Under the <code>BusinessAgreementWithParticipantCompletion</code> protocol, a child activity is initially created in the Active state; if it finishes the work it was created to do and no more participation is required within the scope of the BA (such as when the activity operates on immutable data), then the child can unilaterally send an exited message to the parent. However, if the child task finishes and wishes to continue in the BA then it must be able to compensate for the work it has performed. In this case it sends a completed message to the parent and waits to receive the final outcome of the BA from the parent. This outcome will either be a close message, meaning the BA has completed successfully or a compensate message indicating that the parent activity requires that the child task reverse its work.
+		</para>
+		<para>
+			The <code>BusinessAgreementWithCoordinatorCompletion</code> protocol is identical to the <code>BusinessAgreementWithParticipantCompletion</code> protocol with the exception that the child cannot autonomously decide to end its participation in the business activity, even if it can be compensated. Rather the child task relies upon the parent to inform it when the child has received all requests for it to perform work which the parent does by sending the complete message to the child. The child then acts as it does in the <code>BusinessAgreementWithParticipantCompletion</code> protocol.
+		</para>
+		<para>
+			The crux of the BA model compared to the AT model is that is allows the participation of services that cannot or will not lock resources for extended periods.
+		</para>
+		<para>
+			While the full ACID semantics are not maintained by a BA, consistency can still be maintained through compensation, though the task of writing correct compensating actions (and thus overall system consistency) is delegated to the developers of the services under control of the BA. Such compensations may use backward error recovery, but will typically employ forward recovery.
+		</para>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-Application_Messages">
+			<title>Application Messages</title>
+			<para>
+				Application messages are the requests and responses that are sent between parties that constitute the work of a business process. Any such messages are considered opaque by XTS, and there is no mandatory message format, protocol binding, or encoding style so the developer is free to use any appropriate Web services protocol. In XTS, the transaction context is propagated within the headers of SOAP messages.
+			</para>
+		</formalpara>
+		<note>
+			<para>
+				XTS provides out-of-box support for service developers building WS-T-aware services on the JBoss, Weblogic and Glue platforms1. The provision of interceptors for automatic context handling at both client and service significantly simplifies the developer’s workload, allowing the developer to concentrate on writing the business logic without having to worry about the transactional infrastructure getting in the way. The interceptors simply add and remove context elements to application messages without altering the semantics of those messages. Any service which understands what to do with a WS-C context can use it, services which do not understand the context (those services that are not WS-C, WS-Atomic Transaction and WS-Business Activity-aware) may ignore the context; the important point here is that XTS manages contexts without user intervention.
+			</para>
+		</note>
+		<formalpara id="form-Transactions_Web_Services_Programmers_Guide-WS_Transaction-WS_C_WS_Atomic_Transaction_and_WS_Business_Activity_Messages">
+			<title>WS-C, WS-Atomic Transaction and WS-Business Activity Messages</title>
+			<para>
+				Although the application or service developer rarely sees or is interested in the messages exchanged by the transactional infrastructure (the transaction manager and any participants), it is useful to understand what kinds of exchanges occur so that the underlying model can be fitted in to an overall architecture.
+			</para>
+		</formalpara>
+		<para>
+			In XTS, WS-C, WS-Atomic Transaction and WS-Business Activity-specific messages are transported using SOAP messaging over HTTP. The types of messages that are propagated include instructions to perform standard transaction operations like begin, prepare.
+		</para>
+		<note>
+			<para>
+				XTS messages do not interfere in any way, shape, or form, with the application messages, and nor is there any requirement for an application to use the same transport as the transaction-specific messages. For example, it is quite reasonable for a client application to deliver its application-specific messages using SOAP RPC over SMTP even though under the covers the XTS messages are delivered using a different mechanism.
+			</para>
+		</note>
+	</section>
+	
+	<section id="sect-Transactions_Web_Services_Programmers_Guide-WS_C_WS_Atomic_Transaction_and_WS_Business_Activity_Overview-Summary">
+		<title>Summary</title>
+		<para>
+			XTS provides a coordination infrastructure designed to allow transactions to run between enterprises across the Internet. That infrastructure is based on the WS-C, WS-Atomic Transaction and WS-Business Activity specifications. It supports two kinds of transactions: atomic transactions and business activities, which can be combined in arbitrary ways to map elegantly onto the transactional requirements of the underlying problem. The use of the whole infrastructure is simple due to the fact that its functionality is exposed through a simple transactioning API. Furthermore XTS provides all of the necessary plumbing to keep application and transactional aspects of an application separate, and to ensure that the transactionality of a system does not interfere with the functional aspects of the system itself.
+		</para>
+	</section>
+
+</chapter>
+

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/AT_Model.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/AT_Model.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Back-End_Integration.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Back-End_Integration.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_Protocol.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_Protocol.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_State_Transitions.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_State_Transitions.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Flow.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Flow.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Handlers.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Handlers.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Transaction_Control.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Transaction_Control.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Transactional_Service_and_Participant.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Transactional_Service_and_Participant.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Architecture.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Architecture.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Infrastructure.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Infrastructure.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Coordination_Foundations.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Coordination_Foundations.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Transaction_Global_View.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Transaction_Global_View.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Web_Services.png
===================================================================
(Binary files differ)


Property changes on: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/Web_Services.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Author_Group.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Author_Group.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Red Hat Documentation Group</firstname> <surname></surname>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Book_Info.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Book_Info.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,46 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Transactions Web Services Programmers Guide CP07"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 7"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid "This book is about Programming for Transaction Web Services"
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:20
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:26
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Getting_Started.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Getting_Started.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Getting_Started.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,192 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Getting_Started.xml:6
+#, no-c-format
+msgid "Getting Started"
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:8
+#, no-c-format
+msgid "Creating and deploying participants"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:9
+#, no-c-format
+msgid ""
+"A participant is a software entity which is driven by the transaction "
+"manager on behalf of a Web service. The creation of participants is non-"
+"trivial since they ultimately reflect the state of a Web service’s back-end "
+"processing facilities which is a function of an enterprise’s own IT "
+"infrastructure. The most that can be said about the implementation of a "
+"participant without getting into detail about the back-end systems it "
+"represents, or the details of the underlying transaction protocol is that "
+"implementations must implement one of the following interfaces, depending "
+"upon the protocol it will participate within: <code>com.arjuna.wst."
+"Durable2PCParticipant</code>, <code>com.arjuna.wst.Volatile2PCParticipant</"
+"code>, or, <code>com.arjuna.wst."
+"BusinessAgreementWithParticipantCompletionParticipant</code>, <code>com."
+"arjuna.wst.BusinessAgreementWithCoordinatorCompletionParticipant</code>."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:15
+#, no-c-format
+msgid "Creating Client Applications"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:16
+#, no-c-format
+msgid ""
+"There are two aspects to a client application using XTS. The first is the "
+"transaction declaration aspects and the second is the business logic that "
+"the client application performs. The transaction declaration aspects are "
+"taken care of automatically with XTS’s client API. This API provides simple "
+"transaction directives like begin, commit, and rollback which the client "
+"application can use to initialize, manage, and terminate transactions. Under "
+"the covers, this API invokes (via SOAP) operations on the transaction "
+"manager."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:19
+#, no-c-format
+msgid ""
+"When the client application performs invocations on business logic Web "
+"services, then XTS does not dictate an API for that purpose. However, there "
+"is a requirement that whatever API is chosen, the XTS context be inserted "
+"onto outgoing messages, and extracted and associated with the current thread "
+"for incoming messages. To make the user’s life easier, the XTS software "
+"comes complete with three sets of “filters” which can perform the task "
+"automatically. These filters are designed to work with JAX-RPC and "
+"webMethods client libraries."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:23
+#, no-c-format
+msgid ""
+"If the user chooses to use a different SOAP client infrastructure, then the "
+"onus to perform client-side header processing rests with them. XTS does not "
+"provide client-side infrastructure for anything other than JAX-RPC or "
+"webMethods for this release."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:28
+#, no-c-format
+msgid "JAX-RPC Context Handlers"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:29
+#, no-c-format
+msgid ""
+"In order to register the JAX-RPC server-side context handler with the "
+"deployed web services, a handler chain must be included in the web services "
+"deployment descriptor. Please refer to the demo application <filename>jboss/"
+"webservices.xml</filename> deployment descriptor for an example of how this "
+"can be achieved."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:33
+#, no-c-format
+msgid ""
+"In order to register the JAX-RPC client-side context handler used by the "
+"client applications, a handler chain must be included in the definition of "
+"the service-ref in the client web.xml deployment descriptor. Please refer to "
+"the demo application <filename>jboss/client-web-app.xml</filename> for an "
+"example of how this can be achieved."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:37
+#, no-c-format
+msgid "webMethods Context Handlers"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:38
+#, no-c-format
+msgid ""
+"In order to register the webMethods server-side context handler with the "
+"deployed web services, the inbound and outbound interceptors must be "
+"configured in the web services deployment descriptor. An example of how this "
+"can be configured can be found in the demo application, for example, the "
+"<filename>RestaurantServiceAT.xml</filename>."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:42
+#, no-c-format
+msgid ""
+"In order to register the webMethods client-side context handler, the inbound "
+"and outbound interceptors must be configured in the <filename>glue-config."
+"xml</filename> deployment descriptor. Please refer to the soap interceptor "
+"section of the demo application glue-config.xml for an example of how this "
+"can be achieved."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:48
+#, no-c-format
+msgid "Hints and tips"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:49
+#, no-c-format
+msgid ""
+"If you want to create multiple JBoss deploys on the same machine, then you "
+"may wish to look at <ulink url=\"http://www.yorku.ca/dkha/jboss/docs/"
+"MultipleInstances.htm\"><emphasis>Setting up multiple instances</emphasis></"
+"ulink> for information on what is required."
+msgstr ""
+
+#. Tag: title
+#: Getting_Started.xml:55
+#, no-c-format
+msgid "Summary"
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:56
+#, no-c-format
+msgid ""
+"This chapter has provided a high-level overview of how to use each of the "
+"major software pieces of the Web Services transactions component of JBossTS. "
+"The Web Services transaction manager provided by JBossTS is the hub of the "
+"architecture and is the only piece of software that users’ software does not "
+"bind to directly. XTS provides header processing infrastructure for dealing "
+"with Web Services transactions contexts for both users’ client applications "
+"and Web services. For developing transaction participants, XTS provides a "
+"simple interface plus the necessary document handling code."
+msgstr ""
+
+#. Tag: para
+#: Getting_Started.xml:59
+#, no-c-format
+msgid ""
+"This chapter is meant as an overview only, and is unlikely to answer "
+"questions on more difficult and subtle aspects. For fuller explanations of "
+"the components, please refer to the appropriate chapter elsewhere in this "
+"document."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Introduction.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Introduction.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Introduction.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,274 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Introduction.xml:6
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: title
+#: Introduction.xml:8
+#, no-c-format
+msgid "JBossTS Web Services transactions overview"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:9
+#, no-c-format
+msgid ""
+"The XML transaction service component of JBossTS (shorthand referred to as "
+"XTS) supports the coordination of private and public Web services in a "
+"business transaction. Therefore, to understand XTS, you must be familiar "
+"with Web services, and also understand a little about transactions. This "
+"chapter introduces XTS and provides a brief overview of the technologies "
+"that form the Web services standard. Additionally, this chapter explores "
+"some of the fundamentals of transactioning technology and how it can be "
+"applied to Web services. Much of the content presented in this chapter is "
+"detailed throughout this guide; however, only overview information about Web "
+"services is provided. If you are new to creating Web services, please see "
+"consult your Web services platform documentation."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:12
+#, no-c-format
+msgid ""
+"JBossTS provides as the XTS component a transaction solution for Web "
+"services. Using XTS, business partners can coordinate complex business "
+"transactions in a controlled and reliable manner. The JBossTS Web Services "
+"API supports a transactional coordination model based on the WS-C, WS-Atomic "
+"Transaction and WS-Business Activity specifications. WS-C is a generic "
+"coordination framework developed by IBM, Microsoft and BEA, WS-Atomic "
+"Transaction and WS-Business Activity are transaction protocols that utilize "
+"this framework."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:15
+#, no-c-format
+msgid ""
+"Web services are modular, reusable software components that are created by "
+"exposing business functionality through a Web service interface. Web "
+"services communicate directly with other Web services using standards-based "
+"technologies such as SOAP and HTTP. These standards-based communication "
+"technologies allow Web services to be accessed by customers, suppliers, and "
+"trading partners, independent of hardware operation system or programming "
+"environment. The result is a vastly improved collaboration environment as "
+"compared to today&#39;s EDI and business-to-business (B2B) solutions—an "
+"environment where businesses can expose their current and future business "
+"applications as Web services that can be easily discovered and accessed by "
+"external partners."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:18
+#, no-c-format
+msgid ""
+"Web services, by themselves, are not fault tolerant. In fact, some of the "
+"reasons that make it an attractive development solution are also the same "
+"reasons that service-based applications may have drawbacks:"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:23
+#, no-c-format
+msgid ""
+"Application components that are exposed as Web services may be owned by "
+"third parties, which provides benefits in terms of cost of maintenance, but "
+"drawbacks in terms of having exclusive control over their behavior;"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:28
+#, no-c-format
+msgid ""
+"Web services are usually remotely located which increases risk of failure "
+"due to increased network travel for invocations."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:33
+#, no-c-format
+msgid ""
+"Applications that have high dependability requirements, must find a method "
+"of minimizing the effects of errors that may occur when an application "
+"consumes Web services. One method of safeguarding against such failures is "
+"to interact with an application’s Web services within the context of a "
+"transaction. A transaction is simply a unit of work which is completed "
+"entirely, or in the case of failures is reversed to some agreed consistent "
+"state – normally to appear as if the work had never occurred in the first "
+"place. With XTS, transactions can span multiple Web services which mean that "
+"work performed across multiple enterprises can be managed with transactional "
+"support."
+msgstr ""
+
+#. Tag: title
+#: Introduction.xml:37
+#, no-c-format
+msgid "Managing Service-Based Processes"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:38
+#, no-c-format
+msgid ""
+"XTS allows you to create transactions that drive complex business processes "
+"spanning multiple Web services. Current Web services standards do not "
+"address the requirements for a high-level coordination of services since in "
+"today’s Web services applications, which use single request/receive "
+"interactions, coordination is typically not a problem. However, for "
+"applications that engage multiple services among multiple business partners, "
+"coordinating and controlling the resulting interactions is essential. This "
+"becomes even more apparent when you realize that you generally have little "
+"in the way of formal guarantees when interacting with third-party Web "
+"services."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:42
+#, no-c-format
+msgid ""
+"XTS provides the infrastructure for coordinating services during a business "
+"process. By organizing processes as transactions, business partners can "
+"collaborate on complex business interactions in a reliable manner, insuring "
+"the integrity of their data - usually represented by multiple changes to a "
+"database – but without the usual overheads and drawbacks of directly "
+"exposing traditional transaction-processing engines directly onto the web. "
+"The following example demonstrates how an application may manage service-"
+"based processes as transactions:"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:45
+#, no-c-format
+msgid ""
+"The application in question allows a user to plan a social evening. This "
+"application is responsible for reserving a table at a restaurant, and "
+"reserving tickets to a show. Both activities are paid for using a credit "
+"card. In this example, each service represents exposed Web services provided "
+"by different service providers. XTS is used to envelop the interactions "
+"between the theater and restaurant services into a single (potentially) long-"
+"running business transaction. The business transaction must insure that "
+"seats are reserved both at the restaurant and the theater. If one event "
+"fails the user has the ability to decline both events, thus returning both "
+"services back to their original state. If both events are successful, the "
+"user’s credit card is charged and both seats are booked. As you may expect, "
+"the interaction between the services must be controlled in a reliable manner "
+"over a period of time. In addition, management must span several third-party "
+"services that are remotely deployed."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:49
+#, no-c-format
+msgid ""
+"Without the backing of a transaction, an undesirable outcome may occur. For "
+"example, the user credit card may be charged, even though one or both of the "
+"bookings may have failed."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:53
+#, no-c-format
+msgid ""
+"This simple example describes the situations where XTS excels at supporting "
+"business processes across multiple enterprises. This example is further "
+"refined throughout this guide, and appears as a standard demonstrator "
+"(including source code) with the XTS distribution."
+msgstr ""
+
+#. Tag: title
+#: Introduction.xml:57
+#, no-c-format
+msgid "Servlets"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:58
+#, no-c-format
+msgid ""
+"The WS-C, WS-Atomic Transaction and WS-Business Activity protocols are based "
+"on one-way interactions of entities rather than traditional synchronous "
+"request/response RPC style interactions. Entities (for example, transaction "
+"participants) invoke operations on other entities (for example, the "
+"transaction coordinator) in order to return responses to requests. What this "
+"means is that the programming model is based on peer-to-peer relationships, "
+"with the result that all services, whether they are participants, "
+"coordinators or clients, must have an active component that allows them to "
+"receive unsolicited messages."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:62
+#, no-c-format
+msgid ""
+"In the current implementation of XTS, the active component is achieved "
+"through the use of Java servlet technology. Each endpoint that can be "
+"communicated with via SOAP/XML is represented as a servlet (and published "
+"within JNDI). Fortunately for the developer, this use of servlets occurs "
+"transparently. The only drawback is that (currently) clients must reside "
+"within a domain capable of hosting servlets, i.e., an application server. It "
+"is our intention that future versions of XTS will provide configurable "
+"deployment options, allowing servlets where required, but not mandating them."
+msgstr ""
+
+#. Tag: title
+#: Introduction.xml:66
+#, no-c-format
+msgid "SOAP"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:67
+#, no-c-format
+msgid ""
+"SOAP has emerged as the de-facto message format for XML-based communication "
+"in the Web services arena. It is a lightweight protocol that allows the user "
+"to define the content of a message and to provide hints as to how recipients "
+"should process that message."
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:71
+#, no-c-format
+msgid ""
+"SOAP messages can be divided into two main categories: Remote Procedure Call "
+"(RPC) and Document Exchange (DE). The primary difference between the two "
+"categories is that the SOAP specification defines encoding rules and "
+"conventions for RPC. The document exchange model allows the exchange of "
+"arbitrary XML documents - a key ingredient of B2B document exchange. XTS is "
+"based on the loosely coupled document-exchange style, yet it can support "
+"transactions spanning Web service that use either document-exchange or RPC."
+msgstr ""
+
+#. Tag: title
+#: Introduction.xml:75
+#, no-c-format
+msgid "Web Services Description Language (WSDL)"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:76
+#, no-c-format
+msgid ""
+"WSDL is an XML-based language used to define Web service interfaces. An "
+"application that consumes a Web service parses the service’s WSDL document "
+"to discover the location of the service, the operations that the service "
+"supports, the protocol bindings the service supports (SOAP, HTTP, etc), and "
+"how to access them (for each operation, WSDL describes the format that the "
+"client must follow)."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/JBoss_Transactions_Web_Services_Programmers_Guide_CP07.pot
===================================================================

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Participants.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Participants.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Participants.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,458 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Participants.xml:6
+#, no-c-format
+msgid "Test"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:7
+#, no-c-format
+msgid "This is a test paragraph"
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:11
+#, no-c-format
+msgid "The Participant: an Overview"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:12
+#, no-c-format
+msgid ""
+"The participant is the entity that performs the work pertaining to "
+"transaction management on behalf of the business services involved in an "
+"application. The Web service (for example, a theatre booking system) "
+"contains some business logic for reserving a seat, enquiring availability "
+"etc, but it will need to be supported by something that maintains "
+"information in a durable manner. Typically this will be a database, but it "
+"could be a file system, NVRAM, etc. Now, although the service may talk to "
+"the back-end database directly, it cannot commit or undo any changes it (the "
+"services) makes, since these are ultimately under the control of the "
+"transaction that scoped the work. In order for the transaction to be able to "
+"exercise this control, it must have some contact with the database. In XTS "
+"this is accomplished by the participant, and the role played by the "
+"participant between the transaction and back-end transaction processing "
+"infrastructure is shown in the following figure."
+msgstr ""
+
+#. Tag: caption
+#: Participants.xml:19
+#, no-c-format
+msgid "Transactions, Participants, and Back-End Transaction Control"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:21
+#, no-c-format
+msgid ""
+"Each participant in XTS is related to either the Atomic Transaction or "
+"Business Activity protocols. In the following sections we’ll consider both "
+"protocols and their respective participants."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:25
+#, no-c-format
+msgid "Atomic Transaction"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:26
+#, no-c-format
+msgid ""
+"All Atomic Transaction participants are instances of one of the following "
+"interfaces."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:31
+#, no-c-format
+msgid "Durable2PCParticipant"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:32
+#, no-c-format
+msgid ""
+"This participant supports the WS-Atomic Transaction Durable2PC protocol with "
+"the following signatures, as per the <interfacename>com.arjuna.wst."
+"Durable2Participant</interfacename> interface:"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:38
+#, no-c-format
+msgid ""
+"<emphasis>prepare</emphasis>: the participant should perform any work "
+"necessary to allow it to either commit or rollback the work performed by the "
+"Web service under the scope of the transaction. The implementation is free "
+"to do whatever it needs to in order to fulfill the implicit contract between "
+"it and the coordinator. The participant is expected to indicate whether it "
+"can prepare or not by returning an instance of the <code>com.arjuna.wst."
+"Vote</code>. Values are: <code>ReadOnly</code>, indicating the participant "
+"does not need to be informed of the transaction outcome as no state updates "
+"were made; Prepared, indicating the participant is prepared to commit or "
+"rollback depending on the final transaction outcome, and it has made "
+"sufficient state updates persistent to accomplish this; and Aborted, "
+"indicating the participant has aborted and the transaction should also "
+"attempt to do so."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:43 Participants.xml:81
+#, no-c-format
+msgid ""
+"<emphasis>commit</emphasis>: the participant should make permanent the work "
+"that it controls. What it does will depend upon its implementation, for "
+"example, commit the reservation of the theatre ticket. The participant will "
+"then return an indication of whether or not it succeeded."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:48 Participants.xml:86
+#, no-c-format
+msgid ""
+"<emphasis>rollback</emphasis>: the participant should undo the work that it "
+"controls. The participant will then return an indication of whether or not "
+"it succeeded."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:53 Participants.xml:91
+#, no-c-format
+msgid ""
+"<emphasis>commitOnePhase</emphasis>: if there is only a single "
+"TwoPCParticipant registered with the transaction, then the coordinator can "
+"optimize the protocol and simply tell the participant to commit: there is no "
+"need for a preparatory phase since consensus is implicit."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:58 Participants.xml:96
+#, no-c-format
+msgid ""
+"<emphasis>unknown</emphasis>: during recovery the participant can inquire as "
+"to the status of the transaction it was registered with. If that transaction "
+"is no longer available (has rolled back) then this operation will be invoked "
+"by the coordination service."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:63 Participants.xml:101
+#, no-c-format
+msgid ""
+"<emphasis>error</emphasis>: during recovery the participant can enquire as "
+"to the status of the transaction it was registered with. If an error occurs "
+"(for example, the transaction service is unavailable) then this operation "
+"will be invoked."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:69
+#, no-c-format
+msgid "Volatile2PCParticipant"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:70
+#, no-c-format
+msgid ""
+"This participant supports the WS-Atomic Transaction Volatile2PC protocol "
+"with the following signatures, as per the <interfacename>com.arjuna.wst."
+"Volatile2Participant</interfacename> interface:"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>prepare</emphasis>: the participant should perform any work "
+"necessary to allow it to either commit or rollback the work performed by the "
+"Web service under the scope of the transaction. The implementation is free "
+"to do whatever it needs to in order to fulfill the implicit contract between "
+"it and the coordinator. The participant is expected to indicate whether it "
+"can prepare or not by returning an instance of the com.arjuna.wst.Vote. "
+"Values are: ReadOnly, indicating the participant does not need to be "
+"informed of the transaction outcome as no state updates were made; Prepared, "
+"indicating the participant is prepared to commit or rollback depending on "
+"the final transaction outcome, and it has made sufficient state updates "
+"persistent to accomplish this; and Aborted, indicating the participant has "
+"aborted and the transaction should also attempt to do so."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:107
+#, no-c-format
+msgid "Business Activity"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:108
+#, no-c-format
+msgid ""
+"All Business Activity participants are instances of the following interfaces."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:113
+#, no-c-format
+msgid "BusinessAgreementWithParticipantCompletion"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:114
+#, no-c-format
+msgid ""
+"This participant supports the WS-T "
+"<code>BusinessAgreementWithParticipantCompletion</code> protocol with the "
+"following signatures, as per the <interfacename>com.arjuna.wst."
+"BusinessAgreementWithParticipantCompletionParticipant</interfacename> "
+"interface:"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:120 Participants.xml:158
+#, no-c-format
+msgid ""
+"<emphasis>close</emphasis>: the transaction has completed successfully. The "
+"participant previously informed the coordinator that it was ready to "
+"complete."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:125
+#, no-c-format
+msgid ""
+"<emphasis>cancel</emphasis>: the transaction has canceled, and the "
+"participant should undo any work. The participant cannot have informed the "
+"coordinator that it has completed."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:130 Participants.xml:168
+#, no-c-format
+msgid ""
+"<emphasis>compensate</emphasis>: the transaction has canceled. The "
+"participant previously informed the coordinator that it had finished work "
+"but could compensate later if required, so it is now requested to do so."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:135 Participants.xml:178
+#, no-c-format
+msgid "<emphasis>status</emphasis>: return the status of the participant."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:140 Participants.xml:183
+#, no-c-format
+msgid ""
+"<emphasis>unknown</emphasis>: if the participant inquires as to the status "
+"of the transaction it was registered with and that transaction is no longer "
+"available (has rolled back) then this operation will be invoked by the "
+"coordination service."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:145 Participants.xml:188
+#, no-c-format
+msgid ""
+"<emphasis>error</emphasis>: if the participant enquired as to the status of "
+"the transaction it was registered with and an error occurs (for example, the "
+"transaction service is unavailable) then this operation will be invoked."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:151
+#, no-c-format
+msgid "BusinessAgreementWithCoordinatorCompletion"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:152
+#, no-c-format
+msgid ""
+"This participant supports the WS-T "
+"<code>BusinessAgreementWithCoordinatorCompletion</code> protocol with the "
+"following signatures, as per the <interfacename>com.arjuna.wst."
+"BusinessAgreementWithCoordinatorCompletionParticipant</interfacename> "
+"interface:"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:163
+#, no-c-format
+msgid ""
+"<emphasis>cancel</emphasis>: the transaction has canceled, and the "
+"participant should undo any work."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:173
+#, no-c-format
+msgid ""
+"<emphasis>complete</emphasis>: the coordinator is informing the participant "
+"that all work it needs to do within the scope of this business activity has "
+"been received."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:194
+#, no-c-format
+msgid "BAParticipantManager"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:195
+#, no-c-format
+msgid ""
+"In order for the Business Activity protocol to work correctly, the "
+"participants must be able to autonomously signal the coordinator that they "
+"have left the activity (exited) or are ready to complete and (if necessary) "
+"compensate (completed). Unlike the Atomic Transaction protocol, where all "
+"interactions between the coordinator and participants are instigated by the "
+"coordinator when the transaction terminates, this interaction pattern "
+"requires the participant to be able to talk to the coordinator at any time "
+"during the lifetime of the business activity."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:199
+#, no-c-format
+msgid ""
+"As such, whenever a participant is registered with a business activity, it "
+"receives a handle on the coordinator. This handle is an instance of the "
+"<interfacename>BAParticipantManager</interfacename> interface, located in "
+"<code>com.arjuna.wst.BAParticipantManager</code>, with the following methods:"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:204
+#, no-c-format
+msgid ""
+"<emphasis>exit</emphasis>: the participant has exited the business activity. "
+"The participant uses this to inform the coordinator that is has left the "
+"activity. It will not be informed when (and how) the business activity "
+"terminates."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:209
+#, no-c-format
+msgid ""
+"<emphasis>completed</emphasis>: the participant has completed it works, but "
+"wishes to continue in the business activity, so that it will eventually be "
+"told when (and how) the activity terminates. The participant may later be "
+"asked to compensate for the work it has done."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:214
+#, no-c-format
+msgid ""
+"<emphasis>fault</emphasis>: the participant encountered an error during "
+"normal activation and has compensated. This places the business activity "
+"into a mandatory cancel-only mode."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:222
+#, no-c-format
+msgid "Participant Creation and Deployment"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:223
+#, no-c-format
+msgid ""
+"As has been shown, the participant provides the plumbing that drives the "
+"transactional aspects of the service. This section discusses the specifics "
+"of Participant programming and usage."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:227
+#, no-c-format
+msgid "Implementing Participants"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:228
+#, no-c-format
+msgid ""
+"Implementing a participant is, in theory, a relatively straightforward task, "
+"though depending on the complexity of the transactional infrastructure that "
+"the participant is to manage, the actual size and complexity of a "
+"participant will vary. The participant interfaces can be found under "
+"<code>com.arjuna.wst</code>. Your implementation must implement one of these "
+"interfaces."
+msgstr ""
+
+#. Tag: title
+#: Participants.xml:233
+#, no-c-format
+msgid "Deploying Participants"
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:234
+#, no-c-format
+msgid ""
+"In order to allow Participants to be located remote from the Transaction "
+"Manager, XTS includes transparent message routing functionality. The "
+"Participant classes are not exposed directly as web services, but rather "
+"registered with a web service which receives messages from the Transaction "
+"Manager and maps them to appropriate method invocations on the relevant "
+"Participant instance. Transactional web services will typically enroll a new "
+"Participant instance of the desired type for each new transaction. A unique "
+"identifier must be provided at enrollment time and will be used to map "
+"transaction protocol messages to the appropriate participant instance. Note "
+"that Participant method invocations do not occur in a specific transaction "
+"context. Therefore, if your Participant implementation requires knowledge of "
+"the transaction context (for example, to look up state information in a "
+"persistent store) then you should provide this to the Participant instance, "
+"typically as an argument to the constructor function. Sample Participant "
+"implementations and usage can be found in the demonstration application "
+"included with XTS."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:238
+#, no-c-format
+msgid ""
+"Any application code which creates and enrolls Participants must be deployed "
+"along with the parts of XTS necessary for receiving and processing incoming "
+"messages from the Transaction Manager. This typically means including the "
+"appropriate XTS .jar, .wsr and .war files in your application. If you are "
+"deploying your application only a server which does not already contain a "
+"Transaction Manger installation, you will also need to deploy the XTS "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: Participants.xml:242
+#, no-c-format
+msgid ""
+"In early access releases of the XTS product, the Transaction Manager and "
+"participant management functions are not provided as separable components. "
+"Configuration and deployment of the participant infrastructure is therefore "
+"as in the Transaction Manger section above. More flexible deployment of the "
+"XTS components will be available in the final release."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Preface.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Preface.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Revision_History.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Revision_History.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Stand-alone_Coordinator.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Stand-alone_Coordinator.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Stand-alone_Coordinator.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Stand-alone_Coordinator.xml:6
+#, no-c-format
+msgid "Stand-alone Coordinator"
+msgstr ""
+
+#. Tag: title
+#: Stand-alone_Coordinator.xml:8
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Stand-alone_Coordinator.xml:9
+#, no-c-format
+msgid ""
+"For configuring a stand-alone Web Services transaction coordinator, see the "
+"relevant chapter in the System Administrator’s Guide."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/The_XTS_API.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/The_XTS_API.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/The_XTS_API.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,548 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: The_XTS_API.xml:6
+#, no-c-format
+msgid "The XTS API"
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:8
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:9
+#, no-c-format
+msgid ""
+"This chapter shows how to use the XTS API. This is of use both at the client-"
+"side where applications consume transactional Web services, and at the "
+"service/participant side where transactions need to be coordinated with back-"
+"end systems."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:15
+#, no-c-format
+msgid "API for the Atomic Transaction protocol"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:16
+#, no-c-format
+msgid ""
+"The following classes and interfaces are located within the <package>com."
+"arjuna.wst or com.arjuna.mw.wst</package> packages and sub-packages."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:20
+#, no-c-format
+msgid "Vote"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:21
+#, no-c-format
+msgid ""
+"During the two-phase commit protocol, a participant will be asked to vote on "
+"whether or not it can prepare to confirm the work that it controls. It must "
+"return one of the following subtypes of <code>com.arjuna.wst.Vote</code>:"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:27
+#, no-c-format
+msgid ""
+"<emphasis>Prepared</emphasis>: the participant indicates that it can prepare "
+"if asked to by the coordinator. It will not have committed at this stage "
+"however, since it does not know what the final outcome will be."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:32
+#, no-c-format
+msgid ""
+"<emphasis>Aborted</emphasis>: the participant indicates that it cannot "
+"prepare and has in fact rolled back. The participant should not expect to "
+"get a second phase message."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:37
+#, no-c-format
+msgid ""
+"<emphasis>ReadOnly</emphasis>: the participant indicates that the work it "
+"controls has not made any changes to state that require it to be informed of "
+"the final outcome of the transaction. Essentially the participant is "
+"resigning from the transaction."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:42
+#, no-c-format
+msgid ""
+"Thus a possible implementation of a 2PC participant’s prepare method may "
+"resemble the following:"
+msgstr ""
+
+#. Tag: screen
+#: The_XTS_API.xml:45
+#, no-c-format
+msgid ""
+"public Vote prepare () throws WrongStateException, SystemException\n"
+"{\n"
+"        // Some participant logic here\n"
+"        \n"
+"        if(/* some condition based on the outcome of the business logic */)\n"
+"        {\n"
+"                // Vote to confirm\n"
+"                return new com.arjuna.wst.Prepared();\n"
+"        }\n"
+"        else if(/*some other condition based on the outcome of the business "
+"logic*/)\n"
+"        {\n"
+"                // Resign\n"
+"                return new com.arjuna.wst.ReadOnly();\n"
+"        }\n"
+"        else\n"
+"        {\n"
+"                // Vote to cancel\n"
+"                return new com.arjuna.wst.Aborted();\n"
+"        }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:47
+#, no-c-format
+msgid "The transaction context"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:48
+#, no-c-format
+msgid ""
+"A transaction is typically represented by some unique identifier and a "
+"reference to the coordinator which manages the transaction, for example, a "
+"URL. XTS allows transactions to be nested such that a transaction hierarchy "
+"(tree) may be formed. Thus, a transaction context may be a set of "
+"transactions, with the top-most transaction the root parent (superior)."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:53
+#, no-c-format
+msgid "TxContext"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:54
+#, no-c-format
+msgid ""
+"<code>com.arjuna.mw.wst.TxContext</code> is an opaque representation of a "
+"transaction context."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:60
+#, no-c-format
+msgid ""
+"<emphasis>valid</emphasis>: this indicates whether or not the contents are "
+"valid."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:65
+#, no-c-format
+msgid "<emphasis>equals</emphasis>: can be used to compare two instances."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:71
+#, no-c-format
+msgid "UserTransaction"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:72
+#, no-c-format
+msgid ""
+"The <classname>com.arjuna.wst.UserTransaction</classname> is the class that "
+"most users (for example, clients and services) will see. This isolates them "
+"from the underlying protocol-specific aspects of the XTS implementation. "
+"Importantly, a UserTransaction does not represent a specific transaction, "
+"but rather is responsible for providing access to an implicit per-thread "
+"transaction context; it is similar to the UserTransaction in the JTA "
+"specification. Therefore, all of the UserTransaction methods implicitly act "
+"on the current thread of control."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:76
+#, no-c-format
+msgid ""
+"A new transaction is begun and associated with the invoking thread by using "
+"the begin method. If there is already a transaction associated with the "
+"thread then the <code>WrongStateException</code> exception is thrown. Upon "
+"success, this operation associates the newly created transaction with the "
+"current thread."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:79
+#, no-c-format
+msgid ""
+"The transaction is committed by the commit method. This will execute the "
+"Volatile2PC and Durable2PC protocols prior to returning. If there is no "
+"transaction associated with the invoking thread then "
+"<code>UnknownTransactionException</code> is thrown. If the transaction "
+"ultimately rolls back then the <code>TransactionRolledBackException</code> "
+"is thrown. When complete, this operation disassociates the transaction from "
+"the current thread such that it becomes associated with no transaction."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:82
+#, no-c-format
+msgid ""
+"The <code>rollback</code> operation will terminate the transaction and "
+"return normally if it succeeded, while throwing an appropriate exception if "
+"it didn’t. If there is no transaction associated with the invoking thread "
+"then <code>UnknownTransactionException</code> is thrown."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:86
+#, no-c-format
+msgid "UserTransactionFactory"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:87
+#, no-c-format
+msgid ""
+"UserTransactions are obtained from a <code>UserTransactionFactory</code>."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:92
+#, no-c-format
+msgid "TransactionManager"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:93
+#, no-c-format
+msgid ""
+"The <interfacename>TransactionManager</interfacename> interface represents "
+"the service/container/participant’s (service-side users) typical way in "
+"which to interact with the underlying transaction service implementation. As "
+"with <interfacename>UserTransaction</interfacename> a "
+"<interfacename>TransactionManager</interfacename> does not represent a "
+"specific transaction, but rather is responsible for providing access to an "
+"implicit per-thread transaction context."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:97
+#, no-c-format
+msgid ""
+"A thread of control may require periods of non-transactionality so that it "
+"may perform work that is not associated with a specific transaction. In "
+"order to do this it is necessary to disassociate the thread from any "
+"transactions. The suspend method accomplishes this, returning a "
+"<code>TxContext</code> instance, which is a handle on the transaction. The "
+"thread is then no longer associated with any transaction."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:100
+#, no-c-format
+msgid ""
+"The <methodname>resume</methodname> method can be used to (re-)associate a "
+"thread with a transaction(s) via its <code>TxContext</code>. Prior to "
+"association, the thread is disassociated with any transaction(s) with which "
+"it may be currently associated. If the <code>TxContext</code> is null, then "
+"the thread is associated with no transaction. The "
+"<code>UnknownTransactionException</code> exception is thrown if the "
+"transaction that the <code>TxContext</code> refers to is invalid in the "
+"scope of the invoking thread."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:103
+#, no-c-format
+msgid ""
+"The <methodname>currentTransaction</methodname> method returns the "
+"<code>TxContext</code> for the current transaction, or null if there is "
+"none. Unlike suspend, this method does not disassociate the current thread "
+"from the transaction(s). This can be used to enable multiple threads to "
+"execute within the scope of the same transaction."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:106
+#, no-c-format
+msgid ""
+"In order to register and resign participants with a transaction, the "
+"container or participant must use:"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:111
+#, no-c-format
+msgid ""
+"<emphasis>enlistForVolatileTwoPhase</emphasis>: enlist the specified "
+"participant with current transaction such that it will participate in the "
+"Volatile2PC protocol; a unique identifier for the participant is also "
+"required. If there is no transaction associated with the invoking thread "
+"then the <code>UnknownTransactionException</code> exception is thrown. If "
+"the coordinator already has a participant enrolled with the same identifier, "
+"then <code>AlreadyRegisteredException</code> will be thrown. If the "
+"transaction is not in a state where participants can be enrolled (for "
+"example, it is terminating) then <code>WrongStateException</code> will be "
+"thrown."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:116
+#, no-c-format
+msgid ""
+"<emphasis>enlistForDurableTwoPhase</emphasis>: enlist the specified "
+"participant with current transaction such that it will participate in the "
+"2PC protocol; a unique identifier for the participant is also required. If "
+"there is no transaction associated with the invoking thread then the "
+"<code>UnknownTransactionException</code> exception is thrown. If the "
+"coordinator already has a participant enrolled with the same identifier, "
+"then <code>AlreadyRegisteredException</code> will be thrown. If the "
+"transaction is not in a state where participants can be enrolled (for "
+"example, it is terminating) then <code>WrongStateException</code> will be "
+"thrown."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:122
+#, no-c-format
+msgid "TransactionFactory"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:123
+#, no-c-format
+msgid ""
+"TransactionManagers are obtained from a <code>TransactionFactory</code>."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:130
+#, no-c-format
+msgid "API for the Business Activity protocol"
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:132
+#, no-c-format
+msgid "UserBusinessActivity"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:133
+#, no-c-format
+msgid ""
+"The <classname>com.arjuna.wst.UserBusinessActivity</classname> is the class "
+"that most users (for example, clients and services) will see. This isolates "
+"them from the underlying protocol-specific aspects of the XTS "
+"implementation. Importantly, a <code>UserBusinessActivity</code> does not "
+"represent a specific business activity, but rather is responsible for "
+"providing access to an implicit per-thread activity. Therefore, all of the "
+"<code>UserBusinessActivity</code> methods implicitly act on the current "
+"thread of control."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:137
+#, no-c-format
+msgid ""
+"A new business activity is begun and associated with the invoking thread by "
+"using the begin method. If there is already an activity associated with the "
+"thread then the <code>WrongStateException</code> exception is thrown. Upon "
+"success, this operation associates the newly created activity with the "
+"current thread."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:140
+#, no-c-format
+msgid ""
+"The business activity is completed successfully by the close method. This "
+"will execute the <code>BusinessAgreementWithParticipantCompletion</code> "
+"protocol prior to returning. If there is no activity associated with the "
+"invoking thread then <code>UnknownTransactionException</code> is thrown. If "
+"the activity ultimately cancels then the "
+"<code>TransactionRolledBackException</code> is thrown. When complete, this "
+"operation disassociates the business activity from the current thread such "
+"that it becomes associated with no activity."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:143
+#, no-c-format
+msgid ""
+"The cancel operation will terminate the business activity and return "
+"normally if it succeeded, while throwing an appropriate exception if it "
+"didn’t. If there is no activity associated with the invoking thread then "
+"<code>UnknownTransactionException</code> is thrown. Any participants that "
+"had previously completed will be informed to compensate for their work."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:146
+#, no-c-format
+msgid ""
+"Some participants may have registered for the "
+"<code>BusinessAgreementWithCoordinatorCompletion</code> protocol, which "
+"requires the coordinator or application to inform them when all work that "
+"they need to do within the scope of a business activity has been performed. "
+"The application should therefore use the complete method to inform these "
+"participants."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:150
+#, no-c-format
+msgid "UserBusinessActivityFactory"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:151
+#, no-c-format
+msgid ""
+"UserBusinessActivities are obtained from a "
+"<code>UserBusinessActivityFactory</code>."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:156
+#, no-c-format
+msgid "BusinessActivityManager"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:157
+#, no-c-format
+msgid ""
+"The <interfacename>BusinessActivityManager</interfacename> interface "
+"represents the service/container/participant’s (service-side users) typical "
+"way in which to interact with the underlying business activity service "
+"implementation. As with <interfacename>UserBusinessActivity</interfacename> "
+"a <interfacename>BusinessActivityManager</interfacename> does not represent "
+"a specific activity, but rather is responsible for providing access to an "
+"implicit per-thread activity."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:161
+#, no-c-format
+msgid ""
+"A thread of control may require periods of non-transactionality so that it "
+"may perform work that is not associated with a specific activity. In order "
+"to do this it is necessary to disassociate the thread from any business "
+"activities. The suspend method accomplishes this, returning a "
+"<code>TxContext</code> instance, which is a handle on the activity. The "
+"thread is then no longer associated with any activity."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:164
+#, no-c-format
+msgid ""
+"The <methodname>resume</methodname> method can be used to (re-)associate a "
+"thread with an activity (or activities) via its TxContext. Prior to "
+"association, the thread is disassociated with any activity with which it may "
+"be currently associated. If the <code>TxContext</code> is null, then the "
+"thread is associated with no activity. The "
+"<code>UnknownTransactionException</code> exception is thrown if the business "
+"activity that the TxContext refers to is invalid in the scope of the "
+"invoking thread."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:167
+#, no-c-format
+msgid ""
+"The <methodname>currentTransaction</methodname> method returns the "
+"<code>TxContext</code> for the current business activity, or null if there "
+"is none. Unlike suspend, this method does not disassociate the current "
+"thread from the activity. This can be used to enable multiple threads to "
+"execute within the scope of the same business activity."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:170
+#, no-c-format
+msgid ""
+"In order to register and resign participants with a business activity, the "
+"container or participant must use:"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:175
+#, no-c-format
+msgid ""
+"<emphasis>enlistForBusinessAgreementWithParticipantCompletion</emphasis>: "
+"enlist the specified participant with current business activity such that it "
+"will participate in the <code>BusinessAgreementWithParticipantCompletion</"
+"code> protocol; a unique identifier for the participant is also required. If "
+"there is no business activity associated with the invoking thread then the "
+"<code>UnknownTransactionException</code> exception is thrown. If the "
+"coordinator already has a participant enrolled with the same identifier, "
+"then <code>AlreadyRegisteredException</code> will be thrown. If the activity "
+"is not in a state where participants can be enrolled (for example, it is "
+"terminating) then <code>WrongStateException</code> will be thrown."
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:180
+#, no-c-format
+msgid ""
+"<emphasis>enlistForBusinessAgreementWithCoordinatorCompletion</emphasis>: "
+"enlist the specified participant with current activity such that it will "
+"participate in the <code>BusinessAgreementWithCoordinatorCompletion</code> "
+"protocol; a unique identifier for the participant is also required. If there "
+"is no business activity associated with the invoking thread then the "
+"<code>UnknownTransactionException</code> exception is thrown. If the "
+"coordinator already has a participant enrolled with the same identifier, "
+"then <code>AlreadyRegisteredException</code> will be thrown. If the activity "
+"is not in a state where participants can be enrolled (for example, it is "
+"terminating) then <code>WrongStateException</code> will be thrown."
+msgstr ""
+
+#. Tag: title
+#: The_XTS_API.xml:186
+#, no-c-format
+msgid "BusinessActivityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: The_XTS_API.xml:187
+#, no-c-format
+msgid ""
+"BusinessActivityManagers are obtained from a "
+"<code>BusinessActivityManagerFactory</code>."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactional_Web_Services.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactional_Web_Services.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactional_Web_Services.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,107 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Transactional_Web_Services.xml:6
+#, no-c-format
+msgid "Transactional Web Services"
+msgstr ""
+
+#. Tag: title
+#: Transactional_Web_Services.xml:8
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Transactional_Web_Services.xml:9
+#, no-c-format
+msgid ""
+"This chapter describes how to provide transactional support for new and "
+"existing Web services using the service-side facilities of XTS. It shows how "
+"new services can be made transactional with no additional programming, and "
+"how existing services can be made WS-T transaction-aware in a non-invasive "
+"fashion."
+msgstr ""
+
+#. Tag: title
+#: Transactional_Web_Services.xml:15
+#, no-c-format
+msgid "A Transactional Web Service"
+msgstr ""
+
+#. Tag: para
+#: Transactional_Web_Services.xml:16
+#, no-c-format
+msgid ""
+"A Web service is a business-level entity. It encapsulates application logic "
+"needed to perform some domain-specific task, or is designed to delegate to a "
+"back-end system which executes that logic. Given it is part of application "
+"code, such non-functional requirements as transactionality should not "
+"impinge on its construction."
+msgstr ""
+
+#. Tag: para
+#: Transactional_Web_Services.xml:19
+#, no-c-format
+msgid ""
+"To support this notion, XTS provides a suite of components designed to work "
+"at the SOAP stack level, which deal with transactional matters on behalf of "
+"a Web service without requiring any changes to that service. In XTS two "
+"context handling components are registered with the SOAP server and deal "
+"with context management on behalf of the service without the service having "
+"to worry about context propagation issues itself. This is shown in the "
+"following figure."
+msgstr ""
+
+#. Tag: caption
+#: Transactional_Web_Services.xml:26
+#, no-c-format
+msgid "Context Handlers Registered with the SOAP Server"
+msgstr ""
+
+#. Tag: para
+#: Transactional_Web_Services.xml:28
+#, no-c-format
+msgid ""
+"The detail of the context management that the context processor performs is "
+"unimportant to the Web service application logic, and is orthogonal to any "
+"work performed by any other protocol-specific context handlers too. However "
+"back-end systems which the Web service application logic uses (such as "
+"databases) are often interested in the front-end transaction context such "
+"that any operations invoked within its scope can be mapped onto a back-end "
+"transaction context. This is typically achieved at the back-end by wrapping "
+"a database driver in a veneer which implements both the interface of the "
+"original driver and hooks into the service-side API to access the "
+"transaction context details. The general architecture for this pattern is "
+"shown in the figure below."
+msgstr ""
+
+#. Tag: caption
+#: Transactional_Web_Services.xml:35
+#, no-c-format
+msgid "General Pattern for Back-End Integration, Service Side"
+msgstr ""
+
+#. Tag: para
+#: Transactional_Web_Services.xml:37
+#, no-c-format
+msgid ""
+"The missing element from this is the commit protocol which finally allows "
+"back-end work to be made durable or not at the end of a transaction. This is "
+"covered in the participant chapter where the participant/back-end relation "
+"is explored further."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactions_Overview.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactions_Overview.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/Transactions_Overview.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,655 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Transactions_Overview.xml:6
+#, no-c-format
+msgid "Transactions Overview"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:7
+#, no-c-format
+msgid ""
+"Transactions have emerged as the dominant paradigm for coordinating "
+"interactions between parties in a distributed system, and in particular to "
+"manage applications that require concurrent access to shared data. Much of "
+"the JBossTS Web Service API is based on contemporary transaction APIs whose "
+"familiarity will enhance developer productivity and lessen the learning "
+"curve. While the following section provides the essential information that "
+"you should know before starting to use XTS for building transactional Web "
+"Services, it should not be treated as a definitive reference to all "
+"transactional technology."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:10
+#, no-c-format
+msgid ""
+"A classic transaction is a unit of work that either completely succeeds, or "
+"fails with all partially completed work being undone. When a transaction is "
+"committed, all changes made by the associated requests are made durable, "
+"normally by committing the results of the work to a database. If a "
+"transaction should fail and is rolled back, all changes made by the "
+"associated work are undone. Transactions in distributed systems typically "
+"require the use of a transaction manager that is responsible for "
+"coordinating all of the participants that are part of the transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:13
+#, no-c-format
+msgid ""
+"The main components involved in using and defining transactional Web "
+"Services using XTS are illustrated in Figure 1."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:18
+#, no-c-format
+msgid ""
+"A Transaction Service: The Transaction Service captures the model of the "
+"underlying transaction protocol and coordinates parties affiliated with the "
+"transaction according to that model."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:23
+#, no-c-format
+msgid ""
+"A Transaction API: Provides an interface for transaction demarcation and the "
+"registration of participants."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:28
+#, no-c-format
+msgid ""
+"A Participant: The entity that cooperates with the transaction service on "
+"behalf of its associated business logic."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:33
+#, no-c-format
+msgid ""
+"The Context: Captures the necessary details of the transaction such that "
+"participants can enlist within its scope."
+msgstr ""
+
+#. Tag: caption
+#: Transactions_Overview.xml:42
+#, no-c-format
+msgid "Web Services and XTS"
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:45
+#, no-c-format
+msgid "The Coordinator"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:46
+#, no-c-format
+msgid ""
+"Associated with every transaction is a coordinator, which is responsible for "
+"governing the outcome of the transaction. The coordinator may be implemented "
+"as a separate service or may be co-located with the user for improved "
+"performance. Each coordinator is created by the transaction manager service, "
+"which is in effect a factory for those coordinators."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:50
+#, no-c-format
+msgid ""
+"A coordinator communicates with enrolled participants to inform them of the "
+"desired termination requirements, for instance, whether they should accept "
+"(for example, confirm) or reject (for example, cancel) the work done within "
+"the scope of the given transaction. For example, whether to purchase the "
+"(provisionally reserved) flight tickets for the user or to release them. An "
+"application/client may wish to terminate a transaction in a number of "
+"different ways (for example, confirm or cancel). However, although the "
+"coordinator will attempt to terminate in a manner consistent with that "
+"desired by the client, it is ultimately the interactions between the "
+"coordinator and the participants that will determine the actual final "
+"outcome."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:53
+#, no-c-format
+msgid ""
+"A transaction manager is typically responsible for managing coordinators for "
+"many transactions. The initiator of the transaction (for example, the "
+"client) communicates with a transaction manager and asks it to start a new "
+"transaction and associate a coordinator with the transaction. Once created, "
+"the context can be propagated to Web services in order for them to associate "
+"their work with the transaction."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:57
+#, no-c-format
+msgid "The Transaction Context"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:58
+#, no-c-format
+msgid ""
+"In order for a transaction to span a number of services, certain information "
+"has to be shared between those services in order to propagate information "
+"about the transaction. This information is known as the Context. Using XTS, "
+"the context is automatically propagated and processed by transaction-aware "
+"components of an application. Though XTS removes most of the work associated "
+"with propagating contexts, it is still instructive to understand what "
+"information is captured in a context:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:64
+#, no-c-format
+msgid ""
+"A transaction identifier which guarantees global uniqueness for an "
+"individual transaction;"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:69
+#, no-c-format
+msgid ""
+"The transaction coordinator location or endpoint address so participants can "
+"be enrolled."
+msgstr ""
+
+#. Tag: caption
+#: Transactions_Overview.xml:78
+#, no-c-format
+msgid "Web Services and Context Flow"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:80
+#, no-c-format
+msgid ""
+"As shown in Figure 2, whenever an application message is sent, the XTS "
+"Client API automatically creates a context and embeds it into the message. "
+"Similarly, any transaction-aware services are able to extract that context "
+"using the XTS service-side infrastructure and use it to perform work within "
+"the context of a particular transaction – even though that transaction was "
+"initiated elsewhere on the Web! The value of this approach is that the "
+"business logic contained within the client application and services are not "
+"peppered with transaction-processing code."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:84
+#, no-c-format
+msgid "ACID Transactions"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:85
+#, no-c-format
+msgid ""
+"Traditionally, transaction processing systems support ACID properties. ACID "
+"is an acronym for Atomic, Consistent, Isolated, and Durable. A unit of work "
+"has traditionally been considered transactional only if the ACID properties "
+"are maintained:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:91
+#, no-c-format
+msgid "Atomicity: The transaction executes completely or not at all."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:96
+#, no-c-format
+msgid ""
+"Consistency: The effects of the transaction preserve the internal "
+"consistency of an underlying data structure."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:101
+#, no-c-format
+msgid ""
+"Isolated: The transaction runs as if it were running alone with no other "
+"transactions running and is not visible to other transactions."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:106
+#, no-c-format
+msgid ""
+"Durable: the transaction’s results will not be lost in the event of a "
+"failure."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:112
+#, no-c-format
+msgid "Two-Phase Commit"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:113
+#, no-c-format
+msgid ""
+"The classical two-phase commit approach is the bedrock of JBossTS (and more "
+"generally of Web Services transactions). Two-phase commit provides "
+"coordination of parties that are involved in a transaction. In general, the "
+"flow of a two-phase commit transaction is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:119
+#, no-c-format
+msgid "A transaction is started, and some work is performed."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:124
+#, no-c-format
+msgid "Once the work is finished, the two-phase commit begins."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:129
+#, no-c-format
+msgid ""
+"The coordinator (transaction manager) of the transaction asks each resource "
+"taking part in the transaction whether it is prepared to commit."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:134
+#, no-c-format
+msgid ""
+"If all resources respond positively, the coordinator instructs all work "
+"performed to be made durable (usually committed to a database)."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:139
+#, no-c-format
+msgid ""
+"If not, all work performed is rolled back (undone) such that the underlying "
+"data structures are in their original states."
+msgstr ""
+
+#. Tag: caption
+#: Transactions_Overview.xml:148
+#, no-c-format
+msgid "The Two-Phase Commit Protocol"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:151
+#, no-c-format
+msgid ""
+"During two-phase commit transactions, coordinators and resources keep track "
+"of activity in non-volatile data stores so that they can recover in the case "
+"of a failure."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:156
+#, no-c-format
+msgid "The synchronization protocol"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:157
+#, no-c-format
+msgid ""
+"As well as the two-phase commit protocol, traditional transaction processing "
+"systems employ an additional protocol, often referred to as the "
+"synchronization protocol. If you recall the original ACID properties, then "
+"you’ll remember that Durability is important in the case where state changes "
+"have to be available despite failures. What this means is that applications "
+"interact with a persistence store of some kind (e.g., a database) and this "
+"can impose a significant overhead – disk access is orders of magnitude "
+"slower than access to main computer memory."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:161
+#, no-c-format
+msgid ""
+"One apparently obvious solution to this problem would be to cache the state "
+"in main memory and only operate on that for the duration of a transaction. "
+"Unfortunately you’d then need some way of being able to flush the state back "
+"to the persistent store before the transaction terminates, or risk losing "
+"the full ACID properties. This is what the synchronization protocol does, "
+"with Synchronization participants."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:164
+#, no-c-format
+msgid ""
+"Synchronizations are informed that a transaction is about to commit, so they "
+"can, for example, flush cached state, which may be being used to improve "
+"performance of an application, to a durable representation prior to the "
+"transaction committing. They are then informed when the transaction has "
+"completed and in what state it completed."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:169
+#, no-c-format
+msgid ""
+"Synchronizations essentially turn the two-phase commit protocol into a four-"
+"phase protocol:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:174
+#, no-c-format
+msgid ""
+"Before the transaction starts the two-phase commit, all registered "
+"Synchronizations are informed. Any failure at this point will cause the "
+"transaction to roll back."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:179
+#, no-c-format
+msgid "The coordinator then conducts the normal two-phase commit protocol."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:184
+#, no-c-format
+msgid ""
+"Once the transaction has terminated, all registered Synchronizations are "
+"informed. However, this is a courtesy invocation because any failures at "
+"this stage are ignored: the transaction has terminated so there’s nothing to "
+"affect."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:189
+#, no-c-format
+msgid ""
+"Unlike the two-phase commit protocol, the synchronization protocol does not "
+"have the same failure requirements. For example, Synchronization "
+"participants don’t need to make sure they can recover in the event of "
+"failures; this is because any failure before the two-phase commit protocol "
+"completes means the transaction will roll back, and failures after it has "
+"completed can’t affect the data the Synchronization participants were "
+"managing."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:193
+#, no-c-format
+msgid "Optimizations to the protocol"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:194
+#, no-c-format
+msgid ""
+"There are several variants to the standard two-phase commit protocol that "
+"are worth knowing about because they can have an impact on performance and "
+"failure recovery. We shall briefly describe those that are the most common "
+"variants on the protocol:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:200
+#, no-c-format
+msgid ""
+"Presumed abort: if a transaction is going to roll back then it may simply "
+"record this information locally and tell all enlisted participants. Failure "
+"to contact a participant has no affect on the transaction outcome; the "
+"transaction is effectively informing participants as a courtesy. Once all "
+"participants have been contacted the information about the transaction can "
+"be removed. If a subsequent request for the status of the transaction occurs "
+"there will be no information available and the requestor can assume that the "
+"transaction has aborted (rolled back). This optimization has the benefit "
+"that no information about participants need be made persistent until the "
+"transaction has decided to commit (i.e., progressed to the end of the "
+"prepare phase), since any failure prior to this point will be assumed to be "
+"an abort of the transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:205
+#, no-c-format
+msgid ""
+"One-phase: if there is only a single participant involved in the "
+"transaction, the coordinator need not drive it through the prepare phase. "
+"Thus, the participant will simply be told to commit and the coordinator need "
+"not record information about the decision since the outcome of the "
+"transaction is solely down to the participant."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:210
+#, no-c-format
+msgid ""
+"Read-only: when a participant is asked to prepare, it can indicate to the "
+"coordinator that no information or data that it controls has been modified "
+"during the transaction. Such a participant does not need to be informed "
+"about the outcome of the transaction since the fate of the participant has "
+"no affect on the transaction. As such, a read-only participant can be "
+"omitted from the second phase of the commit protocol."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:216
+#, no-c-format
+msgid "Non-atomic transactions and heuristic outcomes"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:217
+#, no-c-format
+msgid ""
+"In order to guarantee atomicity, the two-phase commit protocol is "
+"necessarily blocking. What this means is that as a result of failures, "
+"participants may remain blocked for an indefinite period of time even if "
+"failure recovery mechanisms exist. Some applications and participants simply "
+"cannot tolerate this blocking."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:221
+#, no-c-format
+msgid ""
+"To break this blocking nature, participants that have got past the prepare "
+"phase are allowed to make autonomous decisions as to whether they commit or "
+"rollback: such a participant must record this decision in case it is "
+"eventually contacted to complete the original transaction. If the "
+"coordinator eventually informs the participant of the transaction outcome "
+"and it is the same as the choice the participant made, then there’s no "
+"problem. However, if it is contrary, then a non-atomic outcome has obviously "
+"happened: a heuristic outcome."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:224
+#, no-c-format
+msgid ""
+"How this heuristic outcome is reported to the application and resolved is "
+"usually the domain of complex, manually driven system administration tools, "
+"since in order to attempt an automatic resolution requires semantic "
+"information about the nature of participants involved in the transactions."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:227
+#, no-c-format
+msgid ""
+"Precisely when a participant makes a heuristic decision is obviously "
+"implementation dependant. Likewise, the choice the participant makes (to "
+"commit or to roll back) will depend upon the implementation and possibly the "
+"application/environment in which it finds itself. The possible heuristic "
+"outcomes are:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:232
+#, no-c-format
+msgid ""
+"Heuristic rollback: the commit operation failed because some or all of the "
+"participants unilaterally rolled back the transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:237
+#, no-c-format
+msgid ""
+"Heuristic commit: an attempted rollback operation failed because all of the "
+"participants unilaterally committed. This may happen if, for example, the "
+"coordinator was able to successfully prepare the transaction but then "
+"decided to roll it back (for example, it could not update its log) but in "
+"the meanwhile the participants decided to commit."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:242
+#, no-c-format
+msgid ""
+"Heuristic mixed: some updates (participants) were committed while others "
+"were rolled back."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:247
+#, no-c-format
+msgid ""
+"Heuristic hazard: the disposition of some of the updates is unknown. For "
+"those which are known, they have either all been committed or all rolled "
+"back."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:252
+#, no-c-format
+msgid ""
+"Heuristic decisions should be used with care and only in exceptional "
+"circumstances since there is the possibility that the decision will differ "
+"from that determined by the transaction service and will thus lead to a loss "
+"of integrity in the system. Having to perform resolution of heuristics is "
+"something you should try to avoid, either by working with services/"
+"participants that don’t cause heuristics, or by using a transaction service "
+"that provides assistance in the resolution process."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:256
+#, no-c-format
+msgid "A New Transaction Protocol"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:257
+#, no-c-format
+msgid ""
+"Many component technologies offer mechanisms for coordinating ACID "
+"transactions based on two-phase commit semantics (i.e., CORBA/OTS, JTS/JTA, "
+"MTS/MSDTC). ACID transactions are not suitable for all Web services "
+"transactions since:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:263
+#, no-c-format
+msgid ""
+"Classic ACID transactions are predicated on the idea that an organization "
+"that develops and deploys applications does so using their own "
+"infrastructure, typically an Intranet. Ownership meant transactions operated "
+"in a trusted and predictable manner. To assure ACIDity, potentially long-"
+"lived locks could be kept on underlying data structures during two-phase "
+"commit. Resources could be used for any period of time and released when the "
+"transaction was complete. In the Web services arena, these assumptions are "
+"no longer valid. One obvious reason is that the owners of data exposed "
+"through a Web service will refuse to allow their data to be locked for "
+"extended periods since to allow such locks invites denial-of-service."
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:268
+#, no-c-format
+msgid ""
+"All application infrastructures are generally owned by a single party, "
+"systems using classical ACID transactions normally assume that participants "
+"in a transaction will obey the will of the transaction manager and only "
+"infrequently decide to make unilateral decisions which will hamper other "
+"participants in a transaction. On the contrary, Web services participating "
+"in a transaction can effectively decide to resign from the transaction at "
+"any time, and the consumer of the service generally has little in the way of "
+"quality of service guarantees to prevent this."
+msgstr ""
+
+#. Tag: title
+#: Transactions_Overview.xml:274
+#, no-c-format
+msgid "Adressing the Problems of Transactioning in Loosely Coupled Systems"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:275
+#, no-c-format
+msgid ""
+"Though extended transaction models which relax the ACID properties have been "
+"proposed over the years, to implement these concepts for the Web services "
+"architecture WS-T provides a new transaction protocol. XTS is designed to "
+"accommodate four underlying requirements inherent in any loosely coupled "
+"architecture like Web services:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:281
+#, no-c-format
+msgid ""
+"Ability to handle multiple successful outcomes to a transaction, with the "
+"ability to involve operations whose effects may not be isolated or durable;"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:286
+#, no-c-format
+msgid ""
+"Coordination of autonomous parties whose relationships are governed by "
+"contracts rather than the dictates of a central design authority;"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:291
+#, no-c-format
+msgid ""
+"Discontinuous service, where parties are anticipated to suffer outages "
+"during their lifetime, and coordinated work must be able to survive such "
+"outages;"
+msgstr ""
+
+#. Tag: para
+#: Transactions_Overview.xml:296
+#, no-c-format
+msgid ""
+"Interoperation using XML over multiple communication protocols – XTS chooses "
+"to use SOAP encoding carried over HTTP for the first release and other SOAP-"
+"friendly transports for future releases."
+msgstr ""

Added: labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.pot	                        (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_2_7/Transactions_Web_Services_Programmers_Guide/pot/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.pot	2009-02-27 02:40:26 UTC (rev 25452)
@@ -0,0 +1,951 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-02-27 02:36+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:6
+#, no-c-format
+msgid "WS-C, WS-Atomic Transaction and WS-Business Activity Overview"
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:8
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:9
+#, no-c-format
+msgid ""
+"This section provides fundamental concepts associated with WS-C, WS-Atomic "
+"Transaction and WS-Business Activity. All of these concepts are defined in "
+"the WS-C, WS-Atomic Transaction and WS-Business Activity specifications. WS-"
+"C, WS-Atomic Transaction and WS-Business Activity principles are discussed "
+"throughout this guide."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:13
+#, no-c-format
+msgid ""
+"If you are well versed in the WS-C, WS-Atomic Transaction and WS-Business "
+"Activity specifications then you may want to just skim through this part of "
+"the manual."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:20
+#, no-c-format
+msgid "WS-Coordination"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:21
+#, no-c-format
+msgid ""
+"In general terms, coordination is the act of one entity (known as the "
+"coordinator) disseminating information to a number of participants for some "
+"domain-specific reason. This reason could be in order to reach consensus on "
+"a decision like in a distributed transaction protocol, or simply to "
+"guarantee that all participants obtain a specific message, as occurs in a "
+"reliable multicast environment. When parties are being coordinated, "
+"information known as the coordination context is propagated to tie together "
+"operations which are logically part of the same coordinated work or "
+"activity. This context information may flow with normal application "
+"messages, or may be an explicit part of a message exchange and is specific "
+"to the type of coordination being performed."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:24
+#, no-c-format
+msgid ""
+"The fundamental idea underpinning WS-Coordination is that there is a generic "
+"need for a coordination infrastructure in a Web services environment. The WS-"
+"Coordination specification defines a framework that allows different "
+"coordination protocols to be plugged-in to coordinate work between clients, "
+"services and participants, as shown in Figure 4."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:27
+#, no-c-format
+msgid ""
+"At this level, an activity is minimally specified and is simply created, "
+"made to run, and then completed."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:34
+#, no-c-format
+msgid "WS-C architecture"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:36
+#, no-c-format
+msgid ""
+"Whatever coordination protocol is used, and in whatever domain it is "
+"deployed, the same generic requirements are present:"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:41
+#, no-c-format
+msgid ""
+"Instantiation (or activation) of a new coordinator for the specific "
+"coordination protocol, for a particular application instance;"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:46
+#, no-c-format
+msgid ""
+"Registration of participants with the coordinator, such that they will "
+"receive that coordinator’s protocol messages during (some part of) the "
+"application’s lifetime;"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:51
+#, no-c-format
+msgid ""
+"Propagation of contextual information between Web services that comprise the "
+"application;"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:56
+#, no-c-format
+msgid "An entity to drive the coordination protocol through to completion."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:61
+#, no-c-format
+msgid ""
+"The first three of these points are directly the concern of WS-Coordination "
+"while the fourth is the responsibility of a third-party entity, usually the "
+"client application that controls the application as a whole. These four WS-"
+"Coordination roles and their interrelationships are shown in Figure 5."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:68
+#, no-c-format
+msgid "WS-C infrastructure"
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:71
+#, no-c-format
+msgid "Activation"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:72
+#, no-c-format
+msgid ""
+"The WS-Coordination framework exposes an Activation Service which supports "
+"the creation of coordinators for specific protocols and their associated "
+"contexts. The process of invoking an activation service is done "
+"asynchronously, and so the specification defines both the interface of the "
+"activation service itself, and that of the invoking service, so that the "
+"activation service can call back to deliver the results of the activation – "
+"namely a context that identifies the protocol type and coordinator location. "
+"These interfaces are presented in Figure 6, where the activation service has "
+"a one-way operation that expects to receive a "
+"<code>CreateCoordinationContext</code> message and correspondingly the "
+"service that sent the <code>CreateCoordinationContext</code> message expects "
+"to be called back with a <code>CreateCoordinationContextResponse</code> "
+"message, or informed of a problem via an <code>Error</code> message."
+msgstr ""
+
+#. Tag: screen
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:76
+#, no-c-format
+msgid ""
+"&lt;!-- Activation Service portType Declaration --&gt;\n"
+"&lt;wsdl:portType name=\"ActivationCoordinatorPortType\"&gt;\n"
+"        &lt;wsdl:operation name=\"CreateCoordinationContext\"&gt;\n"
+"                &lt;wsdl:input \n"
+"                message=\"wscoor:CreateCoordinationContext\"/&gt;\n"
+"        &lt;/wsdl:operation&gt;\n"
+"&lt;/wsdl:portType&gt;\n"
+"        \n"
+"&lt;!-- Activation Requester portType Declaration --&gt;\n"
+"&lt;wsdl:portType name=\"ActivationRequesterPortType\"&gt;\n"
+"        &lt;wsdl:operation \n"
+"                name=\"CreateCoordinationContextResponse\"&gt;\n"
+"                &lt;wsdl:input \n"
+"                message=\"wscoor:CreateCoordinationContextResponse\"/&gt;\n"
+"        &lt;/wsdl:operation&gt;\n"
+"        &lt;wsdl:operation name=\"Error\"&gt;\n"
+"                &lt;wsdl:input message=\"wscoor:Error\"/&gt;\n"
+"        &lt;/wsdl:operation&gt;\n"
+"&lt;/wsdl:portType&gt;\\"
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:78
+#, no-c-format
+msgid "Registration"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:79
+#, no-c-format
+msgid ""
+"Once a coordinator has been instantiated and a corresponding context created "
+"by the activation service, a Registration Service is created and exposed. "
+"This service allows participants to register to receive protocol messages "
+"associated with a particular coordinator. Like the activation service, the "
+"registration service assumes asynchronous communication and so specifies "
+"WSDL for both registration service and registration requester, as shown "
+"below."
+msgstr ""
+
+#. Tag: screen
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:83
+#, no-c-format
+msgid ""
+"&lt;!-- Registration Service portType Declaration --&gt;\n"
+"&lt;wsdl:portType name=\"RegistrationCoordinatorPortType\"&gt;\n"
+"        &lt;wsdl:operation name=\"Register\"&gt;\n"
+"                &lt;wsdl:input message=\"wscoor:Register\"/&gt;\n"
+"        &lt;/wsdl:operation&gt;\n"
+"&lt;/wsdl:portType&gt;\n"
+"        \n"
+"&lt;!-- Registration Requester portType Declaration --&gt;\n"
+"&lt;wsdl:portType name=\"RegistrationRequesterPortType\"&gt;\n"
+"        &lt;wsdl:operation name=\"RegisterResponse\"&gt;\n"
+"                &lt;wsdl:input message=\"wscoor:RegisterResponse\"/&gt;\n"
+"        &lt;/wsdl:operation&gt;\n"
+"        &lt;wsdl:operation name=\"Error\"&gt;\n"
+"                &lt;wsdl:input message=\"wscoor:Error\"/&gt;\n"
+"        &lt;/wsdl:operation&gt;\n"
+"&lt;/wsdl:portType&gt;"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:84
+#, no-c-format
+msgid ""
+"When a participant is registered with a coordinator through the registration "
+"service, it receives messages that the coordinator sends (for example, "
+"“prepare to complete” and “complete” messages if a two-phase protocol is "
+"used); where the coordinator’s protocol supports it, participants can also "
+"send messages back to the coordinator."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:88
+#, no-c-format
+msgid "Completion"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:89
+#, no-c-format
+msgid ""
+"The role of terminator is generally played by the client application, which "
+"at an appropriate point will ask the coordinator to perform its particular "
+"coordination function with any registered participants – to drive the "
+"protocol through to its completion. On completion, the client application "
+"may be informed of an outcome for the activity which may vary from simple "
+"succeeded/failed notification through to complex structured data detailing "
+"the activity’s status."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:96
+#, no-c-format
+msgid "WS-Transaction"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:97
+#, no-c-format
+msgid ""
+"In the past, making traditional transaction systems talk to one another was "
+"a holy grail that was rarely achieved. With the advent of Web services, "
+"there is an opportunity to leverage an unparalleled interoperability "
+"technology to splice together existing transaction processing systems that "
+"already form the backbone of enterprise level applications."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:101
+#, no-c-format
+msgid "WS-Coordination Foundations"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:102
+#, no-c-format
+msgid ""
+"An important aspect of WS-Transaction that differentiates it from "
+"traditional transaction protocols is that a synchronous request/response "
+"model is not assumed. This model derives from the fact that WS-Transaction "
+"is, as shown in the figure below, layered upon the WS-Coordination protocol "
+"whose own communication patterns are asynchronous by default."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:110
+#, no-c-format
+msgid "WS-Coordination WS-Atomic Transaction and WS-Business Activity"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:112
+#, no-c-format
+msgid ""
+"Web Services Coordination provides a generic framework for specific "
+"coordination protocols, like WS-Transaction, to be plugged in. Recall that "
+"WS-Coordination provides only context management – it allows contexts to be "
+"created and activities to be registered with those contexts. WS-Transaction "
+"leverages the context management framework provided by WS-Coordination in "
+"two ways. Firstly it extends the WS-Coordination context to create a "
+"transaction context. Secondly, it augments the activation and registration "
+"services with a number of additional services (Completion, "
+"CompletionWithAck, PhaseZero, 2PC, OutcomeNotification, BusinessAgreement, "
+"and BusinessAgreementWithComplete) and two protocol message sets (one for "
+"each of the transaction models supported in WS-Transaction) to build a fully-"
+"fledged transaction coordinator on top the WS-Coordination protocol "
+"infrastructure."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:116
+#, no-c-format
+msgid "WS-Transaction Architecture"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:117
+#, no-c-format
+msgid ""
+"WS-Transaction supports the notion of the service and participant as "
+"distinct roles, making the distinction between a transaction-aware service "
+"and the participants that act on behalf of the service during a transaction: "
+"transactional services deal with business-level protocols, while the "
+"participants handle the underlying WS-Transaction protocols, as shown above."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:125
+#, no-c-format
+msgid "WS-Transaction Global View"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:127
+#, no-c-format
+msgid ""
+"A transaction-aware service encapsulates the business logic or work that is "
+"required to be conducted within the scope of a transaction. This work cannot "
+"be confirmed by the application unless the transaction also commits and so "
+"control is ultimately removed from the application and placed into the "
+"transaction’s domain."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:130
+#, no-c-format
+msgid ""
+"The participant is the entity that, under the dictates of the transaction "
+"coordinator, controls the outcome of the work performed by the transaction-"
+"aware Web service. In the figure above each service is shown with one "
+"associated participant that manages the transaction protocol messages on "
+"behalf of its service, while in the figure below, there is a close-up view "
+"of a single service, and a client application with their associated "
+"participants."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:137
+#, no-c-format
+msgid "Transactional Service and Participant"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:139
+#, no-c-format
+msgid ""
+"The transaction-aware Web service and its participant both serve a shared "
+"transactional resource, and there is a control relationship between them "
+"through some API - which on the Java platform is JAXTX. In the example shown "
+"in the figure above, it is assumed that the database is accessed through a "
+"transactional JDBC database driver, where SQL statements are sent to the "
+"database for processing via that driver, but where those statements will be "
+"tentative and only commit if the transaction does. In order to do this, the "
+"driver/database will associate a participant with the transaction which will "
+"inform the database of the transaction outcome. Since all transactional "
+"invocations on the Web service carry a transaction context, the participant "
+"working with the database is able to identify the work that the "
+"transactional service did within the scope of a specific transaction and "
+"either commit or rollback the work."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:142
+#, no-c-format
+msgid ""
+"At the client end, things are less complex. Through its API, the client "
+"application registers a participant with the transaction through which it "
+"controls transaction termination."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:146
+#, no-c-format
+msgid "WS-Transaction Models"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:147
+#, no-c-format
+msgid ""
+"Given that traditional transaction models are not appropriate for Web "
+"services, the following question must be posed, “what type of model or "
+"protocol is appropriate?” The answer to that question is that that no one "
+"specific protocol is likely to be sufficient, given the wide range of "
+"situations that Web service transactions are likely to be deployed within. "
+"Hence the WS-Transaction specification proposes two distinct models, where "
+"each supports the semantics of a particular kind of B2B interaction. The "
+"following sections shall discuss these two WS-Transaction models."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:152
+#, no-c-format
+msgid ""
+"As with WS-Coordination, the two WS-Transaction models are extensible "
+"allowing implementations to tailor the protocols as they see fit (for "
+"example, to suit their deployment environments)."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:157
+#, no-c-format
+msgid "Atomic Transactions (AT)"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:158
+#, no-c-format
+msgid ""
+"An atomic transaction or AT is similar to traditional ACID transactions and "
+"intended to support short-duration interactions where ACID semantics are "
+"appropriate. Within the scope of an AT, services typically enroll "
+"transaction-aware resources, such as databases and message queues, "
+"indirectly as participants under the control of the transaction. When the "
+"transaction terminates, the outcome decision of the AT is then propagated to "
+"each enlisted resource via the participant, and the appropriate commit or "
+"rollback actions are taken by each."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:162
+#, no-c-format
+msgid ""
+"This protocol is very similar to those employed by traditional transaction "
+"systems that already form the backbone of an enterprise. It is assumed that "
+"all services (and associated participants) provide ACID semantics and that "
+"any use of atomic transactions occurs in environments and situations where "
+"this is appropriate: in a trusted domain, over short durations."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:165
+#, no-c-format
+msgid ""
+"To begin an atomic transaction, the client application firstly locates a WS-"
+"Coordination coordinator Web service that supports WS-Transaction. Once "
+"located, the client sends a WS-Coordination CreateCoordinationContext "
+"message to the activation service specifying http://schemas.xmlsoap.org/"
+"ws/2004/10/wsat as its coordination type and will get back an appropriate WS-"
+"Transaction context from the activation service. The response to the "
+"CreateCoordinationContext message, the transaction context, has its "
+"CoordinationType element set to the WS-Atomic Transaction namespace, http://"
+"schemas.xmlsoap.org/ws/2004/10/wsat, and also contains a reference to the "
+"atomic transaction coordinator endpoint (the WS-Coordination registration "
+"service) where participants can be enlisted."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:168
+#, no-c-format
+msgid ""
+"After obtaining a transaction context from the coordinator, the client "
+"application then proceeds to interact with Web services to accomplish its "
+"business-level work. With each invocation on a business Web service, the "
+"client inserts the transaction context into a SOAP header block, such that "
+"each invocation is implicitly scoped by the transaction – the toolkits that "
+"support WS-Atomic Transaction-aware Web services provide facilities to "
+"correlate contexts found in SOAP header blocks with back-end operations."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:171
+#, no-c-format
+msgid ""
+"Once all the necessary application level work has been completed, the client "
+"can terminate the transaction, with the intent of making any changes to the "
+"service state permanent. To do this, the client application first registers "
+"its own participant for the Completion protocol. Once registered, the "
+"participant can instruct the coordinator either to try to commit or rollback "
+"the transaction. When the commit or rollback operation has completed, a "
+"status is returned to the participant to indicate the outcome of the "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:174
+#, no-c-format
+msgid ""
+"While the completion protocol is straightforward, they hide the fact that in "
+"order to resolve to an outcome that several other protocols need to be "
+"executed."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:177
+#, no-c-format
+msgid ""
+"The first of these protocols is the optional Volatile2PC. The Volatile2PC "
+"protocol is the WS-Atomic Transaction equivalent of the synchronization "
+"protocol we discussed earlier. It is typically executed where a Web service "
+"needs to flush volatile (cached) state, which may be being used to improve "
+"performance of an application, to a database prior to the transaction "
+"committing. Once flushed, the data will then be controlled by a two-phase "
+"aware participant."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:180
+#, no-c-format
+msgid ""
+"All Volatile2PC participants are told that the transaction is about to "
+"complete (via the prepare message) and they can respond with either the "
+"prepared, aborted or readonly message; any failures at this stage will cause "
+"the transaction to rollback."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:183
+#, no-c-format
+msgid ""
+"After Volatile2PC prepare, the next protocol to execute in WS-Atomic "
+"Transaction is Durable2PC. The Durable2PC (an abbreviation of the term two-"
+"phase commit) protocol is at the very heart of WS-Atomic Transaction and is "
+"used to bring about the necessary consensus between participants in a "
+"transaction such that the transaction can safely be terminated."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:186
+#, no-c-format
+msgid ""
+"The two-phase commit protocol is used to ensure atomicity between "
+"participants, and is based on the classic two-phase commit with presumed "
+"abort technique. During the first phase, when the coordinator sends the "
+"prepare message, a participant must make durable any state changes that "
+"occurred during the scope of the transaction, such that these changes can "
+"either be rolled back or committed later. That is, any original state must "
+"not be lost at this point as the atomic transaction could still roll back. "
+"If the participant cannot prepare then it must inform the coordinator (via "
+"the aborted message) and the transaction will ultimately roll back. If the "
+"participant is responsible for a service that did not do any work during the "
+"course of the transaction, or at least did not do any work that modified any "
+"state, it can return the readonly message and it will be omitted from the "
+"second phase of the commit protocol. Otherwise, the prepared message is sent "
+"by the participant."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:189
+#, no-c-format
+msgid ""
+"Assuming no failures occurred during the first phase, in the second phase "
+"the coordinator sends the commit message to participants, who will make "
+"permanent the tentative work done by their associated services."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:192
+#, no-c-format
+msgid ""
+"If a transaction involves only a single participant, WS-Atomic Transaction "
+"supports a one-phase commit optimization. Since there is only one "
+"participant, its decisions implicitly reach consensus, and so the "
+"coordinator need not drive the transaction through both phases. In the "
+"optimized case, the participant will simply be told to commit and the "
+"transaction coordinator need not record information about the decision since "
+"the outcome of the transaction is solely down to that single participant."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:195
+#, no-c-format
+msgid ""
+"The figure below<footnote> <para> Redrawn from the WS-Atomic Transaction "
+"specification. </para> </footnote> shows the state transitions of a WS-"
+"Atomic Transaction and the message exchanges between coordinator and "
+"participant; the coordinator generated messages are shown in the solid line, "
+"whereas the participant messages are shown by dashed lines."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:206
+#, no-c-format
+msgid "Two-Phase Commit State Transitions"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:208
+#, no-c-format
+msgid ""
+"Once the 2PC protocol has finished, the Completion protocol that originally "
+"began the termination of the transaction can complete, and inform the client "
+"application whether the transaction was committed or rolled back. "
+"Additionally, the Volatile2PC protocol may complete."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:211
+#, no-c-format
+msgid ""
+"Like the prepare phase of Volatile2PC, the final phase is optional and can "
+"be used to inform participants when the transaction has completed, typically "
+"so that they can release resources (for example, put a database connection "
+"back into the pool of connections)."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:214
+#, no-c-format
+msgid ""
+"Any registered Volatile2PC participants are invoked after the transaction "
+"has terminated and are told the state in which the transaction completed "
+"(the coordinator sends either the Committed or Aborted message). Since the "
+"transaction has terminated, any failures of participants at this stage are "
+"ignored –it is essentially a courtesy, and has no bearing on the outcome of "
+"the transaction."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:217
+#, no-c-format
+msgid ""
+"Finally, after having gone through each of the stages in an AT, it is "
+"possible to see the intricate interweaving of individual protocols that goes "
+"to make up the AT as a whole in the following figure."
+msgstr ""
+
+#. Tag: caption
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:224
+#, no-c-format
+msgid "The AT Model"
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:227
+#, no-c-format
+msgid "Business Activities (BA)"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:228
+#, no-c-format
+msgid ""
+"Most business-to-business applications require transactional support in "
+"order to guarantee consistent outcome and correct execution. These "
+"applications often involve long running computations, loosely coupled "
+"systems and components that do not share data, location, or administration "
+"and it is difficult to incorporate atomic transactions within such "
+"architectures. For example, an online bookshop may reserve books for an "
+"individual for a specific period of time, but if the individual does not "
+"purchase the books within that period they will be “put back onto the shelf” "
+"for others to buy. Furthermore, because it is not possible for anyone to "
+"have an infinite supply of stock, some online shops may appear to users to "
+"reserve items for them, but in fact may allow others to pre-empt that "
+"reservation (for instance, the same book may be “reserved” for multiple "
+"users concurrently); a user may subsequently find that the item is no longer "
+"available, or may have to be reordered specially for them."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:232
+#, no-c-format
+msgid ""
+"A business activity or BA is designed specifically for these kinds of long-"
+"duration interactions, where exclusively locking resources is impossible or "
+"impractical. In this model services are requested to do work, and where "
+"those services have the ability to undo any work, they inform the BA such "
+"that if the BA later decides the cancel the work (for instance if the "
+"business activity suffers a failure), it can instruct the service to execute "
+"its undo behavior. The key point for Business Activities is that how "
+"services do their work and provide compensation mechanisms is not the domain "
+"of the WS-Business Activity specification, but an implementation decision "
+"for the service provider."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:235
+#, no-c-format
+msgid ""
+"The WS- Business Activity simply defines a protocol for Web services-based "
+"applications to enable existing business processing and workflow systems to "
+"wrap their proprietary mechanisms and interoperate across implementations "
+"and business boundaries."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:238
+#, no-c-format
+msgid ""
+"A business activity may be partitioned into scopes, where a scope is a "
+"business task or unit of work using a collection of Web services. Such "
+"scopes can be nested to arbitrary degrees, forming parent and child "
+"relationships, where a parent scope has the ability to select which child "
+"tasks are to be included in the overall outcome protocol for a specific "
+"business activity, and so clearly non-atomic outcomes are possible. In a "
+"similar manner to traditional nested transactions, if a child task "
+"experiences an error, it can be caught by the parent who may be able to "
+"compensate and continue processing."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:241
+#, no-c-format
+msgid ""
+"When a child task completes it can either leave the business activity or "
+"signal to the parent that the work it has done can be compensated later. In "
+"the latter case, the compensation task may be called by the parent should it "
+"ultimately need to undo the work performed by the child."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:244
+#, no-c-format
+msgid ""
+"Unlike the WS-Atomic Transaction protocol model, where participants inform "
+"the coordinator of their state only when asked, a task within a business "
+"activity can specify its outcome to the parent directly without waiting for "
+"a request. This feature is useful when tasks fail such that the notification "
+"can be used by business activity exception handler to modify the goals and "
+"drive processing forward without having to meekly wait until the end of the "
+"transaction to admit to having failed – a well designed Business Activities "
+"should be proactive, if it is to perform well."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:247
+#, no-c-format
+msgid "Underpinning all of this are three fundamental assumptions:"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:252
+#, no-c-format
+msgid ""
+"All state transitions are reliably recorded, including application state and "
+"coordination metadata (the record of sent and received messages);"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:257
+#, no-c-format
+msgid ""
+"All request messages are acknowledged, so that problems are detected as "
+"early as possible. This avoids executing unnecessary tasks and can also "
+"detect a problem earlier when rectifying it is simpler and less expensive;"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:262
+#, no-c-format
+msgid ""
+"As with atomic transactions, a response is defined as a separate operation "
+"and not as the output of the request. Message input-output implementations "
+"will typically have timeouts that are too short for some business activity "
+"responses. If the response is not received after a timeout, it is resent. "
+"This is repeated until a response is received. The request receiver discards "
+"all but one identical request received."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:267
+#, no-c-format
+msgid ""
+"As with atomic transactions, the business activity model has multiple "
+"protocols: <code>BusinessAgreementWithParticipantCompletion</code> and "
+"<code>BusinessAgreementWithCoordinatorCompletion</code>. However, unlike the "
+"AT protocol which is driven from the coordinator down to participants, this "
+"protocol is driven much more from the participants upwards."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:270
+#, no-c-format
+msgid ""
+"Under the <code>BusinessAgreementWithParticipantCompletion</code> protocol, "
+"a child activity is initially created in the Active state; if it finishes "
+"the work it was created to do and no more participation is required within "
+"the scope of the BA (such as when the activity operates on immutable data), "
+"then the child can unilaterally send an exited message to the parent. "
+"However, if the child task finishes and wishes to continue in the BA then it "
+"must be able to compensate for the work it has performed. In this case it "
+"sends a completed message to the parent and waits to receive the final "
+"outcome of the BA from the parent. This outcome will either be a close "
+"message, meaning the BA has completed successfully or a compensate message "
+"indicating that the parent activity requires that the child task reverse its "
+"work."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:273
+#, no-c-format
+msgid ""
+"The <code>BusinessAgreementWithCoordinatorCompletion</code> protocol is "
+"identical to the <code>BusinessAgreementWithParticipantCompletion</code> "
+"protocol with the exception that the child cannot autonomously decide to end "
+"its participation in the business activity, even if it can be compensated. "
+"Rather the child task relies upon the parent to inform it when the child has "
+"received all requests for it to perform work which the parent does by "
+"sending the complete message to the child. The child then acts as it does in "
+"the <code>BusinessAgreementWithParticipantCompletion</code> protocol."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:276
+#, no-c-format
+msgid ""
+"The crux of the BA model compared to the AT model is that is allows the "
+"participation of services that cannot or will not lock resources for "
+"extended periods."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:279
+#, no-c-format
+msgid ""
+"While the full ACID semantics are not maintained by a BA, consistency can "
+"still be maintained through compensation, though the task of writing correct "
+"compensating actions (and thus overall system consistency) is delegated to "
+"the developers of the services under control of the BA. Such compensations "
+"may use backward error recovery, but will typically employ forward recovery."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:283
+#, no-c-format
+msgid "Application Messages"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:284
+#, no-c-format
+msgid ""
+"Application messages are the requests and responses that are sent between "
+"parties that constitute the work of a business process. Any such messages "
+"are considered opaque by XTS, and there is no mandatory message format, "
+"protocol binding, or encoding style so the developer is free to use any "
+"appropriate Web services protocol. In XTS, the transaction context is "
+"propagated within the headers of SOAP messages."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:289
+#, no-c-format
+msgid ""
+"XTS provides out-of-box support for service developers building WS-T-aware "
+"services on the JBoss, Weblogic and Glue platforms1. The provision of "
+"interceptors for automatic context handling at both client and service "
+"significantly simplifies the developer’s workload, allowing the developer to "
+"concentrate on writing the business logic without having to worry about the "
+"transactional infrastructure getting in the way. The interceptors simply add "
+"and remove context elements to application messages without altering the "
+"semantics of those messages. Any service which understands what to do with a "
+"WS-C context can use it, services which do not understand the context (those "
+"services that are not WS-C, WS-Atomic Transaction and WS-Business Activity-"
+"aware) may ignore the context; the important point here is that XTS manages "
+"contexts without user intervention."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:294
+#, no-c-format
+msgid "WS-C, WS-Atomic Transaction and WS-Business Activity Messages"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:295
+#, no-c-format
+msgid ""
+"Although the application or service developer rarely sees or is interested "
+"in the messages exchanged by the transactional infrastructure (the "
+"transaction manager and any participants), it is useful to understand what "
+"kinds of exchanges occur so that the underlying model can be fitted in to an "
+"overall architecture."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:299
+#, no-c-format
+msgid ""
+"In XTS, WS-C, WS-Atomic Transaction and WS-Business Activity-specific "
+"messages are transported using SOAP messaging over HTTP. The types of "
+"messages that are propagated include instructions to perform standard "
+"transaction operations like begin, prepare."
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:303
+#, no-c-format
+msgid ""
+"XTS messages do not interfere in any way, shape, or form, with the "
+"application messages, and nor is there any requirement for an application to "
+"use the same transport as the transaction-specific messages. For example, it "
+"is quite reasonable for a client application to deliver its application-"
+"specific messages using SOAP RPC over SMTP even though under the covers the "
+"XTS messages are delivered using a different mechanism."
+msgstr ""
+
+#. Tag: title
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:310
+#, no-c-format
+msgid "Summary"
+msgstr ""
+
+#. Tag: para
+#: WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml:311
+#, no-c-format
+msgid ""
+"XTS provides a coordination infrastructure designed to allow transactions to "
+"run between enterprises across the Internet. That infrastructure is based on "
+"the WS-C, WS-Atomic Transaction and WS-Business Activity specifications. It "
+"supports two kinds of transactions: atomic transactions and business "
+"activities, which can be combined in arbitrary ways to map elegantly onto "
+"the transactional requirements of the underlying problem. The use of the "
+"whole infrastructure is simple due to the fact that its functionality is "
+"exposed through a simple transactioning API. Furthermore XTS provides all of "
+"the necessary plumbing to keep application and transactional aspects of an "
+"application separate, and to ensure that the transactionality of a system "
+"does not interfere with the functional aspects of the system itself."
+msgstr ""




More information about the jboss-svn-commits mailing list