[jboss-cvs] JBossAS SVN: r83449 - projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 27 00:11:30 EST 2009


Author: xhuang at jboss.com
Date: 2009-01-27 00:11:30 -0500 (Tue, 27 Jan 2009)
New Revision: 83449

Modified:
   projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_HTTP.po
   projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_JMS.po
Log:
update

Modified: projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_HTTP.po
===================================================================
--- projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_HTTP.po	2009-01-27 04:04:17 UTC (rev 83448)
+++ projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_HTTP.po	2009-01-27 05:11:30 UTC (rev 83449)
@@ -1,15 +1,16 @@
 # translation of Clustering_Guide_HTTP.po to
 # Language /tmp/mike/JBEAP420/JBAS translations for JBEAP package.
 # Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+#
 # Automatically generated, 2007.
-#
+# Xi HUANG <xhuang at redhat.com>, 2009.
 msgid ""
 msgstr ""
 "Project-Id-Version: Clustering_Guide_HTTP\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
 "POT-Creation-Date: 2009-01-20 02:37+0000\n"
-"PO-Revision-Date: 2009-01-23 16:20+1000\n"
-"Last-Translator: Xi HUANG\n"
+"PO-Revision-Date: 2009-01-27 13:26+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"
@@ -1064,7 +1065,7 @@
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:218
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "<emphasis role=\"bold\">SET</emphasis>: With this policy, the session is "
 "considered dirty only when an attribute is set in the session (i.e., "
@@ -1076,13 +1077,12 @@
 "that object may not be replicated."
 msgstr ""
 "<emphasis role=\"bold\">SET</emphasis>:在这个选项下,只有在会话里设置了属"
-"性,会话才被认为是 dirty。如果你的应用程序总把改变的写回到会话里,从性能角度"
-"来讲这个选项可能是最优化的。如果只从会话里取出一个对象而不把它写回到会话里,"
-"对这个对象的修改将不会被复制。"
+"性(也就是调用了 HttpSession.setAttribute() ),会话才被认为是 dirty。如果你的应用程序总把改变的写回到会话里,从性能角度"
+"来讲这个选项可能是最优化的。SET 选项的缺点是,如果只从会话里取出一个对象进行修改而不把它写回到会话里,那么会话管理者将不知道这个属性为 dirty,且对这个对象的修改将不会被复制。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:221
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "<emphasis role=\"bold\">SET_AND_GET</emphasis>: With this policy, any "
 "attribute that is get or set will be marked as dirty. If an object is "
@@ -1094,7 +1094,7 @@
 msgstr ""
 "<emphasis role=\"bold\">SET_AND_GET</emphasis>:如使用这个策略,所有 get 或 "
 "set 的属性都会被标记为 ditry。如果从会话里取出一个对象并修改它,但没有写回到"
-"这个会话里,这些修改也将被复制。这个选项对性能有比较大的影响。"
+"这个会话里,这些修改也将被复制。这个选项对性能有比较大的影响,因为甚至是会话里的不可变对象(如字符串、数字)为了进行复制都将标记读属性。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:224
@@ -1110,11 +1110,11 @@
 "object is mutable, so it assumes it is an marks the attribute as dirty. This "
 "setting avoids the downside of SET while reducing the performance impact of "
 "SET_AND_GET. It is the default setting."
-msgstr ""
+msgstr "<emphasis role=\"bold\">SET_AND_NON_PRIMITIVE_GET</emphasis>:这个策略和 SET_AND_GET 相似,除了返回带有原始类型的属性值的 get 操作不把属性标记为 dirty。原始类型(如:String、Integer、Long 等)是不可变的,所以没有必要因为被读取而标记为 dirty。如果 get 操作返回非原始类型的值,会话管理者没有简单的方法来获知对象是否是可变的,所以它只是将其标记为 dirty。这种设置避免了 SET 的缺点而且降低了 SET_AND_GET 对性能的影响。它是缺省的设置。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:227
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "<emphasis role=\"bold\">ACCESS</emphasis>: This option causes the session to "
 "be marked as dirty whenever it is accessed. Since a the session is accessed "
@@ -1134,10 +1134,10 @@
 msgstr ""
 "<emphasis role=\"bold\">ACCESS</emphasis>:这个选项表示:只要会话被访问,就把"
 "会话标记为 ditry。因为在每个 HTTP 请求的过程中,会话都会被访问,所以会话每次"
-"都会被复制。会话实例里的时间戳也会相应地更新。由于复制并没有包括时间戳,其他"
+"都会被复制。ACCESS 的目的是确保最近访问的时间戳在群集里进行同步。由于复制并没有包括时间戳,其他"
 "群集节点的时间戳可能不会被更新。如果 HTTP 请求没有取出或修改任何会话属性,其"
 "他节点的会话就可能会先于活动节点过期。当设置了这个选项,会话的时间戳将在所有"
-"群集节点中同步。注意采用这个选项对性能影响很大,需要小心行事。"
+"群集节点中同步。注意采用这个选项对性能影响很大,需要小心行事。使用其他的复制触发器选项,如果会话已经超过了过期间隔的 80% 还没有进行复制,作为一个保护措施,无论如何它的时间戳都会进行复制。所以,ACCESS 只有在特殊的情况下(上述的保护措施还不够时)才有用。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:230
@@ -1165,7 +1165,7 @@
 "attributes are separately deserialized on the remote nodes, each Person "
 "object will now have a reference to its own Address object; the Address "
 "object will no longer be shared."
