[jboss-cvs] JBossAS SVN: r78940 - projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Sep 29 21:59:49 EDT 2008


Author: xhuang at jboss.com
Date: 2008-09-29 21:59:49 -0400 (Mon, 29 Sep 2008)
New Revision: 78940

Modified:
   projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Appendix.po
   projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Architecture.po
Log:
update

Modified: projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Appendix.po
===================================================================
--- projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Appendix.po	2008-09-30 01:33:35 UTC (rev 78939)
+++ projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Appendix.po	2008-09-30 01:59:49 UTC (rev 78940)
@@ -1,30 +1,33 @@
+# translation of Appendix.po to
 # Language /tmp/mike/JBEAP420/Cache translations for JBEAP package.
-# Copyright (C) 2007 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
 # Automatically generated, 2007.
-#
+# Xi HUANG <xhuang at redhat.com>, 2008.
 msgid ""
 msgstr ""
-"Project-Id-Version: JBEAP 420\n"
+"Project-Id-Version: Appendix\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
 "POT-Creation-Date: 2008-09-21 04:57+0000\n"
-"PO-Revision-Date: 2001-02-09 01:25+0100\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2008-09-30 11:06+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:5
 #, no-c-format
 msgid "Appendix"
-msgstr ""
+msgstr "附录"
 
 #. Tag: title
 #: Appendix.xml:6
 #, no-c-format
 msgid "Example POJO"
-msgstr ""
+msgstr "POJO 示例"
 
 #. Tag: para
 #: Appendix.xml:7
@@ -35,6 +38,8 @@
 "are their defintion (note that neither class implements "
 "<literal>Serializable</literal> )."
 msgstr ""
+"POJO 示例类有:<literal>Person</"
+"literal>、<literal>Student</literal> 和 <literal>Address</literal>。下面是它们的定义(请注意都没有实现 <literal>Serializable</literal>)。"
 
 #. Tag: programlisting
 #: Appendix.xml:10
@@ -67,6 +72,32 @@
 "   public void setLanguages(List languages) { this.languages = languages; }\n"
 "}"
 msgstr ""
+"public class Person {\n"
+"   String name=null;\n"
+"   int age=0;\n"
+"   Map hobbies=null;\n"
+"   Address address=null;\n"
+"   Set skills;\n"
+"   List languages;\n"
+"\n"
+"   public String getName() { return name; }\n"
+"   public void setName(String name) { this.name=name; }\n"
+"\n"
+"   public int getAge() { return age; }\n"
+"   public void setAge(int age) { this.age = age; }\n"
+"\n"
+"   public Map getHobbies() { return hobbies; }\n"
+"   public void setHobbies(Map hobbies) { this.hobbies = hobbies; }\n"
+"\n"
+"   public Address getAddress() { return address; }\n"
+"   public void setAddress(Address address) { this.address = address; }\n"
+"\n"
+"   public Set getSkills() { return skills; }\n"
+"   public void setSkills(Set skills) { this.skills = skills; }\n"
+"\n"
+"   public List getLanguages() { return languages; }\n"
+"   public void setLanguages(List languages) { this.languages = languages; }\n"
+"}"
 
 #. Tag: programlisting
 #: Appendix.xml:11
@@ -79,6 +110,12 @@
 "   public void setYear(String year) { this.year=year; }\n"
 "}"
 msgstr ""
+"public class Student extends Person {\n"
+"   String year=null;\n"
+"\n"
+"   public String getYear() { return year; }\n"
+"   public void setYear(String year) { this.year=year; }\n"
+"}"
 
 #. Tag: programlisting
 #: Appendix.xml:12
@@ -94,12 +131,21 @@
 "   ...\n"
 "}"
 msgstr ""
