[jboss-svn-commits] JBL Code SVN: r25457 - in labs/jbosstm/enterprise/tags: EAP_4_3_4 and 37 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 26 23:39:04 EST 2009
Author: irooskov at redhat.com
Date: 2009-02-26 23:39:03 -0500 (Thu, 26 Feb 2009)
New Revision: 25457
Added:
labs/jbosstm/enterprise/tags/EAP_4_3_4/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Feedback.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/JBoss_Transactions_Administrators_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Chapter.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Feedback.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Preface.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/images/icon.svg
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Feedback.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/JBoss_Transactions_Administrators_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Feedback.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/JBoss_Transactions_Administrators_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Feedback.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/JBoss_Transactions_Administrators_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Appendix.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Author_Group.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Book_Info.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Chapter.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Feedback.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/JBoss_Transactions_Administrators_Guide.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Preface.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Revision_History.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/messages.mo
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Feedback.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/JBoss_Transactions_Administrators_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Feedback.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/JBoss_Transactions_Administrators_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_A.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_B.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_02.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_03.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_04.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_05.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_06.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_07.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/JBoss_TS_Programmers_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_A.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_B.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_02.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_03.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_05.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_06.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_07.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Details_Panel.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/File_Menu.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Help_Menu.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Independent_Top-Level.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Invoke_Operation_Parameters.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/JMX_Attributes_Operations.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/JMX_Browser.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Menu.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Multiple_Object.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Object_Store.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Object_Store_Split.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Performance_Menu.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Performance_Window.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Persistent_Object_Lifecycle.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Series_Colour.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Series_Menu.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Single_Object.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/TXCore_class_hierarchy.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Window_Menu.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_A.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_B.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_02.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_03.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_04.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_05.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_06.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_07.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/JBoss_TS_Programmers_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_A.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_B.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_02.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_03.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_04.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_05.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_06.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_07.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/JBoss_TS_Programmers_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_A.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_B.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_02.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_03.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_04.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_05.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_06.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_07.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/JBoss_TS_Programmers_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_A.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_B.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Author_Group.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Book_Info.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_02.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_03.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_04.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_05.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_06.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_07.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/JBoss_TS_Programmers_Guide.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/messages.mo
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_A.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_B.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_02.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_03.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_04.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_05.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_06.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_07.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/JBoss_TS_Programmers_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_A.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_B.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_02.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_03.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_04.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_05.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_06.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_07.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/JBoss_TS_Programmers_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Preface.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Application_Process.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Crash_Recovery_Architecture.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/ExpiryScanner.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/ObjectStore.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/POA.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/RecoverCoordinator_Object.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recover_Manager_Flow.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recovery.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/RecoveryCoordinator.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recovery_Manager.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Resource-initiated_Recovery.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Transaction_Process.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Transactions_Failure_Recovery_Guide.po
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Appendix.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Preface.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Transactions_Failure_Recovery_Guide.pot
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/messages.mo
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Preface.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/Win_Services.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/icon.svg
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Preface.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/images/icon.svg
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Examples.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Preface.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/Makefile
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.ent
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/AT_Model.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Back-End_Integration.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_Protocol.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_State_Transitions.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Flow.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Handlers.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Transaction_Control.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Transactional_Service_and_Participant.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Architecture.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Infrastructure.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Coordination_Foundations.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Transaction_Global_View.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Web_Services.png
labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg
Log:
adding new branch
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/de-DE/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/de-DE/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/de-DE/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/de-DE/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+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 < INFO < WARN < ERROR < "
+"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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+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_3_4/Administrators_Guide/de-DE/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Feedback.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Feedback.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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_3_4/Administrators_Guide/de-DE/JBoss_Transactions_Administrators_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/de-DE/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/de-DE/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+
+ <!--<para>JBTA-AG-12/10/07</para>-->
+
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>1</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Administrators_Guide/en-US/Chapter.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Chapter.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Chapter.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><module-info name="arjuna">
+ <source-identifier>unknown</source-identifier>
+ <build-information>
+ Arjuna Technologies [mlittle] (Windows 2000 5.0)
+ </build-information>
+ <version>unknown</version>
+ <date>2002/06/15 04:06 PM</date>
+ <notes></notes>
+ <configuration>
+ <properties-file dir="null">arjuna.properties</properties-file>
+ <object-store-root>null</object-store-root>
+ </configuration>
+</module-info></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 < INFO < WARN < ERROR < 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><!-- Common logging related properties. -->
+<property
+ name="com.arjuna.common.util.logging.DebugLevel"
+ value="0x00000000"/>
+<propertyname="com.arjuna.common.util.logging.FacilityLevel"
+ value="0xffffffff"/>
+<propertyname="com.arjuna.common.util.logging.VisibilityLevel"
+ value="0xffffffff"/></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_3_4/Administrators_Guide/en-US/Feedback.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Feedback.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Feedback.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "JBoss_Enterprise_Application_Platform">
+<!ENTITY BOOKID "JBoss_Transactions_Administrators_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/JBoss_Transactions_Administrators_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Preface.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Preface.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/images/icon.svg (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/en-US/images/icon.svg 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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="path2858" />
+ <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_3_4/Administrators_Guide/es-ES/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/es-ES/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/es-ES/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/es-ES/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+msgstr ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+
+#. 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 < INFO < WARN < ERROR < "
+"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 < INFO "
+"< WARN < ERROR < 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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+msgstr ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+
+#. 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_3_4/Administrators_Guide/es-ES/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Feedback.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Feedback.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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><version></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_3_4/Administrators_Guide/es-ES/JBoss_Transactions_Administrators_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/es-ES/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/es-ES/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/fr-FR/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/fr-FR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/fr-FR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/fr-FR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+msgstr ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+
+#. 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 < INFO < WARN < ERROR < "
+"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 < INFO < WARN < ERROR < 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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+msgstr ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+
+#. 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_3_4/Administrators_Guide/fr-FR/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Feedback.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Feedback.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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><version></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_3_4/Administrators_Guide/fr-FR/JBoss_Transactions_Administrators_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/fr-FR/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/fr-FR/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/ja-JP/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/ja-JP/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/ja-JP/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/ja-JP/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+msgstr ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+
+#. 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 < INFO < WARN < ERROR < "
+"FATAL."
+msgstr ""
+"CLF ã§ã¯ã¢ããªã±ã¼ã·ã§ã³ã¯ããã¬ã¼ãªãã¸ã§ã¯ãã§ãã®ã³ã°ã®ã³ã¼ã«ãä½æãã¾"
+"ãã ããã¬ã¼ã¯ãã®ã³ã°ã® Levels ã使ã£ã¦ç¹å®ã®ãã°ã¡ãã»ã¼ã¸ã«èå³ããããã"
+"決å®ãããã¨ãã§ãã¾ãã åãã°ã¡ãã»ã¼ã¸ã¯ãã°ã® Level ãé¢é£ä»ãã ããã«ã"
+"ããã°ã¡ãã»ã¼ã¸ã®éè¦æ§ãç·æ¥æ§ãä¸ãã¾ãã å¯è½ãª Log Level ã®ã»ãã㯠"
+"DEBUGã INFOã WARNã ERRORã FATAL ã«ãªãã¾ãã å®ç¾©ããã Level ã¯æ¬¡ã®ãã"
+"ã«ãã®æ´æ°å¤ã«å¾ã£ã¦é åºä»ãããã¾ã: DEBUG < INFO < WARN < ERROR "
+"< 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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+msgstr ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+
+#. 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_3_4/Administrators_Guide/ja-JP/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Feedback.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Feedback.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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><version></replaceable>ã Component: <emphasis>Doc</emphasis> ã«ã¦ãå ±åé ããã°å¹¸ãã§ãã ããã¥ã¡ã³ãã®æ¹åæ¡ã«ã¤ãã¦ã¯ã§ããã ã詳細ã«ãé¡ããããã¾ãã ã¨ã©ã¼ã®å ±åãé ãå ´åã¯ã 該å½ããã»ã¯ã·ã§ã³çªå·ããã³åå¾ã®æèãå«ãã¦ãç¥ããé ããã¨çºè¦ãããããªãã¾ãã"
+
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/JBoss_Transactions_Administrators_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/ja-JP/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/ja-JP/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/pot/Appendix.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Appendix.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Appendix.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:49+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.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr ""
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Author_Group.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Author_Group.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,30 @@
+# 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: 2008-06-05 22:49+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: 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_3_4/Administrators_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Book_Info.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Book_Info.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,41 @@
+# 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: 2008-06-05 22:49+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 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_3_4/Administrators_Guide/pot/Chapter.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Chapter.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Chapter.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:49+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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+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 < INFO < WARN < ERROR < "
+"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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+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_3_4/Administrators_Guide/pot/Feedback.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Feedback.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Feedback.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:49+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><version></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_3_4/Administrators_Guide/pot/JBoss_Transactions_Administrators_Guide.pot
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Preface.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Preface.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:49+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_3_4/Administrators_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Revision_History.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/Revision_History.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:49+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
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/messages.mo
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pot/messages.mo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/pt-BR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/pt-BR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/pt-BR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+msgstr ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+
+#. 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 < INFO < WARN < ERROR < "
+"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 < INFO < WARN < ERROR < "
+"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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+msgstr ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+
+#. 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_3_4/Administrators_Guide/pt-BR/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Feedback.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Feedback.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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><version></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_3_4/Administrators_Guide/pt-BR/JBoss_Transactions_Administrators_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/pt-BR/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/pt-BR/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/zh-CN/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/zh-CN/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/zh-CN/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/zh-CN/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+msgstr ""
+"<module-info name=\"arjuna\">\n"
+" <source-identifier>unknown</source-identifier>\n"
+" <build-information>\n"
+" Arjuna Technologies [mlittle] (Windows 2000 5.0)\n"
+" </build-information>\n"
+" <version>unknown</version>\n"
+" <date>2002/06/15 04:06 PM</date>\n"
+" <notes></notes>\n"
+" <configuration>\n"
+" <properties-file dir=\"null\">arjuna.properties</"
+"properties-file>\n"
+" <object-store-root>null</object-store-root>\n"
+" </configuration>\n"
+"</module-info>"
+
+#. 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 < INFO < WARN < ERROR < "
+"FATAL."
+msgstr "ç¨ CLF åºç¨ç¨åºæ¥è°ç¨ logger 对象çæ¥å¿è°ç¨ãLogger å¯ä»¥ä½¿ç¨æ¥å¿çº§å«æ¥å³å®å
·ä½çæ¥å¿ä¿¡æ¯ãæ¯ä¸ªæ¥å¿ä¿¡æ¯é½æä¸ä¸ªç¸å
³çæ¥å¿çº§å«æ¥è¡¨ç¤ºéè¦åç´§æ¥ç¨åº¦ãæ¥å¿çº§å«å¯ä»¥æ¯ DEBUGãINFOãWARNã ERROR å FATALãææ´å½¢å¼ç顺åºæå为ï¼DEBUG < INFO < WARN < ERROR < 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 ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+msgstr ""
+"<!-- Common logging related properties. -->\n"
+"<property\n"
+" name=\"com.arjuna.common.util.logging.DebugLevel\"\n"
+" value=\"0x00000000\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.FacilityLevel\"\n"
+" value=\"0xffffffff\"/>\n"
+"<propertyname=\"com.arjuna.common.util.logging.VisibilityLevel\"\n"
+" value=\"0xffffffff\"/>"
+
+#. 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_3_4/Administrators_Guide/zh-CN/Feedback.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Feedback.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Feedback.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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><version></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><version></replaceable>ï¼ç»ä»¶ï¼<emphasis>Doc</"
+"emphasis>ã"
+"å¦ææ¯æ¹è¿æ¬ææ¡£ç建议ï¼è¯·å°½éå
·ä½åï¼å¦ææ¯å
¶ä»é误ï¼è¯·æåºç« èå·ä»¥åå
·ä½çå
容"
+"ï¼è¿æ ·æ们就å¯ä»¥å°½å¿«æ¹æ£ã"
+
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/JBoss_Transactions_Administrators_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Administrators_Guide/zh-CN/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Administrators_Guide/zh-CN/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/Makefile
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_A.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_A.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> defaultStore/"
+msgstr ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/de-DE/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_B.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Appendix_B.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/de-DE/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/de-DE/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/de-DE/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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 & 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_3_4/Programmers_Guide/de-DE/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_02.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_02.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/de-DE/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_03.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_03.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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 > 0) &&(index > 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_3_4/Programmers_Guide/de-DE/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_04.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_04.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/de-DE/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_05.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_05.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>\n"
+"./run-tools.sh"
+msgstr ""
+"cd <JBossTS INSTALL DIRECTORY>\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> > "
+"<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> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+msgstr ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+
+#. 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_3_4/Programmers_Guide/de-DE/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_06.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_06.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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 >= 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_3_4/Programmers_Guide/de-DE/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_07.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/de-DE/Chapter_07.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/de-DE/JBoss_TS_Programmers_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_A.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_A.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_A.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
+<ObjectStore root Directory from configure> /JBossTS/ObjectStore/
+ <ObjectStore Type1> FragmentedStore/
+ <Default root> defaultStore/
+ <StateManager> StateManager
+ <LockManager> LockManager/
+ <User Types>
+ <Localised root 2> myStore/
+ <StateManager> StateManager/
+
+ <ObjectStore Type2> ActionStore/
+ <Default root> 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_3_4/Programmers_Guide/en-US/Appendix_A.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_B.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_B.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Appendix_B.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/en-US/Appendix_B.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>1</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Programmers_Guide/en-US/Book_Info.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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_3_4/Programmers_Guide/en-US/Chapter.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_02.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_02.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_02.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)
+ {
+ if (i <= 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_3_4/Programmers_Guide/en-US/Chapter_02.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_03.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_03.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_03.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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_3_4/Programmers_Guide/en-US/Chapter_03.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/en-US/Chapter_04.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_05.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_05.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_05.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>
+./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>
+ </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>
+ </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>
+ </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>
+ </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> > <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>
+<jar jarfile="osbv-simplerecord.jar">
+ <fileset dir="build" includes="*.classâ/>
+ <manifest>
+ <section name="arjuna-tools-objectstorebrowser">
+ <attribute name="plugin-classname-1" value=" SimpleRecordOSVPlugin "/>
+ </section>
+ </manifest>
+</jar>
+</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_3_4/Programmers_Guide/en-US/Chapter_05.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_06.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_06.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_06.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)
+ {
+ for (int i = 0; i < 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 > 0)
+ {
+ for (int i = 0; i < 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 < 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 < 0)
+ {
+ A.rollback();
+ throw new UnderFlow();
+ }
+ else
+ {
+ // array is 0 - numberOfElements -1
+
+ if (index > 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 >= 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_3_4/Programmers_Guide/en-US/Chapter_06.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_07.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_07.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Chapter_07.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/en-US/Chapter_07.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,3 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.ent
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/en-US/JBoss_Transactions_Programmers_Guide_CP04.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/en-US/images/Details_Panel.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Details_Panel.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/File_Menu.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/File_Menu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Help_Menu.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Help_Menu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Independent_Top-Level.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Independent_Top-Level.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Invoke_Operation_Parameters.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Invoke_Operation_Parameters.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/JMX_Attributes_Operations.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/JMX_Attributes_Operations.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/JMX_Browser.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/JMX_Browser.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Menu.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Menu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Multiple_Object.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Multiple_Object.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Object_Store.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Object_Store.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Object_Store_Split.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Object_Store_Split.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Performance_Menu.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Performance_Menu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Performance_Window.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Performance_Window.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Persistent_Object_Lifecycle.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Persistent_Object_Lifecycle.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Series_Colour.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Series_Colour.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Series_Menu.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Series_Menu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Single_Object.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Single_Object.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/TXCore_class_hierarchy.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/TXCore_class_hierarchy.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Window_Menu.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/en-US/images/Window_Menu.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_A.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_A.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> defaultStore/"
+msgstr ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/es-ES/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_B.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Appendix_B.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/es-ES/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/es-ES/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/es-ES/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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 & 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_3_4/Programmers_Guide/es-ES/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_02.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_02.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/es-ES/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_03.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_03.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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 > 0) &&(index > 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_3_4/Programmers_Guide/es-ES/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_04.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_04.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/es-ES/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_05.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_05.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>\n"
+"./run-tools.sh"
+msgstr ""
+"cd <JBossTS INSTALL DIRECTORY>\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> > "
+"<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> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+msgstr ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+
+#. 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_3_4/Programmers_Guide/es-ES/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_06.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_06.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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 >= 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_3_4/Programmers_Guide/es-ES/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_07.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/es-ES/Chapter_07.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/es-ES/JBoss_TS_Programmers_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_A.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_A.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> defaultStore/"
+msgstr ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/fr-FR/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_B.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Appendix_B.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/fr-FR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/fr-FR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/fr-FR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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 & 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_3_4/Programmers_Guide/fr-FR/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_02.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_02.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/fr-FR/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_03.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_03.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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 > 0) &&(index > 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_3_4/Programmers_Guide/fr-FR/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_04.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_04.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/fr-FR/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_05.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_05.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>\n"
+"./run-tools.sh"
+msgstr ""
+"cd <JBossTS INSTALL DIRECTORY>\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> > "
+"<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> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+msgstr ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+
+#. 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_3_4/Programmers_Guide/fr-FR/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_06.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_06.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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 >= 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_3_4/Programmers_Guide/fr-FR/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_07.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/fr-FR/Chapter_07.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/fr-FR/JBoss_TS_Programmers_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_A.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_A.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/ja-JP/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_B.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Appendix_B.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/ja-JP/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/ja-JP/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/ja-JP/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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_3_4/Programmers_Guide/ja-JP/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_02.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_02.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/ja-JP/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_03.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_03.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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_3_4/Programmers_Guide/ja-JP/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_04.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_04.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/ja-JP/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_05.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_05.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>\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> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+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_3_4/Programmers_Guide/ja-JP/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_06.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_06.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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_3_4/Programmers_Guide/ja-JP/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_07.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/ja-JP/Chapter_07.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/ja-JP/JBoss_TS_Programmers_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_A.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_A.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_A.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/pot/Appendix_B.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_B.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Appendix_B.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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: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_3_4/Programmers_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Author_Group.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Author_Group.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr ""
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Book_Info.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Book_Info.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,41 @@
+# 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: 2008-06-05 22:51+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 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_3_4/Programmers_Guide/pot/Chapter.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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 & 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_3_4/Programmers_Guide/pot/Chapter_02.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_02.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_02.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/pot/Chapter_03.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_03.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_03.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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 > 0) &&(index > 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_3_4/Programmers_Guide/pot/Chapter_04.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_04.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_04.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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_3_4/Programmers_Guide/pot/Chapter_05.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_05.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_05.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,803 @@
+# 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: 2008-06-05 22:51+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 <JBossTS INSTALL DIRECTORY>\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> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+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_3_4/Programmers_Guide/pot/Chapter_06.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_06.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_06.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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_3_4/Programmers_Guide/pot/Chapter_07.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_07.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/Chapter_07.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-06-05 22:51+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_3_4/Programmers_Guide/pot/JBoss_TS_Programmers_Guide.pot
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/messages.mo
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pot/messages.mo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_A.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_A.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> defaultStore/"
+msgstr ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/pt-BR/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_B.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Appendix_B.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/pt-BR/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/pt-BR/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/pt-BR/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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 & 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_3_4/Programmers_Guide/pt-BR/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_02.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_02.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/pt-BR/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_03.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_03.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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 > 0) &&(index > 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_3_4/Programmers_Guide/pt-BR/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_04.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_04.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/pt-BR/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_05.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_05.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>\n"
+"./run-tools.sh"
+msgstr ""
+"cd <JBossTS INSTALL DIRECTORY>\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> > "
+"<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> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+msgstr ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+
+#. 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_3_4/Programmers_Guide/pt-BR/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_06.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_06.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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 >= 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_3_4/Programmers_Guide/pt-BR/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_07.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/pt-BR/Chapter_07.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/pt-BR/JBoss_TS_Programmers_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_A.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_A.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_A.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> defaultStore/"
+msgstr ""
+"<ObjectStore root Directory from configure> /JBossTS/"
+"ObjectStore/\n"
+" <ObjectStore Type1> FragmentedStore/\n"
+" <Default root> defaultStore/\n"
+" <StateManager> "
+"StateManager\n"
+" <LockManager> "
+"LockManager/\n"
+" <User Types> \n"
+" <Localised root 2> myStore/\n"
+" <StateManager> StateManager/\n"
+" \n"
+" <ObjectStore Type2> ActionStore/\n"
+" <Default root> 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_3_4/Programmers_Guide/zh-CN/Appendix_B.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_B.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Appendix_B.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/zh-CN/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/zh-CN/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/zh-CN/Chapter.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 & 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 & 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_3_4/Programmers_Guide/zh-CN/Chapter_02.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_02.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_02.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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 <= 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 < ARRAY_SIZE)\n"
+" {\n"
+" if (i <= 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_3_4/Programmers_Guide/zh-CN/Chapter_03.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_03.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_03.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0) &&(index > 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 > 0) &&(index > 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_3_4/Programmers_Guide/zh-CN/Chapter_04.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_04.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_04.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/zh-CN/Chapter_05.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_05.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_05.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <JBossTS INSTALL DIRECTORY>\n"
+"./run-tools.sh"
+msgstr ""
+"cd <JBossTS INSTALL DIRECTORY>\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 " "
+msgstr " "
+
+#. 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> > "
+"<menuchoice><guimenuitem>Open</guimenuitem></menuchoice>"
+msgstr ""
+"æ§è½ä¿¡æ¯éè¿ multi-series å¾è¡¨æ¾ç¤ºãè¦æ¥çè¿ä¸ªå¾è¡¨ï¼ä½ åªéç®åå°éæ© "
+"<menuchoice><guimenu>Performance</guimenu></menuchoice> > "
+"<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 ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+msgstr ""
+"<jar jarfile=\"osbv-simplerecord.jar\">\n"
+" <fileset dir=\"build\" includes=\"*.classâ/>\n"
+" <manifest>\n"
+" <section name=\"arjuna-tools-objectstorebrowser\">\n"
+" <attribute name=\"plugin-classname-1\" value=\" "
+"SimpleRecordOSVPlugin \"/>\n"
+" </section>\n"
+" </manifest>\n"
+"</jar>"
+
+#. 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_3_4/Programmers_Guide/zh-CN/Chapter_06.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_06.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_06.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 > 0)\n"
+" {\n"
+" for (int i = 0; i < 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 < 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 < 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 < 0)\n"
+" {\n"
+" A.rollback();\n"
+" throw new UnderFlow();\n"
+" }\n"
+" else\n"
+" {\n"
+" // array is 0 - numberOfElements -1\n"
+" \n"
+" if (index > 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 >= 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 >= 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_3_4/Programmers_Guide/zh-CN/Chapter_07.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_07.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Programmers_Guide/zh-CN/Chapter_07.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Programmers_Guide/zh-CN/JBoss_TS_Programmers_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Architecture_of_the_Recovery_Manager.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
+<property
+ name="com.arjuna.ats.arjuna.recovery.recoveryActivator_<number>" value="RecoveryClass" />
+</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>
+<property
+ name="com.arjuna.ats.arjuna.recovery.recoveryActivator_1" value="com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement/>
+</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<number>=<RecoveryClass>
+</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>
+< create a transaction vector for transaction Uids. >
+< read in all transactions for a transaction type AtomicAction. >
+while < there are transactions in the vector of transactions. >
+do
+ < add the transaction to the vector of transactions. >
+end while.
+</screen>
+ <para>
+ Second Pass:
+ </para>
+<screen>
+while < there are transactions in the transaction vector >
+do
+ if < the intention list for the transaction still exists >
+ then
+ < create new transaction cached item >
+ < obtain the status of the transaction >
+
+ if < the transaction is not in progress >
+ then
+ < replay phase two of the commit protocol >
+ endif.
+ endif.
+end while.
+</screen>
+ <formalpara>
+ <title>Transactional Object pseudo code</title>
+ <para>First Pass</para>
+ </formalpara>
+<screen>
+< Create a hash table for uncommitted transactional objects. >
+< Read in all transactional objects within the object store. >
+while < there are transactional objects >
+do
+ if < the transactional object has an Uncommited status in the object store >
+ then
+ < add the transactional Object o the hash table for uncommitted transactional objects>
+ end if.
+end while.
+</screen>
+ <para>
+ Second Pass:
+ </para>
+<screen>
+while < there are transactions in the hash table for uncommitted transactional objects >
+do
+ if < the transaction is still in the Uncommitted state >
+ then
+ if < the transaction is not in the Transaction Cache >
+ then
+ < check the status of the transaction with the original application process >
+ if < the status is Rolled Back or the application process is inactive >
+ < rollback the transaction by removing the Uncommitted status from the Object Store >
+ 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 < 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>
+ <property
+ name="com.arjuna.ats.arjuna.recovery.recoveryExtension<i>"
+ value="com.arjuna.demo.recoverymodule.SimpleRecoveryModule"/>
+</screen>
+ <para>
+ Where <i> 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<Scanner Name>=<Scanner Class>
+</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_3_4/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>4</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/How_JBossTS_managers_the_OTS_Recovery_Protocol.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 = [â<name>:<port>â];
+ };
+
+ ots_transaction
+ {
+ transaction:iiop:addr_list = [â+<name>:<port>â];
+ };
+ 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 <name> field should be substituted by the name of the machine on which JBossTS is being run. The <port> 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_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_Failure_Recovery_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/JBoss_Transactions_Failure_Recovery_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Preface.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Preface.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Application_Process.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Application_Process.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Crash_Recovery_Architecture.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Failure_Recovery_Guide/en-US/images/ExpiryScanner.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/ExpiryScanner.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/ObjectStore.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/ObjectStore.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/POA.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/POA.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/RecoverCoordinator_Object.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/RecoverCoordinator_Object.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recover_Manager_Flow.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recovery.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recovery.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/RecoveryCoordinator.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/RecoveryCoordinator.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recovery_Manager.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Recovery_Manager.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Resource-initiated_Recovery.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Transaction_Process.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/Transaction_Process.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/en-US/images/icon.svg 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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="path2858" />
+ <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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Appendix.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Architecture_of_the_Recovery_Manager.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 ""
+"<property \n"
+" name=\"com.arjuna.ats.arjuna.recovery."
+"recoveryActivator_<number>\" value=\"RecoveryClass\" />"
+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 ""
+"<property \n"
+" name=\"com.arjuna.ats.arjuna.recovery.recoveryActivator_1\" value="
+"\"com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement/>"
+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<number>=<"
+"RecoveryClass>"
+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 ""
+"< create a transaction vector for transaction Uids. >\n"
+"< read in all transactions for a transaction type AtomicAction. >\n"
+"while < there are transactions in the vector of transactions. >\n"
+"do\n"
+" < add the transaction to the vector of transactions. >\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 < there are transactions in the transaction vector >\n"
+"do\n"
+" if < the intention list for the transaction still exists >\n"
+" then\n"
+" < create new transaction cached item >\n"
+" < obtain the status of the transaction >\n"
+" \n"
+" if < the transaction is not in progress >\n"
+" then\n"
+" < replay phase two of the commit protocol >\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 ""
+"< Create a hash table for uncommitted transactional objects. >\n"
+"< Read in all transactional objects within the object store. >\n"
+"while < there are transactional objects >\n"
+"do\n"
+" if < the transactional object has an Uncommited status in "
+"the object store >\n"
+" then\n"
+" < add the transactional Object o the hash table for "
+"uncommitted transactional objects>\n"
+" end if.\n"
+"end while."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:268
+#, no-c-format
+msgid ""
+"while < there are transactions in the hash table for uncommitted "
+"transactional objects >\n"
+"do\n"
+" if < the transaction is still in the Uncommitted state >\n"
+" then\n"
+" if < the transaction is not in the Transaction Cache "
+">\n"
+" then\n"
+" < check the status of the transaction with the "
+"original application process >\n"
+" if < the status is Rolled Back or the application "
+"process is inactive >\n"
+" < rollback the transaction by removing "
+"the Uncommitted status from the Object Store >\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 < 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 ""
+"<property\n"
+" name=\"com.arjuna.ats.arjuna.recovery.recoveryExtension<"
+"i>\"\n"
+" value=\"com.arjuna.demo.recoverymodule.SimpleRecoveryModule\"/>"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:404
+#, no-c-format
+msgid ""
+"Where <i> 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<Scanner Name>=<Scanner "
+"Class>"
+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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Author_Group.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Book_Info.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/How_JBossTS_managers_the_OTS_Recovery_Protocol.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 = [â<name>:"
+"<port>â];\n"
+" };\n"
+" \n"
+" ots_transaction\n"
+" {\n"
+" transaction:iiop:addr_list = [â+<name>:<"
+"port>â];\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 <name> field should be substituted by the name of the machine on "
+"which JBossTS is being run. The <port> 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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Preface.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Revision_History.po 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Failure_Recovery_Guide/ja-JP/Transactions_Failure_Recovery_Guide.po
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Appendix.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Appendix.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Appendix.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-08-05 01:23+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.xml:9
+#, no-c-format
+msgid "Revision History"
+msgstr ""
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Architecture_of_the_Recovery_Manager.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,1470 @@
+# 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: 2008-08-05 01:23+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 ""
+"<property \n"
+" name=\"com.arjuna.ats.arjuna.recovery."
+"recoveryActivator_<number>\" value=\"RecoveryClass\" />"
+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 ""
+"<property \n"
+" name=\"com.arjuna.ats.arjuna.recovery.recoveryActivator_1\" value="
+"\"com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement/>"
+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<number>=<"
+"RecoveryClass>"
+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 ""
+"< create a transaction vector for transaction Uids. >\n"
+"< read in all transactions for a transaction type AtomicAction. >\n"
+"while < there are transactions in the vector of transactions. >\n"
+"do\n"
+" < add the transaction to the vector of transactions. >\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 < there are transactions in the transaction vector >\n"
+"do\n"
+" if < the intention list for the transaction still exists >\n"
+" then\n"
+" < create new transaction cached item >\n"
+" < obtain the status of the transaction >\n"
+" \n"
+" if < the transaction is not in progress >\n"
+" then\n"
+" < replay phase two of the commit protocol >\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 ""
+"< Create a hash table for uncommitted transactional objects. >\n"
+"< Read in all transactional objects within the object store. >\n"
+"while < there are transactional objects >\n"
+"do\n"
+" if < the transactional object has an Uncommited status in "
+"the object store >\n"
+" then\n"
+" < add the transactional Object o the hash table for "
+"uncommitted transactional objects>\n"
+" end if.\n"
+"end while."
+msgstr ""
+
+#. Tag: screen
+#: Architecture_of_the_Recovery_Manager.xml:268
+#, no-c-format
+msgid ""
+"while < there are transactions in the hash table for uncommitted "
+"transactional objects >\n"
+"do\n"
+" if < the transaction is still in the Uncommitted state >\n"
+" then\n"
+" if < the transaction is not in the Transaction Cache "
+">\n"
+" then\n"
+" < check the status of the transaction with the "
+"original application process >\n"
+" if < the status is Rolled Back or the application "
+"process is inactive >\n"
+" < rollback the transaction by removing "
+"the Uncommitted status from the Object Store >\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 < 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 ""
+"<property\n"
+" name=\"com.arjuna.ats.arjuna.recovery.recoveryExtension<"
+"i>\"\n"
+" value=\"com.arjuna.demo.recoverymodule.SimpleRecoveryModule\"/>"
+msgstr ""
+
+#. Tag: para
+#: Architecture_of_the_Recovery_Manager.xml:404
+#, no-c-format
+msgid ""
+"Where <i> 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<Scanner Name>=<Scanner "
+"Class>"
+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_3_4/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Author_Group.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-08-05 01:23+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: corpauthor
+#: Author_Group.xml:6
+#, no-c-format
+msgid "Red Hat Documentation Group"
+msgstr ""
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Book_Info.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,47 @@
+# 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: 2008-08-05 01:23+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 "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_3_4/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/How_JBossTS_managers_the_OTS_Recovery_Protocol.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-08-05 01:23+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. 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 = [â<name>:"
+"<port>â];\n"
+" };\n"
+" \n"
+" ots_transaction\n"
+" {\n"
+" transaction:iiop:addr_list = [â+<name>:<"
+"port>â];\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 <name> field should be substituted by the name of the machine on "
+"which JBossTS is being run. The <port> 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_3_4/Transactions_Failure_Recovery_Guide/pot/Preface.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Preface.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Preface.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-08-05 01:23+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_3_4/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Revision_History.pot 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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: 2008-08-05 01:23+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
+#: Revision_History.xml:9
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/Transactions_Failure_Recovery_Guide.pot
===================================================================
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/messages.mo
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Failure_Recovery_Guide/pot/messages.mo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Installation_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>4</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Installing_ArjunaCore.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 <service name> 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 <service name> 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><service name>-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><services-name>.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>
+<property
+ name="com.arjuna.ats.arjuna.coordinator.asyncCommit" value="NO"/>
+<property
+ name="com.arjuna.ats.arjuna.objectstore.objectStoreDir" value="c:\temp\ObjectStore"/>
+</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_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,6 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_Installation_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
+
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/JBoss_Transactions_Installation_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Installation_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Preface.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Preface.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Installation_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Installation_Guide/en-US/images/Win_Services.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/Win_Services.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/icon.svg (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Installation_Guide/en-US/images/icon.svg 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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="path2858" />
+ <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_3_4/Transactions_JTA_Administration_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Administration_of_ArjunaTA.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
+ <module-info name="arjuna"><source-identifier>unknown</source-identifier><build-information>Arjuna Technologies [mlittle] (Windows 2000 5.0)</build-information><version>unknown</version><date>2002/06/15 04:06 PM</date><notes></notes><configuration><properties-file dir="null">arjuna.properties</properties-file><object-store-root>null</object-store-root></configuration></module-info>
+</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 < INFO < WARN < ERROR < 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>
+<!-- Common logging related properties. -->
+ <property
+ name="com.arjuna.common.util.logging.DebugLevel"
+ value="0x00000000"/>
+ <property
+ name="com.arjuna.common.util.logging.FacilityLevel"
+ value="0xffffffff"/>
+ <property
+ name="com.arjuna.common.util.logging.VisibilityLevel"
+ value="0xffffffff"/>
+</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_3_4/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>4</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_JTA_Administration_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/JBoss_Transactions_JTA_Administration_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Administration_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Preface.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Preface.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Administration_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/images/icon.svg (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Administration_Guide/en-US/images/icon.svg 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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="path2858" />
+ <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_3_4/Transactions_JTA_Programmers_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/An_Introduction_to_the_JTA.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>4</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Configuring_JBossJTA.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/Examples.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Examples.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Examples.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 = ';'; // 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_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_JTA_Programmers_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JBoss_Transactions_JTA_Programmers_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/JDBC_and_Transactions.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Preface.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Preface.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/The_Resource_Manager.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transaction_Recovery.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<transaction-service>
+ <properties name="jdbc" type="system">
+ <property name="DatabaseURL" value="jdbc:oracle:thin:@hostname:1521:sid"/>
+ <property name="UserName" value="username"/>
+ <property name="Password" value="password"/>
+ </properties>
+</transaction-service>
+</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>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<transaction-service>
+ <properties name="jdbc" type="system">
+ <property name="DatabaseJNDIName" value="java:ExampleDS"/>
+ <property name="UserName" value="username"/>
+ <property name="Password" value="password"/>
+ </properties>
+</transaction-service>
+</screen>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+</chapter>
+
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Transactions.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/Using_JBossJTA_in_Application_Servers.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
+<mbean code="com.arjuna.ats.jbossatx.jts.TransactionManagerService" name="jboss:service=TransactionManager">
+
+<attribute name="TransactionTimeout">300</attribute>
+<attribute name="StatisticsEnabled>true</attribute>>
+
+</mbean>
+</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_3_4/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_JTA_Programmers_Guide/en-US/images/icon.svg 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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="path2858" />
+ <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_3_4/Transactions_Web_Services_Programmers_Guide/Makefile
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/Makefile (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/Makefile 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Book_Info.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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 CP04</title>
+ <subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 4</subtitle>
+ <edition>2.0</edition>
+ <pubsnumber>4</pubsnumber>
+ <productname>JBoss Enterprise Application Platform</productname>
+ <productnumber>4.3</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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Getting_Started.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Introduction.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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'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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.ent
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.ent (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.ent 2009-02-27 04:39:03 UTC (rev 25457)
@@ -0,0 +1,5 @@
+<!ENTITY PRODUCT "Enterprise Application Platform">
+<!ENTITY BOOKID "Transactions_Web_Services_Programmers_Guide">
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2008">
+<!ENTITY VERSION "4.3.0.CP01">
Added: labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/JBoss_Transactions_Web_Services_Programmers_Guide_CP04.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Participants.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Preface.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Revision_History.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Stand-alone_Coordinator.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/The_XTS_API.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactional_Web_Services.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/Transactions_Overview.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/WS-C_WS-Atomic_Transaction_and_WS-Business_Activity_Overview.xml 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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>
+<!-- Activation Service portType Declaration -->
+<wsdl:portType name="ActivationCoordinatorPortType">
+ <wsdl:operation name="CreateCoordinationContext">
+ <wsdl:input
+ message="wscoor:CreateCoordinationContext"/>
+ </wsdl:operation>
+</wsdl:portType>
+
+<!-- Activation Requester portType Declaration -->
+<wsdl:portType name="ActivationRequesterPortType">
+ <wsdl:operation
+ name="CreateCoordinationContextResponse">
+ <wsdl:input
+ message="wscoor:CreateCoordinationContextResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="Error">
+ <wsdl:input message="wscoor:Error"/>
+ </wsdl:operation>
+</wsdl:portType>\
+</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>
+<!-- Registration Service portType Declaration -->
+<wsdl:portType name="RegistrationCoordinatorPortType">
+ <wsdl:operation name="Register">
+ <wsdl:input message="wscoor:Register"/>
+ </wsdl:operation>
+</wsdl:portType>
+
+<!-- Registration Requester portType Declaration -->
+<wsdl:portType name="RegistrationRequesterPortType">
+ <wsdl:operation name="RegisterResponse">
+ <wsdl:input message="wscoor:RegisterResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="Error">
+ <wsdl:input message="wscoor:Error"/>
+ </wsdl:operation>
+</wsdl:portType>
+</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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/AT_Model.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Back-End_Integration.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_Protocol.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Commit_State_Transitions.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Flow.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Context_Handlers.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Transaction_Control.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/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_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Architecture.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-C_Infrastructure.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/WS-Coordination_Foundations.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/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_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/Web_Services.png
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/enterprise/tags/EAP_4_3_4/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_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg
===================================================================
--- labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg (rev 0)
+++ labs/jbosstm/enterprise/tags/EAP_4_3_4/Transactions_Web_Services_Programmers_Guide/en-US/images/icon.svg 2009-02-27 04:39:03 UTC (rev 25457)
@@ -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="path2858" />
+ <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>
More information about the jboss-svn-commits
mailing list