-msgstr ""
+msgstr "<emphasis role=\"bold\">ATTRIBUTE</emphasis>:复制仅用于会话里的 dirty 属性以及某些会话数据,如最近访问时间戳。对于承载大量数据的会话,这个选项能够提高复制的性能。然而,属性将被单独地序列化,所以如果属性里存储的对象间有任何共享的引用,在远程节点上这些引用会失效。例如,假设一个以键值“husband”存储的 Person 对象有一个对 Address 的引用,而两外一个以“wife”存储的 Person 对象有对相同 Address 对象的引用。当“husband”和“wife”属性在远程节点单独地进行解序列化时,每个 Person 对象都将有一个对自己的 Address 的引用,Address 对象将不再被共享。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:238
@@ -1175,7 +1175,7 @@
 "replicated if any attribute is dirty. The entire session is serialized in "
 "one unit, so shared object references are maintained on remote nodes. This "
 "is the default setting."
-msgstr ""
+msgstr "<emphasis role=\"bold\">SESSION</emphasis>:如果任何属性为 dirty,整个会话对象将被复制。整个会话在一个单元里进行序列化,共享的对象引用在远程节点上进行维护。这是缺省的设置。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:243
@@ -1186,11 +1186,11 @@
 "references will be preserved across the cluster. Potentially most "
 "performant, but requires changes to your application (this will be discussed "
 "later)."
-msgstr ""
+msgstr "<emphasis role=\"bold\">FIELD</emphasis>:只对于会话属性对象里的单个修改的数据字段进行复制。共享的对象引用将在群集里保留。可能是性能最好的,但要求对程序进行一些修改(我们在后面将进行讨论)。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:246
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "The <literal>replication-field-batch-mode</literal> element indicates "
 "whether you want all replication messages associated with a request to be "
@@ -1198,11 +1198,11 @@
 "FIELD. Default is <literal>true</literal>."
 msgstr ""
 "<literal>replication-field-batch-mode</literal> 指出你是否在每个 HTTP 请求之"
-"间进行批量更新。它的缺省值是 <literal>true</literal>。"
+"间进行批量更新。只使用于 replication-granularity 为 FIELD 的情况,它的缺省值是 <literal>true</literal>。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:247
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "If your sessions are generally small, SESSION is the better policy. If your "
 "session is larger and some parts are infrequently accessed, ATTRIBUTE "
@@ -1214,17 +1214,17 @@
 "如果你的会话通常很小,使用 SESSION 选项是更好的策略。如果你的会话更大些而且某"
 "些部分并不常被访问,ATTRIBUTE 方式的复制就会更有效。如果你的应用程序在会话属"
 "性里拥有非常大的数据对象,而且只有这些对象里的某些字段被经常修改,采用 FIELD "
-"策略将是最佳选择。在后面的内容里,让我们讨论一下怎样使用 FIELD 级的复制。"
+"策略将是最佳选择。在后面的内容里,让我们讨论一下怎样使用 FIELD 级的复制。 "
 
 #. Tag: title
 #: Clustering_Guide_HTTP.xml:259
-#, fuzzy, no-c-format
+#, no-c-format
 msgid "Using FIELD level replication"
-msgstr "使用字段级(FIELD level)的复制"
+msgstr "使用字段级(FIELD level)的复制 "
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:260
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "FIELD-level replication only replicates modified data fields inside objects "
 "stored in the session. Its use could potentially drastically reduce the data "
@@ -1235,8 +1235,7 @@
 msgstr ""
 "字段级复制只复制存储在会话里的对象内部的被修改的数据字段。它能够极大地减少群"
 "集节点之间的数据通信,也因此提高了整个群集系统的性能。为了使用字段级复制,你"
-"首先得用 Java 类来指出哪个字段要被复制。它是通过在 JavaDocs 嵌入的 JDK 1.4 风"
-"格的注解(annotations)来完成的。"
+"首先得用 Java 类来允许会话缓存检测哪个字段已被修改并需要复制。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:262
@@ -1244,11 +1243,11 @@
 msgid ""
 "The first step in doing this is to identify the classes that need to be "
 "prepared. This is done via annotations. For example:"
-msgstr ""
+msgstr "第一步是确认需要准备的类。这是通过注解完成的。例如:"
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:266
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "<![CDATA[\n"
 "@org.jboss.cache.aop.AopMarker\n"
@@ -1257,26 +1256,24 @@
 "...\n"
 "}]]>"
 msgstr ""
-"/*\n"
-" *\n"
-" * @@org.jboss.web.tomcat.tc5.session.InstanceOfAopMarker\n"
-" */\n"
-"public class Person \n"
+"<![CDATA[\n"
+"@org.jboss.cache.aop.AopMarker\n"
+"public class Address \n"
 "{\n"
 "...\n"
-"}"
+"}]]>"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:268
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "If you annotate a class with InstanceAopMarker instead, then all of its "
 "subclasses will be automatically annotated as well. Similarly, you can "
 "annotate an interface with InstanceofAopMarker and all of its implementing "
 "classes will be annotated. For example:"
 msgstr ""