+"public class Address {\n"
+"   String street=null;\n"
+"   String city=null;\n"
+"   int zip=0;\n"
+"\n"
+"   public String getStreet() { return street; }\n"
+"   public void setStreet(String street) { this.street=street; }\n"
+"   ...\n"
+"}"
 
 #. Tag: title
 #: Appendix.xml:13
 #, no-c-format
 msgid "Sample configuration xml"
-msgstr ""
+msgstr "示例 XML 配置文件"
 
 #. Tag: para
 #: Appendix.xml:14
@@ -108,7 +154,7 @@
 "Below is a sample xml configuration for PojoCache. Today, it uses the same "
 "configuration option as that of TreeCache super-class except the MBean "
 "service class (if you are deploying it under JBoss)."
-msgstr ""
+msgstr "下面是一个 PojoCache 的示例 XML 配置文件。它使用 TreeCache 超类相同的配置,除了 MBean Service 类(如果在 JBoss 里部署)。"
 
 #. Tag: programlisting
 #: Appendix.xml:17
@@ -220,3 +266,109 @@
 "&lt;/mbean&gt;\n"
 "&lt;/server&gt;"
 msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n"
+"\n"
+"&lt;server&gt;\n"
+"&lt;mbean code=\"org.jboss.cache.aop.PojoCache\" name=\"jboss.cache:"
+"service=PojoCache\"&gt;\n"
+"&lt;depends&gt;jboss:service=TransactionManager&lt;/depends&gt;\n"
+"\n"
+"&lt;!--         Configure the TransactionManager --&gt;\n"
+"&lt;attribute name=\"TransactionManagerLookupClass\"&gt;\n"
+"org.jboss.cache.DummyTransactionManagerLookup&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--             Isolation level : SERIALIZABLE\n"
+"                            REPEATABLE_READ (default)\n"
+"                            READ_COMMITTED\n"
+"                            READ_UNCOMMITTED\n"
+"                            NONE\n"
+"--&gt;\n"
+"&lt;attribute name=\"IsolationLevel\"&gt;REPEATABLE_READ&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--              Valid modes are LOCAL, REPL_ASYNC and REPL_SYNC --&gt;\n"
+"&lt;attribute name=\"CacheMode\"&gt;REPL_SYNC&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--         Just used for async repl: use a replication queue --&gt;\n"
+"&lt;attribute name=\"UseReplQueue\"&gt;false&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--             Replication interval for replication queue (in ms) --"
+"&gt;\n"
+"&lt;attribute name=\"ReplQueueInterval\"&gt;0&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--             Max number of elements which trigger replication --&gt;\n"
+"&lt;attribute name=\"ReplQueueMaxElements\"&gt;0&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--  Name of cluster. Needs to be the same for all clusters, in order\n"
+"           to find each other\n"
+"--&gt;\n"
+"&lt;attribute name=\"ClusterName\"&gt;TreeCache-Cluster&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--  JGroups protocol stack properties. Can also be a URL,\n"
+"           e.g. file:/home/bela/default.xml\n"
+"         &lt;attribute name=\"ClusterProperties\"&gt;&lt;/attribute&gt;\n"
+"--&gt;\n"
+"&lt;attribute name=\"ClusterConfig\"&gt;\n"
+"\n"
+"&lt;config&gt;\n"
+"&lt;!--  UDP: if you have a multihomed machine,\n"
+"              set the bind_addr attribute to the appropriate NIC IP "
+"address, \n"
+"              e.g bind_addr=\"192.168.0.2\"\n"
+"--&gt;\n"
+"&lt;!--  UDP: On Windows machines, because of the media sense feature\n"
+"               being broken with multicast (even after disabling media "
+"sense)\n"
+"               set the loopback attribute to true\n"
+"--&gt;\n"
+"&lt;UDP mcast_addr=\"228.1.2.3\" mcast_port=\"48866\" ip_ttl=\"64\" ip_mcast="
+"\"true\" \n"
+"mcast_send_buf_size=\"150000\" mcast_recv_buf_size=\"80000\"\n"
+"ucast_send_buf_size=\"150000\" ucast_recv_buf_size=\"80000\" \n"
+"loopback=\"false\" /&gt;\n"
+"&lt;PING timeout=\"2000\" num_initial_members=\"3\" up_thread=\"false\" "
+"down_thread=\"false\" /&gt;\n"
+"&lt;MERGE2 min_interval=\"10000\" max_interval=\"20000\" /&gt;\n"
+"&lt;FD_SOCK /&gt;\n"
+"&lt;VERIFY_SUSPECT timeout=\"1500\" up_thread=\"false\" down_thread=\"false"
+"\" /&gt;\n"
+"&lt;pbcast.NAKACK gc_lag=\"50\" retransmit_timeout=\"600,1200,2400,4800\" "
+"max_xmit_size=\"8192\" \n"
+"up_thread=\"false\" down_thread=\"false\" /&gt;\n"
+"&lt;UNICAST timeout=\"600,1200,2400\" window_size=\"100\" min_threshold=\"10"
+"\" down_thread=\"false\" /&gt;\n"
+"&lt;pbcast.STABLE desired_avg_gossip=\"20000\" up_thread=\"false\" "
+"down_thread=\"false\" /&gt;\n"
+"&lt;FRAG frag_size=\"8192\" down_thread=\"false\" up_thread=\"false\" /&gt;\n"
+"&lt;pbcast.GMS join_timeout=\"5000\" join_retry_timeout=\"2000\" shun=\"true"
+"\" print_local_addr=\"true\" /&gt;\n"
+"&lt;pbcast.STATE_TRANSFER up_thread=\"true\" down_thread=\"true\" /&gt;\n"
+"&lt;/config&gt;\n"
+"&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--         Whether or not to fetch state on joining a cluster --&gt;\n"
+"&lt;attribute name=\"FetchStateOnStartup\"&gt;true&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--             The max amount of time (in milliseconds) we wait until "
+"the\n"
+"            initial state (ie. the contents of the cache) are retrieved "
+"from\n"
+"            existing members in a clustered environment\n"
+"\n"
+"--&gt;\n"
+"&lt;attribute name=\"InitialStateRetrievalTimeout\"&gt;5000&lt;/"
+"attribute&gt;\n"
+"\n"
+"&lt;!--             Number of milliseconds to wait until all responses for "
+"a\n"
+"            synchronous call have been received.\n"
+"--&gt;\n"
+"&lt;attribute name=\"SyncReplTimeout\"&gt;15000&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--  Max number of milliseconds to wait for a lock acquisition --&gt;\n"
+"&lt;attribute name=\"LockAcquisitionTimeout\"&gt;10000&lt;/attribute&gt;\n"
+"\n"
+"&lt;!--  Name of the eviction policy class. --&gt;\n"
+"&lt;attribute name=\"EvictionPolicyClass\" /&gt;\n"
+"&lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+