-"如果你用 <literal>InstanceAopMarker</literal> 注解类时,它所有的子类都将自动"
-"被注解。例如,"
+"如果你用 InstanceAopMarker 注解类时,它所有的子类都将自动"
+"被注解。类似地,你可以用 InstanceofAopMarker 注解一个接口,它的所有实现类也都将被注解。例如:"
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:271
@@ -1295,6 +1292,18 @@
 "}\n"
 "]]>"
 msgstr ""
+"<![CDATA[\n"
+"@org.jboss.cache.aop.InstanceOfAopMarker\n"
+"public class Person \n"
+"{\n"
+"...\n"
+"}\n"
+"then when you have a sub-class like\n"
+"public class Student extends Person\n"
+"{\n"
+"...\n"
+"}\n"
+"]]>"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:273
@@ -1306,6 +1315,8 @@
 "need to build their projects using JDK 1.4. In this case, annotating classes "
 "can be done via JDK 1.4 style annotations embedded in JavaDocs. For example:"
 msgstr ""
+"我们不需要注解 <literal>Student</literal>。因为它是 <literal>Person</"
+"literal> 的子类,它将被自动注解。Jboss AS 4.2 在运行时需要 JDK 5,但有些用户可能仍然需要用 JDK 1.4 来构建程序,在这种情况下,注解类可以用 JavaDocs 内嵌的 JDK 1.4 风格的注解来完成。例如:"
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:278
@@ -1333,7 +1344,7 @@
 #: Clustering_Guide_HTTP.xml:281
 #, no-c-format
 msgid "The anologue for <literal>@InstanceAopMarker</literal> is:"
-msgstr ""
+msgstr "<literal>@InstanceAopMarker</literal> 是:"
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:283
@@ -1359,7 +1370,7 @@
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:287
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "Once you have annotated your classes, you will need to perform a pre-"
 "processing step to bytecode enhance your classes for use by TreeCacheAop. "
@@ -1370,10 +1381,9 @@
 "annotations are used it is not necessary. Here is an example on how to "
 "invoke those commands from command line."
 msgstr ""
-"然而,既然目前我们只支持 JDK 1.4 风格的注解(由 JBoss Aop 提供),你将需要执"
-"行一个预处理步骤。在 Java 编译器编译之前和之后,你需要用 JBoss AOP pre-"
+"对类进行注解后,你将需要用 TreeCacheAop 来执行一个预处理步骤。在 Java 编译器编译之前和之后,你需要用 JBoss AOP pre-"
 "compiler <literal>annotationc</literal> 和 post-compiler <literal>aopc</"
-"literal> 来处理上面的源码。这里是一个怎样从命令行调用这些命令的例子。"
+"literal> 来处理上面的源码。只有使用了 JDK 1.4 风格的注解才需要上述步骤,JDK 5 则不需要。下面是一个怎样从命令行调用这些命令的例子。"
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:291
@@ -1389,20 +1399,18 @@
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:293
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "Please see the JBoss AOP documentation for the usage of the pre- and post-"
 "compiler. The JBoss AOP project also provides easy to use ANT tasks to help "
 "integrate those steps into your application build process."
 msgstr ""
 "请参考 JBoss AOP 文档关于怎样使用 pre- 和 post-compiler。JBoss AOP 项目也提供"
-"使用 ANT 来把上述步骤集成在应用程序的 build 过程中的简单方法。下一个 AS 发布"
-"版本将提供对 JDK 5.0 注解的更透明的支持。但是现在,你还得用 pre- 和 post-"
-"compiler 来编译你的源码。"
+"使用 ANT 来把上述步骤集成在应用程序的 build 过程中的简单方法。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:297
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "You can see a complete example on how to build, deploy, and validate a FIELD-"
 "level replicated web application from this page: <ulink url=\"http://wiki."
@@ -1414,7 +1422,7 @@
 "page=Http_session_field_level_example</literal> 里看到一个怎样构建(build),"
 "部署(deploy),和验证(validate)采用字段级复制的 web 应用程序的完整例子。这"
 "个例子捆绑了 pre- 和 post-compile 工具,所以你不需要再下载单独的 JBoss AOP "
-"了。"
+"了。 "
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:301
@@ -1426,15 +1434,15 @@
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:305
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "In the server's <literal>deploy/jboss-web-cluster.sar/META-INF/jboss-service."
 "xml</literal> file, the <literal>inactiveOnStartup</literal> and "
 "<literal>useMarshalling</literal> attributes must both be <literal>true</"
 "literal>."
 msgstr ""
-"在服务器的 <literal>deploy/tc5-cluster.sar/META-INF/jboss-service.xml</"
-"literal> 文件里,<literal>inactiveOnStartup</literal> 和"
+"在服务器的 <literal>deploy/jboss-web-cluster.sar/META-INF/jboss-service."
+"xml</literal> 文件里,<literal>inactiveOnStartup</literal> 和"
 "<literal>useMarshalling</literal> 属性必须都为 <literal>true</literal>。"
 
 #. Tag: para
@@ -1536,7 +1544,7 @@
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:328
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "/JSESSION\n"
 "\n"
@@ -1555,6 +1563,8 @@
 msgstr ""
 "/JSESSION\n"
 "\n"
+"/localhost\n"
+"\n"
 "/quote\n"
 "\n"
 "/FB04767C454BAB3B2E462A27CB571330\n"
@@ -1568,7 +1578,7 @@
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:330
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "This output shows two separate web sessions, in one application named "
 "<emphasis>quote</emphasis>, that are being shared via JBossCache. This "
@@ -1588,23 +1598,23 @@
 "这个输出结果展示了在一个叫 <emphasis>quote</emphasis> 应用程序里的两个独立的 "
 "web 会话,它们通过 JBossCache 来共享。这个例子使用了 <literal>session</"
 "literal> 的 <literal>replication-granularity</literal>。如果使用了 "
-"<literal>attribute</literal> 级的复制,应该可以看到展示每个被复制的会话属性的"
+"<literal>ATTRIBUTE</literal> 级别的复制,应该可以看到展示每个被复制的会话属性的"
 "其他条目。在两种情况下,被复制的值都存储在一个不透明的 "
 "<literal>MarshelledValue</literal> 容器里。目前还没有任何工具可以让你查看这些"
 "被复制的会话值。如果你没有看到任何输出,要么是应用程序没有正确地标记为"
 "<literal>distributable</literal>,要么就是你根本没有访问把值写入 HTTP 会话的"
 "应用程序。<literal>org.jboss.cache</literal> 和  <literal>org.jboss.web</"
-"literal> 日志类别提供了可用于调试目的对会话复制的其他视角。"
+"literal> 日志类别提供了可用于调试目的对会话复制的其他视角。 "
 
 #. Tag: title
 #: Clustering_Guide_HTTP.xml:338
-#, fuzzy, no-c-format
+#, no-c-format
 msgid "Using Clustered Single Sign On"
-msgstr "使用单点登录(Single Sign On)"
+msgstr "使用群集的单点登录(Single Sign On) "
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:340
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "JBoss supports clustered single sign-on, allowing a user to authenticate to "
 "one web application on a JBoss server and to be recognized on all web "
@@ -1618,8 +1628,7 @@
 "JBoss 支持群集的单点登录(single sign-on),允许用户在一个 JBoss 服务器上验证"
 "应用程序,然后被在同一个主机或群集里的其他节点里的被部署在同一个虚拟主机上的"
 "所有应用程序识别。HTTP 会话复制服务处理复制验证(Authentication "
-"replication)。虽然会话复制不需要显性地为这个应用程序启用,但 <literal>tc5-"
-"cluster-service.xml</literal> 文件必须被部署。 "
+"replication)。虽然会话复制不需要显性地为这个应用程序启用,但 <literal>jboss-web-cluster.sar</literal> 文件必须被部署。 "
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:342
@@ -1646,9 +1655,9 @@
 
 #. Tag: title
 #: Clustering_Guide_HTTP.xml:348
-#, fuzzy, no-c-format
+#, no-c-format
 msgid "Clustered Session Notification Policy"
-msgstr "群集的 Session EJBs"
+msgstr "群集的会话通知策略(Session Notification Policy)"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:349
@@ -1662,6 +1671,10 @@
 "HttpSessionAttributeListener</package>, and <package>javax.servlet.http."
 "HttpSessionBindingListener interfaces</package>."
 msgstr ""
+"本节介绍群集会话通知策略的概念,它决定和会话事件相关的 servlet 专有的通知是否被允许出现在本地群集节点里。这样的通知被发送给 <package>javax.servlet."
+"http.HttpSessionListener</package>、<package>javax.servlet.http."
+"HttpSessionAttributeListener</package> 和 <package>javax.servlet.http."
+"HttpSessionBindingListener </package> 接口的实现。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:352
@@ -1671,6 +1684,8 @@
 "web.tomcat.service.session.notification</package> Java package, and all "
 "classes referenced below are a part of this package."
 msgstr ""
+"<package>org.jboss."
+"web.tomcat.service.session.notification</package> Java 包定义了这个新的通知策略概念,下面引用的所有类都是这个包的一部分。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:354
@@ -1686,6 +1701,9 @@
 "situations in which no <classname>HttpSessionListener</classname> and "
 "<classname>HttpSessionAttributeListener</classname> notifications are sent."
 msgstr ""
+"虽然可以根据自定义需要来实现 <classname>ClusteredSessionNotificationPolicy</classname>,JBoss 提供了 <classname>LegacyClusteredSessionNotificationPolicy</classname>,它实现了以前 JBoss 版本(缺省)的行为,以及 <classname>IgnoreUndeployLegacyClusteredSessionNotificationPolicy</"
+"classname>,它实现了相同的行为,除了在没有发送 <classname>HttpSessionListener</classname> 和 "
+"<classname>HttpSessionAttributeListener</classname> 通知的卸载情况下。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:357
@@ -1697,6 +1715,9 @@
 "classname> or to a custom <classname>ClusteredSessionNotificationPolicy</"
 "classname> implementation by performing one of the following steps:"
 msgstr ""
+"我们也可以通过下列步骤把缺省的 <classname>LegacyClusteredSessionNotificationPolicy</classname> 修改为 <classname>IgnoreUndeployLegacyClusteredSessionNotificationPolicy</"
+"classname>,或者是自定义的 <classname>ClusteredSessionNotificationPolicy</"
+"classname> 实现:"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:362
@@ -1706,7 +1727,7 @@
 "and setting it equal to the class name of the policy you want to choose. "
 "This will change the policy for all web applications deployed in the "
 "application server."