Modified: projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Architecture.po
===================================================================
--- projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Architecture.po	2008-09-30 01:33:35 UTC (rev 78939)
+++ projects/docs/enterprise/4.3/Cache/Cache_Pojo_Cache_Guide/zh-CN/Architecture.po	2008-09-30 01:59:49 UTC (rev 78940)
@@ -1,15 +1,16 @@
 # translation of Architecture.po to
 # Language /tmp/mike/JBEAP420/Cache translations for JBEAP package.
 # Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
 # Automatically generated, 2007.
-#
+# Xi HUANG <xhuang at redhat.com>, 2008.
 msgid ""
 msgstr ""
 "Project-Id-Version: Architecture\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
 "POT-Creation-Date: 2008-09-21 04:57+0000\n"
-"PO-Revision-Date: 2008-09-26 11:47+1000\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2008-09-30 11:59+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"
@@ -20,19 +21,19 @@
 #: Architecture.xml:5
 #, no-c-format
 msgid "Architecture"
-msgstr ""
+msgstr "架构"
 
 #. Tag: para
 #: Architecture.xml:6
 #, no-c-format
 msgid "Following explains the concepts and top-level design of PojoCache."
-msgstr ""
+msgstr "下面解释了 PojoCache 的概念和顶层设计。"
 
 #. Tag: title
 #: Architecture.xml:9
 #, no-c-format
 msgid "Dynamic AOP interception"