-msgstr ""
+msgstr "使用系统属性 'jboss.web.clustered.session.notification.policy' 并设置它为选择的策略的名字。这将改变部署在应用服务器里的所有 web 应用程序的策略。"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:367
@@ -1714,7 +1735,7 @@
 msgid ""
 "Using jboss-web.xml to set the policy per application using the following "
 "format:"
-msgstr ""
+msgstr "使用下列格式在 jboss-web.xml 设置每个应用程序的策略:"
 
 #. Tag: programlisting
 #: Clustering_Guide_HTTP.xml:370
@@ -1726,6 +1747,11 @@
 "        &lt;/session-notification-policy&gt;\n"
 "&lt;/replication-config&gt;"
 msgstr ""
+"&lt;replication-config&gt;\n"
+"        &lt;session-notification-policy&gt;\n"
+"                CLASS-NAME-HERE\n"
+"        &lt;/session-notification-policy&gt;\n"
+"&lt;/replication-config&gt;"
 
 #. Tag: para
 #: Clustering_Guide_HTTP.xml:375
@@ -1738,4 +1764,8 @@
 "properly handle the element in JBoss AS 4.2.4 and later as well was in EAP "
 "4.2.0.GA_CP05 and 4.3.0.GA_CP03 and later."
 msgstr ""
+"上面的 session-notification-policy 元素不是 JBoss 4.2+ jboss-web.xml 的官方 DTD 的一部分(请参考 <ulink url=\"http://www."
+"jboss.org/j2ee/dtd/jboss-web_4_2.dtd\">http://www.jboss.org/j2ee/dtd/jboss-"
+"web_4_2.dtd</ulink>)。然而,内部的 jboss-web.xml 解析逻辑可以象处理 EAP "
+"4.2.0.GA_CP05 和 4.3.0.GA_CP03 一样正确地处理 JBoss AS 4.2.4 以及之后版本的这个元素。"
 

Modified: projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_JMS.po
===================================================================
--- projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_JMS.po	2009-01-27 04:04:17 UTC (rev 83448)
+++ projects/docs/enterprise/4.3.3/Server_Configuration_Guide/zh-CN/Clustering_Guide_JMS.po	2009-01-27 05:11:30 UTC (rev 83449)
@@ -1,18 +1,21 @@
+# translation of Clustering_Guide_JMS.po to
 # Language /tmp/mike/JBEAP420/JBAS translations for JBEAP package.
-# Copyright (C) 2007 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+#
 # Automatically generated, 2007.
-#
+# Xi HUANG <xhuang at redhat.com>, 2009.
 msgid ""
 msgstr ""
-"Project-Id-Version: JBEAP 420\n"
+"Project-Id-Version: Clustering_Guide_JMS\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
 "POT-Creation-Date: 2009-01-20 02:37+0000\n"
-"PO-Revision-Date: 2001-02-09 01:25+0100\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2009-01-27 15:11+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
 #: Clustering_Guide_JMS.xml:5
@@ -55,7 +58,7 @@
 "JBoss Messaging project. JBoss Messaging's clustering implementation is "
 "considerably different from HA-JMS based on JBoss MQ; most notably it is not "
 "based on a singleton service only running on one node in the cluster."
-msgstr ""
+msgstr "JBoss AS 4.2.2 以及之前版本里的 HA-JMS 是基于 JBoss MQ 产品的。在后来的 AS 版本里,JBoss MQ 将被新的 JBoss Messaging 所替代。JBoss Messaging 的群集实现和基于 JBoss MQ 的 HA-JMS 大不相同;最值得注意的是它不基于只运行在群集里某一节点上的单点登录服务。"
 
 #. Tag: title
 #: Clustering_Guide_JMS.xml:25
@@ -65,7 +68,7 @@
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:26
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "The JBoss HA-JMS service (i.e., message queues topics and supporting "
 "services) only runs on a single node (i.e., the master node) in the cluster "
@@ -75,7 +78,7 @@
 "against server failures but does not reduce the work load on the JMS server "
 "node."
 msgstr ""
-"JBoss HA-JMS 服务(也就是消息队列和主题)任何给定时间都只在群集里的单节点运行"
+"JBoss HA-JMS 服务(也就是消息队列、主题和相关服务)任何给定时间都只在群集里的单节点运行"
 "(主节点)。如果这个节点崩溃了,群集系统简单地选取另外一节点来运行 JMS 服务"
 "(fail-over)。这种设置提供了针对服务器瘫痪的冗余措施,但并没有降低 JMS 服务"
 "器节点的负载。"
@@ -112,10 +115,12 @@
 "hasingleton. They should only be deployed there if you only want them "
 "running on one node in the cluster at a time."
 msgstr ""
+"all 配置里的 HA-JMS 和 default 配置里的非 HA 版本的最大区别是大多数配置文件的位置。对于 HA-JMS,大多数配置文件位于 deploy-hasingleton/jms 目录而不是 deploy/jms 里。你的队列和主题必须部署在 deploy-hasingleton 里(或其子目录如 deploy-hasingleton/jms)。充当 HA-JMS 的客户端的应用程序组件(如 MDB 或其他 JMS 客户)不需要部署在 deploy-"
+"hasingleton 目录里。只有你希望它们在同一时刻只运行一个节点上时,它们才应该部署在那里。"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:38
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "To use the singleton fail-over HA-JMS service, you must configure JMS "
 "services identically on all nodes in the cluster. That includes all JMS "
@@ -124,11 +129,11 @@
 "be deployed identically across the cluster."
 msgstr ""
 "为了使用 singleton fail-over HA-JMS 服务,你必须在群集里的所有节点上配置相同"
-"的 JMS 服务。这包括所有和 JMS 相关的 MBeans 以及部署的 JMS 应用程序。"
+"的 JMS 服务。这包括所有和 JMS 相关的 MBeans 以及部署的队列和主题。然而,使用 JMS 的应用程序(如 MDB 和其他 JMS 客户端)不需要在相等地群集里部署。"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:44
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "The JMS server is configured to persist its data in the <literal>DefaultDS</"
 "literal>. By default, that is the embedded HSQLDB. However, for the HA-JMS "
@@ -140,8 +145,7 @@
 "setup a shared database for JMS. You need to do the following:"
 msgstr ""
 "JMS 服务器被设置成在 <literal>DefaultDS</literal> 里持久化它的数据。在缺省的"
-"情况下,那就是内含的 HSQLDB。然而,在大部分群集环境里,所有节点都需要把数据持"
-"久化到一个共享数据库里。因此,在你启动群集 JMS 之前要做的第一件事就是建立一个"
+"情况下,那就是内含的 HSQLDB。然而,为了使 HA-JMS 服务的失效切换能够工作,新启动的 HA-JMS 服务器需要能够找到旧服务器持久化的数据。如果数据持久化在由旧服务器的 HSQLDB 写入的文件里的话,这就不太可能发生了。因此,在你启动群集 JMS 之前要做的第一件事就是建立一个"
 "共享数据库。你需要做如下的事情:"
 
 #. Tag: para
@@ -154,6 +158,8 @@
 "examples/jca</literal> directory, where <literal>xxx</literal> is the name "
 "of the target shared database (e.g., <literal>mysql-ds.xml</literal>)."
 msgstr ""
+"配置 <literal>DefaultDS</literal>,使其指向你选择的数据库服务器。你需要用 <literal>docs/"
+"examples/jca</literal> 目录里的 <literal>xxx-ds.xml</literal> 文件来替换 <literal>deploy/hsqlsb-ds.xml</literal>,这里的 <literal>xxx</literal> 是目标共享数据库的名称(如 <literal>mysql-ds.xml</literal>)。"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:57
@@ -174,7 +180,7 @@
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:66
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "There is no need to replace the <literal>hsqldb-jdbc-state-service.xml</"
 "literal> file under the <literal>server/all/deploy-hasingleton/jms</literal> "
@@ -187,13 +193,13 @@
 "<literal>hsqldb-jdbc-state-service.xml</literal> 文件。尽管它的名字里包含 "
 "<literal>hsql</literal>,它适用于所有兼容 SQL92 的数据库,包括 HSQL,MySQL,"
 "SQL Server 和更多数据库。象我们上面配置的那样,它自动使用 "
-"<literal>DefaultDS</literal> 来存放数据。"
+"<literal>DefaultDS</literal> 来存放数据。 "
 
 #. Tag: title
 #: Clustering_Guide_JMS.xml:77
-#, fuzzy, no-c-format
+#, no-c-format
 msgid "Non-MDB HA-JMS Clients"
-msgstr "HA-JMS 客户"
+msgstr "非 MDB 的 HA-JMS 客户端"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:79
@@ -211,7 +217,7 @@
 "and topicsusing HA-JNDI (the default port is 1100). This ensures the factory/"
 "queue/topic can be found no matter which cluster node is running the HA-JMS "
 "server."
-msgstr ""
+msgstr "HA-JMS 客户端必须用 HA-JNDI(缺省端口是 1100)查找 JMS 连接工厂以及队列和主题。这确保了不管哪个节点在运行 HA-JMS 服务器,工厂/队列/主题都可以被找到。"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:91
@@ -221,7 +227,7 @@
 "inside the AS, the lookup via HA-JNDI can be configured using the "
 "component's deployment descriptors: In the standard deployment descriptor "
 "(ejb-jar.xml or web.xml):"
-msgstr ""
+msgstr "如果客户端是一个运行在 AS 内部的 J2EE 组件(Session Bean 或 Web 应用程序),通过 HA-JNDI 的查找可以用组件的部署描述符来配置,在标准的部署描述符(ejb-jar.xml 或 web.xml)里:"
 
 #. Tag: programlisting
 #: Clustering_Guide_JMS.xml:99
@@ -241,12 +247,25 @@
 "</resource-ref>\n"
 "]]>"
 msgstr ""