-msgstr ""
+msgstr "Dynamic AOP 拦截"
 
 #. Tag: para
 #: Architecture.xml:10
@@ -51,6 +52,9 @@
 "modification will invoke the corresponding <literal>CacheInterceptor</"
 "literal> instance. Below is a schematic illustration of this process."
 msgstr ""
+"JBossAop 提供一个 API(<literal>appendInterceptor</literal>)来在运行时添加拦截器。PojoCache 广泛地使用这个功能来提供用户透明性。每个 \"aspectized\" POJO 类都有一个相关联的 <literal>org.jboss.aop.InstanceAdvisor</literal> 实例。在 <literal>putObject(FQN fqn, Object pojo)</literal> 操作里,PojoCache 将检查是否已经附加了 <literal>org."
+"jboss.cache.aop.CacheInterceptor</literal>。(请注意 <literal>CacheInterceptor</literal> 是 PojoCache 动态管理缓存内容的入口)。如果没有,<literal>InstanceAdvisor</literal> 对象里将添加一个。之后,任何 POJO 字段的修改都将调用相应的 <literal>CacheInterceptor</"
+"literal> 实例。下面是这个过程的图解。"
 
 #. Tag: para
 #: Architecture.xml:13
@@ -60,7 +64,7 @@
 "level read write. From the perspective of PojoCache, field level "
 "interception is the appropriate mechanism to synchronize with the backend "
 "cache store. Please note that,"
-msgstr ""
+msgstr "JBossAop 具备拦截方法级调用和字段级读写的能力。从 PojoCache 的角度来看,字段级拦截是和后台缓存库同步的合适机制。请注意:"
 
 #. Tag: para
 #: Architecture.xml:16
@@ -70,6 +74,8 @@
 "regardless whether it is <literal>public</literal>, <literal>protected</"
 "literal>, or <literal>private</literal>"
 msgstr ""
+"字段级拦截应用于所有的访问限定符。那就是说,不管是 <literal>public</literal>、<literal>protected</"
+"literal> 还是 <literal>private</literal>。"
 
 #. Tag: para
 #: Architecture.xml:19
@@ -80,6 +86,8 @@
 "result, any field with these 3 qualifiers will not be replicated or "
 "persisted."
 msgstr ""
+"我们跳过带有 <literal>final</literal>、"
+"<literal>static</literal> 和 <literal>transient</literal> 限定符的字段。因此,带有这 3 个限定符的字段将不会被复制或持久化。"
 
 #. Tag: para
 #: Architecture.xml:23
@@ -95,18 +103,21 @@
 "because the value in cache and memory should have been synchronized during "
 "write operation. As a result, the field value from the cache is returned."
 msgstr ""
+"下面的图例解释了执行字段读写的操作。一旦 POJO 由缓存来管理(如在调用 <literal>putObject</"
+"literal> 方法后),每次发生字段读或写,AOP 都将自动调用 <literal>CacheInterceptor</"
+"literal>。然而,你应该看到这些图例之间的区别。虽然字段写操作将首先访问缓存,然后调用 in-memory 更新,而字段读则根本不会调用 in-memory 引用。这是因为缓存和内存里的值在写操作期间应该已经同步了。因此,缓存里的字段值将被返回。"
 
 #. Tag: title
 #: Architecture.xml:27
 #, no-c-format
 msgid "Dynamic AOP interception for field write"
-msgstr ""
+msgstr "用于字段写的 Dynamic AOP 拦截"
 
 #. Tag: title
 #: Architecture.xml:35
 #, no-c-format
 msgid "Dynamic AOP Interception for field read"
-msgstr ""
+msgstr "用于字段读的 Dynamic AOP 拦截"
 
 #. Tag: title
 #: Architecture.xml:42 Architecture.xml:85
@@ -127,18 +138,20 @@
 "discussed above. In addition, the cache will map recursively the primitive "
 "object fields into the corresponding cache nodes."
 msgstr ""
+"复杂对象的定义是由混合对象引用组成的对象。一旦复杂对象被声明为 \"prepared\"(例如 <literal>Person</literal> 对象),在 <literal>putObject(Fqn fqn, "
+"Object pojo)</literal> 操作期间,如我们上面所讨论的,PojoCache 在和这个对象关联的 <literal>InstanceAdvisor</literal> 里添加一个 <literal>CacheInterceptor</literal> 实例。此外,缓存将递归地把原始(primitive)对象字段映射到缓存节点里。"
 
 #. Tag: para
 #: Architecture.xml:46
 #, no-c-format
 msgid "The mapping rule is as follows:"
-msgstr ""
+msgstr "下面是映射规则:"
 
 #. Tag: para
 #: Architecture.xml:51
 #, no-c-format
 msgid "Create a tree node using <literal>fqn</literal>, if not yet existed."
-msgstr ""
+msgstr "如果不存在,用 <literal>fqn</literal> 创建一个树节点。"
 
 #. Tag: para
 #: Architecture.xml:56
@@ -147,6 +160,8 @@
 "Go through all the fields (say, with an association <literal>java.lang."
 "reflect.Field</literal> type field) in POJO,"
 msgstr ""
+"遍历 POJO 里的所有字段(如 <literal>java.lang."
+"reflect.Field</literal> 类型的字段)。"
 
 #. Tag: para
 #: Architecture.xml:61
@@ -158,6 +173,9 @@
 "types supported now: <literal>String, Boolean, Double, Float, Integer, Long, "
 "Short, Character.</literal>"
 msgstr ""
+"如果是一个原始(primitive)类型,字段值将用 <literal>(key, value)</literal> 对 <literal>"
+"(field.getName(), field.getValue()).</literal> 存放在 <literal>fqn</literal> 下。下面是目前支持的原始类型:<literal>String、Boolean、Double、Float、Integer、Long、"
+"Short、Character</literal>。"
 
 #. Tag: para
 #: Architecture.xml:66
@@ -166,13 +184,13 @@
 "If it is a non-primitive type, creates a child <literal>FQN</literal> and "
 "then recursively executes another <literal>pubObject</literal> until it "
 "reaches all primitive types."
-msgstr ""
+msgstr "如果是非原始类型,创建一个子 <literal>FQN</literal> 并递归地执行另外一个 <literal>pubObject</literal>,直至遍历了所有原始类型。"
 
 #. Tag: para
 #: Architecture.xml:73
 #, no-c-format
 msgid "Following is a code snippet that illustrates this mapping process"
-msgstr ""
+msgstr "下面是解释这种映射过程的代码片段"
 
 #. Tag: programlisting
 #: Architecture.xml:76
@@ -208,6 +226,8 @@
 "literal> call, the resulting tree node will schematically look like the "
 "cache node in the following figures:"
 msgstr ""
+"让我们来看一个附录里的 POJO 示例类的定义:具有混合非原始类型(如 List 和 Address)的 <literal>Person</literal> 对象。在执行 <literal>putObject</"
+"literal> 调用后,结果树节点将类似于下图里的缓存节点:"
 
 #. Tag: programlisting
 #: Architecture.xml:80
@@ -286,6 +306,32 @@
 "// of cache contents automatically.\n"
 "joe.setAge(41);"
 msgstr ""