+"<![CDATA[\n"
+"<resource-ref>\n"
+"         <res-ref-name>jms/ConnectionFactory</res-ref-name>\n"
+"         <res-type>javax.jms.QueueConnectionFactory</res-type>\n"
+"         <res-auth>Container</res-auth>\n"
+"</resource-ref>\n"
+"         \n"
+"<resource-ref>\n"
+"         <res-ref-name>jms/Queue</res-ref-name>\n"
+"         <res-type>javax.jms.Queue</res-type>\n"
+"         <res-auth>Container</res-auth>\n"
+"</resource-ref>\n"
+"]]>"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:101
 #, no-c-format
 msgid "And in the JBoss-specific descriptor (jboss.xml or jboss-web.xml):"
-msgstr ""
+msgstr "且在 JBoss 专有的描述符文件里(jboss.xml 或 jboss-web.xml):"
 
 #. Tag: programlisting
 #: Clustering_Guide_JMS.xml:105
@@ -266,6 +285,19 @@
 "         <jndi-name>jnp://localhost:1100/queue/A</jndi-name>\n"
 "</resource-ref>]]>"
 msgstr ""
+"<![CDATA[ \n"
+"<resource-ref>\n"
+"         <res-ref-name>jms/ConnectionFactory</res-ref-name>\n"
+"        <!-- Use the JMS Resource Adapter, let it deal\n"
+"         with knowing where the JMS server is -->\n"
+"        <jndi-name>java:/JmsXA</jndi-name>\n"
+" </resource-ref>\n"
+" \n"
+"<resource-ref>\n"
+"         <res-ref-name>jms/Queue</res-ref-name>\n"
+"         <!-- Use HA-JNDI so we can find the queue on any node -->\n"
+"         <jndi-name>jnp://localhost:1100/queue/A</jndi-name>\n"
+"</resource-ref>]]>"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:110
@@ -277,7 +309,7 @@
 "logic. If the HA-JMS service fails over to a different master node, all "
 "client operations on the current connection will fail with a JMSException. "
 "To deal with this:"
-msgstr ""
+msgstr "如果服务器进行失效切换,HA-JMS 客户端必须处理发生在 JMS 连接上的异常。不象群集的 EJB 代理,JMS 连接对象不包括自动失效切换逻辑。如果 HA-JMS 服务切换到不同的主节点上,当前连接上的所有的客户操作都会失败并抛出 JMSException 异常。为了处理这种情况:"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:118
@@ -288,7 +320,7 @@
 "find the JBoss JMS Resource Adapter; the resource adapter will handle the "
 "task of detecting server failover and reconnecting to the new server when it "
 "starts."
-msgstr ""
+msgstr "如果客户端运行在应用服务器内部,客户端应该通过查找 java:/JmsXAin JNDI 来获取连接工厂。这会找到 JBoss JMS 资源适配器,这个资源适配器将检测服务器失效切换并在启动时重新连接到新的服务器。"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:122
@@ -300,7 +332,7 @@
 "the task of closing the old connection and reconnecting. Following is a "
 "example application that continuously sends messages to a queue, handling "
 "any exceptions that occur:"
-msgstr ""
+msgstr "对于应用服务器外部的客户端,最好的办法是在连接上注册一个 ExceptionListener,如果连接发生了异常,这个 Listener 将获得一个回调函数。这个回调函数应该处理关闭旧连接和重新连接的任务。下面是一个持续地向某个队列发送消息的例程,它可以处理发生的任何异常:"
 
 #. Tag: programlisting
 #: Clustering_Guide_JMS.xml:128
@@ -467,12 +499,172 @@
 "}\n"
 "]]>"
 msgstr ""