+"import org.jboss.cache.PropertyConfigurator;\n"
+"import org.jboss.cache.aop.PojoCache;\n"
+"import org.jboss.test.cache.test.standAloneAop.Person;\n"
+"import org.jboss.test.cache.test.standAloneAop.Address;\n"
+"\n"
+"PojoCache tree = new PojoCache();\n"
+"PropertyConfigurator config = new PropertyConfigurator(); // configure tree "
+"cache.\n"
+"config.configure(tree, \"META-INF/replSync-service.xml\");\n"
+"\n"
+"Person joe = new Person(); // instantiate a Person object named joe\n"
+"joe.setName(\"Joe Black\");\n"
+"joe.setAge(31);\n"
+"\n"
+"Address addr = new Address(); // instantiate a Address object named addr\n"
+"addr.setCity(\"Sunnyvale\");\n"
+"addr.setStreet(\"123 Albert Ave\");\n"
+"addr.setZip(94086);\n"
+"joe.setAddress(addr); // set the address reference\n"
+"\n"
+"tree.startService(); // kick start tree cache\n"
+"tree.putObject(\"/aop/joe\", joe); // add aop sanctioned object (and sub-"
+"objects) into cache.\n"
+"// since it is aspectized, use of plain get/set methods will take care\n"
+"// of cache contents automatically.\n"
+"joe.setAge(41);"
 
 #. Tag: para
 #: Architecture.xml:96
@@ -295,7 +341,7 @@
 "instantiating the <literal>PojoCache</literal> , configuring, and starting "
 "the cache instance. Then, a user creates the aspectized POJO that will be "
 "put into the cache using <literal>putObject()</literal> API."
-msgstr ""
+msgstr "请注意,典型的 <literal>PojoCache</literal> 用法包括初始化<literal>PojoCache</literal>、配置和启动缓存实例。然后,用户创建将用 <literal>putObject()</literal> API 放入缓存的 aspectized POJO。"
 
 #. Tag: para
 #: Architecture.xml:99
@@ -310,6 +356,8 @@
 "replicated GUI point of view. Details of Collection class support will be "
 "given later."
 msgstr ""
+"此外,PojoCache 也自动支持带有 <literal>Collection</literal> 类类型(<literal>List</literal>、"
+"<literal>Map</literal> 和 <literal>Set</literal>)参数的 get/set 操作。例如,下面的代码将触发 PojoCache 来管理 <literal>Languages</literal> 列表的状态。下图从复制性图形界面解释了节点结构。我们在后面将给出对Collection 类的支持的细节。 "
 
 #. Tag: programlisting
 #: Architecture.xml:102
@@ -320,18 +368,22 @@
 "lang.add(\"Mandarin\");\n"
 "joe.setLanguages(lang);"
 msgstr ""
+"ArrayList lang = new ArrayList();\n"
+"lang.add(\"Ensligh\");\n"
+"lang.add(\"Mandarin\");\n"
+"joe.setLanguages(lang);"
 
 #. Tag: title
 #: Architecture.xml:104
 #, no-c-format
 msgid "Schematic illustration of List class mapping"
-msgstr ""
+msgstr "List 类映射的图解"
 
 #. Tag: title
 #: Architecture.xml:111
 #, no-c-format
 msgid "Object relationship management"
-msgstr ""
+msgstr "对象关系管理"
 
 #. Tag: para
 #: Architecture.xml:112
@@ -347,6 +399,8 @@
 "relationship. PojoCache, in contrast, can manage object relationship "
 "transparently for users."
 msgstr ""
+"如我们所提到的,传统的缓存系统在序列化过程中不支持对象关系管理。 "
+"对象关系的例子有:address 对象由 household 的成员共享,或者是父子关系。一旦对象被复制或持久化,所有这些关系都将丢失。因此,表达对象关系需要缓存系统外的显性映射。而 PojoCache 则相反,它为用户透明地管理对象关系。"
 
 #. Tag: para
 #: Architecture.xml:115
@@ -513,7 +567,7 @@
 #: Architecture.xml:140
 #, no-c-format
 msgid "Object inheritance hierarchy"
-msgstr ""
+msgstr "对象继承层次结构"
 
 #. Tag: para
 #: Architecture.xml:141
@@ -533,7 +587,7 @@
 msgid ""
 "Following is a code snippet that illustrates how the inheritance behavior of "
 "a POJO is maintained. Again, no special configuration is needed."
-msgstr ""
+msgstr "下面的代码片段解释了如何维护 POJO 的继承行为。这里也不需要特殊的配置。"
 
 #. Tag: programlisting
 #: Architecture.xml:147
@@ -575,7 +629,7 @@
 #: Architecture.xml:148
 #, no-c-format
 msgid "Collection class proxy"
-msgstr ""
+msgstr "Collection 类代理"
 
 #. Tag: para
 #: Architecture.xml:149
@@ -604,7 +658,7 @@
 msgid ""
 "Here is a code snippet that illustrates the usage of a Collection proxy "
 "reference:"
-msgstr ""
+msgstr "下面的代码片段解释了 Collection 代理引用的用法:"
 
 #. Tag: programlisting
 #: Architecture.xml:163
@@ -638,7 +692,7 @@
 msgid ""
 "Here is another snippet to illustrate the dynamic swapping of the Collection "
 "reference when it is embedded inside another object:"
-msgstr ""
+msgstr "下面的代码片段解释了当集合引用嵌入在另外一个对象里时发生的动态交换:"
 
 #. Tag: programlisting
 #: Architecture.xml:167
@@ -671,10 +725,11 @@
 #. Tag: para
 #: Architecture.xml:168
 #, no-c-format
+#, fuzzy
 msgid ""
 "As you can see, <literal>getLanguages</literal> simply returns the field "
 "reference that has been swapped out for the proxy reference counterpart."
-msgstr ""
+msgstr "如你所看到的,<literal>getLanguages</literal> 只是简单地返回字段引用"
 
 #. Tag: para
 #: Architecture.xml:171
@@ -718,7 +773,7 @@
 #: Architecture.xml:175
 #, no-c-format
 msgid "Limitation"
-msgstr ""
+msgstr "限制"
 
 #. Tag: para
 #: Architecture.xml:176
@@ -727,7 +782,7 @@
 "Use of Collection class in PojoCache helps you to track fine-grained changes "
 "in your collection fields automatically. However, current implementation has "
 "the follow limitation that we plan to address soon."
-msgstr ""
+msgstr "在 PojoCache 里使用 Collection 类可帮助你自动跟踪集合字段的细颗粒度的修改。然而,目前的实现有下列的限制,我们正计划尽快解决这些问题。"
 
 #. Tag: para
 #: Architecture.xml:179
@@ -742,6 +797,8 @@
 "ArrayList implementation. The Map interface maps to java.util.HashMap "
 "implementation."
 msgstr ""
+"目前,我们只支持有限的对 Collection 类的实现。那就是,我们有支持 List、Set 和 Map 的 API。然而,既然 API 并不规定约束关系,如 NULL 键或值,我们就有把用户实例映射到代理的技巧。例如,ArrayList 将允许 NULL 值而其他实现不允许。Set 接口对应 java.util.HashSet 实现。List 接口对应 java.util."
+"ArrayList 实现。Map 接口对应 java.util.HashMap 实现。"
 
 #. Tag: para
 #: Architecture.xml:182
@@ -752,5 +809,5 @@
 "slow. Performance between Set, Map and List collections also vary. Adding "
 "items to a Set is slower than a List or Map, since Set does not allow "
 "duplicate entries."
-msgstr ""
+msgstr "另外一个相关的问题是性能。例如,目前的实现是排序的,所以 Collection 类的 insert/delete 会较慢。Set、 Map 和 List 间的性能会有所不同。因为 Set 不允许重复条目,在 Set 里添加条目比 List 或 Map 要慢。"
 




More information about the jboss-cvs-commits mailing list