+"<![CDATA[\n"
+"package com.test.hajms.client;\n"
+"\n"
+"import javax.naming.InitialContext;\n"
+"import javax.jms.ConnectionFactory;\n"
+"import javax.jms.Destination;\n"
+"import javax.jms.Connection;\n"
+"import javax.jms.Session;\n"
+"import javax.jms.MessageProducer;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.ExceptionListener;\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.DeliveryMode;\n"
+"\n"
+"import org.apache.commons.logging.Log;\n"
+"import org.apache.commons.logging.LogFactory;\n"
+" \n"
+"public class FailoverJMSClient\n"
+"{\n"
+"private static final Log log = LogFactory.getLog(FailoverJMSClient.class);\n"
+"\n"
+"public static final int NUM_RETRIES = 3;\n"
+"\n"
+"volatile boolean doSend = true;\n"
+"ConnectionFactory connectionFactory;\n"
+"Destination queue;\n"
+"Connection connection;\n"
+"Session session;\n"
+"MessageProducer producer;\n"
+"\n"
+"\n"
+"public static void main(String[] args) throws Exception\n"
+"{\n"
+"FailoverJMSClient jmsClient = new FailoverJMSClient();\n"
+"jmsClient.setUpJMS();\n"
+"jmsClient.sendMessages();\n"
+"}\n"
+"\n"
+"\n"
+"public boolean setUpJMS()\n"
+"{\n"
+"InitialContext ic;\n"
+"try\n"
+"{\n"
+"// assume jndi.properties is configured for HA-JNDI\n"
+"ic = new InitialContext();\n"
+"connectionFactory = (ConnectionFactory)ic.lookup(\"ConnectionFactory\");\n"
+"queue = (Destination)ic.lookup(\"queue/FailoverTestQueue\");\n"
+"connection = connectionFactory.createConnection();\n"
+"try\n"
+"{\n"
+"log.debug(\"Connection created ...\");\n"
+"\n"
+"// KEY - register for exception callbacks\n"
+"connection.setExceptionListener(new ExceptionListenerImpl());\n"
+"\n"
+"session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n"
+"log.debug(\"Session created ...\");\n"
+"producer = session.createProducer(queue);\n"
+"\n"
+"producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n"
+"log.debug(\"Producer created ...\");\n"
+"\n"
+"return true;\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"// We failed so close the connection\n"
+"try\n"
+"{\n"
+"connection.close();\n"
+"}\n"
+"catch (JMSException ignored)\n"
+"{\n"
+"// Pointless\n"
+"}\n"
+"// Rethrow the initial problem to where we will log it\n"
+"throw e;\n"
+"} \n"
+"finally\n"
+"{\n"
+"// And close the initial context\n"
+"// We don't want to wait for the garbage collector to close it\n"
+"// otherwise we'll have useless hanging network connections\n"
+"ic.close();\n"
+"}\n"
+"}\n"
+"catch (Exception e)\n"
+"{\n"
+"log.error(\"Error setting up JMS\", e);\n"
+"return false;\n"
+"}\n"
+"}\n"
+"\n"
+"public void sendMessages()\n"
+"{\n"
+"int cnt = 0;\n"
+"while(doSend)\n"
+"{\n"
+"try\n"
+"{\n"
+"Thread.sleep(100);\n"
+"\n"
+"Message m = session.createObjectMessage(new Integer(cnt++));\n"
+"producer.send(m);\n"
+"\n"
+"log.trace(\"message \" + cnt + \" sent\");\n"
+"\n"
+"}\n"
+"catch(Exception e)\n"
+"{\n"
+"cnt--;\n"
+"log.error(e.getMessage());\n"
+"}\n"
+"}\n"
+"}\n"
+"\n"
+"\n"
+"\n"
+"private class ExceptionListenerImpl implements ExceptionListener\n"
+"{\n"
+"public void onException(JMSException e)\n"
+"{\n"
+"                         \n"
+"for(int i = 0; i < NUM_RETRIES; i++)\n"
+"            {\n"
+"            log.warn(\"Connection has problems, trying to re-create it, "
+"attempt \" +\n"
+"            (i + 1) + \" ...\");\n"
+"            \n"
+"            try \n"
+"            {\n"
+"            connection.close();  // unregisters the ExceptionListener\n"
+"            }\n"
+"            catch(Exception e2) {\n"
+"            // I will get an Exception anyway, since the connection to "
+"the                     \n"
+"            //server is broken, but close() frees up resources associated \n"
+"            // with the connection\n"
+"            }\n"
+"            \n"
+"            boolean setupOK = setUpJMS();\n"
+"            \n"
+"            if (setupOK)\n"
+"            {\n"
+"            log.info(\"Connection re-established\");\n"
+"            return;\n"
+"            }\n"
+"            else\n"
+"            {\n"
+"            log.warn(\"Re-creating connection failed, retrying ...\");\n"
+"           }\n"
+"            }\n"
+"            \n"
+"            log.error(\"Cannot re-establish connection, giving up ...\");\n"
+"            doSend = false;\n"
+"            }\n"
+"            }\n"
+"}\n"
+"]]>"
 
 #. Tag: title
 #: Clustering_Guide_JMS.xml:132
 #, no-c-format
 msgid "MDBs and HA-JMS Failover"
-msgstr ""
+msgstr "MDB 和 HA-JMS 的失效切换"
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:133
@@ -481,7 +673,7 @@
 "When you deploy an MDB in JBoss, JBoss' MDB container handles for you all "
 "issues associated with finding the cluster singleton HA-JMS server and with "
 "reconnecting to it if it fails over."
-msgstr ""
+msgstr "当你在 JBoss 里部署 MDB 时,JBoss 的 MDB 容器为你处理所有和查找群集单点登录 HA-JMS 服务器并在失效切换时重新连接相关的问题。"
 
 #. Tag: title
 #: Clustering_Guide_JMS.xml:143
@@ -519,12 +711,12 @@
 
 #. Tag: para
 #: Clustering_Guide_JMS.xml:155
-#, fuzzy, no-c-format
+#, no-c-format
 msgid ""
 "The <literal>org.jboss.mq.server.ReceiversImplArrayList</literal> is the "
 "implementation using an <literal>ArrayList</literal>."
 msgstr ""
-"<literal>org.jboss.mq.server.ReceiversImplArrayList</literal> 是 "
+"<literal>org.jboss.mq.server.ReceiversImplArrayList</literal> 是使用了 "
 "<literal>ArrayList</literal> 的实现。"
 
 #. Tag: para
@@ -549,3 +741,7 @@
 "to an undesirable implementation detail of <literal>HashSet</literal> in the "
 "JVM."
 msgstr ""
+"你可以把接收者实现类的名字指定为定义每个节点上的永久 JMS <literal>Queue</literal> 或 "
+"<literal>DestinationManager</literal> 的 MBean 里的属性。由于 JVM 里的 <literal>HashSet</literal>实现并不佳,为了获得最好的负载平衡性能,我们建议你使用 <literal>ReceiversImplArrayList</"
+"literal> 或 <literal>ReceiversImplLinkedList</literal> 实现。"
+




More information about the jboss-cvs-commits mailing list