[jboss-cvs] JBossAS SVN: r68960 - projects/docs/trunk/Server_Configuration_Guide/zh-CN.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jan 14 20:25:56 EST 2008
Author: xhuang at jboss.com
Date: 2008-01-14 20:25:56 -0500 (Mon, 14 Jan 2008)
New Revision: 68960
Modified:
projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Connectors_On_JBOSS.po
projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Messaging_On_JBOSS.po
projects/docs/trunk/Server_Configuration_Guide/zh-CN/Transactions.po
Log:
update
Modified: projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Connectors_On_JBOSS.po
===================================================================
--- projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Connectors_On_JBOSS.po 2008-01-15 00:38:58 UTC (rev 68959)
+++ projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Connectors_On_JBOSS.po 2008-01-15 01:25:56 UTC (rev 68960)
@@ -9,7 +9,7 @@
"Project-Id-Version: J2EE_Connectors_On_JBOSS\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-12-09 23:23+0000\n"
-"PO-Revision-Date: 2008-01-07 14:10+1000\n"
+"PO-Revision-Date: 2008-01-14 15:42+1000\n"
"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
"Language-Team: <zh at li.org>\n"
"MIME-Version: 1.0\n"
@@ -305,12 +305,16 @@
"transaction semantics you want, provided the JCA resource adaptor supports "
"the corresponding transaction capability."
msgstr ""
+"<literal>org.jboss.resource.connectionmanager.BaseConnectionManager2</"
+"literal> MBean 是用于 JCA 规格所要求的不同类型的连接管理者的基类。其子类包括 <literal>NoTxConnectionManager</"
+"literal>, <literal>LocalTxConnectionManager</literal> 和 "
+"<literal>XATxConnectionManager</literal>。这些分别对应于支持非事务、本地事务和 XA 事务的资源适配器。倘若 JCA 资源适配器支持对应的事务能力,你可以根据你想要的事务类型选择不同的子类。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:97
#, no-c-format
msgid "The common attributes supported by the BaseConnectionManager2 MBean are:"
-msgstr ""
+msgstr "BaseConnectionManager2 MBean 支持的共同属性是:"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:102
@@ -327,6 +331,9 @@
"JBossManagedConnectionPool</literal>. Its configurable attributes are "
"discussed below."
msgstr ""
+"<emphasis role=\"bold\">ManagedConnectionPool</emphasis>:它指定代表这个连接管理者管理的连接池的 MBean 的 ObjectName。这个 MBean 必须具有一个 <literal>ManagedConnectionPool</literal> 属性,它是对 <literal>org.jboss.resource."
+"connectionmanager.ManagedConnectionPool</literal> 接口的实现。通常,它将是 depends 标签的内嵌 MBean,而不是对现有 MBean 的 <literal>ObjectName</literal> 引用。缺省使用的 MBean 是 <literal>org.jboss.resource.connectionmanager."
+"JBossManagedConnectionPool</literal>。它的配置属性将在下面讨论。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:107
@@ -339,7 +346,7 @@
"the unique <literal>CachedConnectionManager</literal> for the server. The "
"name <literal>jboss.jca:service=CachedConnectionManager</literal> is the "
"standard setting to use."
-msgstr ""
+msgstr "<emphasis role=\"bold\">CachedConnectionManager</emphasis>:这指定连接管理者使用的 <literal>CachedConnectionManager</literal> MBean 实现的 <literal>ObjectName</literal>。通常这通过 depends 标签和服务器唯一的 <literal>CachedConnectionManager</literal> 的 <literal>ObjectName</literal> 来指定。<literal>jboss.jca:service=CachedConnectionManager</literal> 是标准的使用设置。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:112
@@ -353,10 +360,13 @@
"login-config.xml</literal> JAAS login module configuration file. This "
"defines which JAAS login modules execute to perform authentication."
msgstr ""
+"<emphasis role=\"bold\">SecurityDomainJndiName</emphasis>:它指定用于资源连接验证和授权的安全域的 JNDI 名称。它的典型格式是 <literal>java:/jaas/<domain></literal>,这里的 <literal><"
+"domain></literal> 是 <literal>conf/"
+"login-config.xml</literal> JAAS 登录模块配置文件里的条目的值。它定义了执行验证的 JAAS 登录模块。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:117
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">JaasSecurityManagerService</emphasis>: This is the "
"<literal>ObjectName</literal> of the security manager service. This should "
@@ -365,10 +375,9 @@
"security:service=JaasSecurityManager</literal>. This attribute will likely "
"be removed in the future."
msgstr ""
-"<emphasis role=\"bold\">InvokerName</emphasis>:<literal>conf/jboss-service."
-"xml</literal> 描述符里定义的 <literal>NamingService</literal> 的 JMX "
-"<literal>ObjectName</literal>。JBoss 发行版本里定义的标准设定是 "
-"<literal>jboss:service=Naming</literal>。"
+"<emphasis role=\"bold\">JaasSecurityManagerService</emphasis>:它是安全管理者服务的 <literal>ObjectName</literal>。这应该被设置为 <literal>conf/"
+"jboss-service.xml</literal> 描述符里定义的安全管理者 MBean 名称,目前的值是 <literal>jboss."
+"security:service=JaasSecurityManager</literal>。将来这个属性很可能被删除。"
#. Tag: title
#: J2EE_Connectors_On_JBOSS.xml:125
@@ -386,7 +395,7 @@
"resource adaptor metadata settings from the RAR <literal>META-INF/ra.xml</"
"literal> descriptor along with the <literal>RARDeployment</literal> "
"attributes. The configurable attributes are:"
-msgstr ""
+msgstr "<literal>org.jboss.resource.connectionmanager.RARDeployment</literal> MBean 管理 <literal>ManagedConnectionFactory</literal> 实例的配置和实例化。它使用 RAR <literal>META-INF/ra.xml</literal> 描述符里的资源适配器元数据设置和 <literal>RARDeployment</literal> 属性。这些可配置属性是:"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:131
@@ -402,6 +411,10 @@
"when it deploys a RAR file. This attribute will likely be removed in the "
"future."
msgstr ""
+"<emphasis role=\"bold\">OldRarDeployment</emphasis>:这是包含资源适配器元数据的 <literal>org.jboss.resource.RarDeployment</literal> MBean 的 <literal>ObjectName</literal>。这个名称的格式是 <literal>jboss.jca:service=RARDeployment,name=<"
+"ra-display-name></literal> ,这里的 <literal><ra-display-name></"
+"literal> 是 <literal>ra.xml</literal> 描述符的 <literal>display-name</"
+"literal> 属性值。当部署 RAR 文件时,<literal>RARDeployer</literal> 创建它。将来这个属性很可能被删除。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:136
@@ -413,7 +426,7 @@
"of the attributes depend on the resource adaptor "
"<literal>ManagedConnectionFactory</literal> instance. The following example "
"shows the structure of the content of this attribute."
-msgstr ""
+msgstr "<emphasis role=\"bold\">ManagedConnectionFactoryProperties</emphasis>:这是名称、类型、值的集合,它定义 <literal>ManagedConnectionFactory</literal> 实例的属性。因此,属性的名称依赖于资源适配器 <literal>ManagedConnectionFactory</literal> 实例。下面的例子显示了这个属性的内容的结构。"
#. Tag: programlisting
#: J2EE_Connectors_On_JBOSS.xml:139
@@ -462,6 +475,8 @@
"<literal>java.beans.PropertyEditor</literal> class for the "
"<literal>AttrXType</literal>."
msgstr ""
+"<literal>AttrXName</literal> 是第 X 个属性的名称,<literal>AttrXType</"
+"literal> 是该属性的全限定 Java 类型,而 <literal>AttrXValue</literal> 是其值的字符串形式。从字符串到 <literal>AttrXType</literal> 的转换是通过 <literal>AttrXType</literal> 的<literal>java.beans.PropertyEditor</literal> 类来完成的。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:145
@@ -477,6 +492,8 @@
"outside of the JBoss server VM. In the future this restriction may be "
"configurable."
msgstr ""
+"<emphasis role=\"bold\">JndiName</emphasis>:这是资源适配器将使用的 JNDI 名称。资源适配器的客户使用这个名称来获得 <literal>javax.resource.cci."
+"ConnectionFactory</literal> 或资源适配器相关的连接工厂。完整的 JNDI 名称将是 <literal>java:/<JndiName></literal>,这表示 <literal>JndiName</literal> 属性值将以 <literal>java:/</literal> 为前缀。这防止在 JBoss 服务器 VM 外使用这个连接工厂。将来这个限制可能可以被配置。"
#. Tag: title
#: J2EE_Connectors_On_JBOSS.xml:153
@@ -497,6 +514,9 @@
"configurable attributes of the <literal>JBossManagedConnectionPool</literal> "
"are:"
msgstr ""
+"<literal>org.jboss.resource.connectionmanager."
+"JBossManagedConnectionPool</literal> MBean 是用于连接池的 MBean。它通常被用作<literal>BaseConnectionManager2</literal><literal>ManagedConnectionPool</"
+"literal> 属性的内嵌 MBean 值。当你设立一个连接管理者 MBean 时,你通常把连接池配置嵌入到连接管理者描述符里。<literal>JBossManagedConnectionPool</literal> 的可配置属性是:"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:159
@@ -509,7 +529,7 @@
"than a separate MBean reference using the <literal>RARDeployment</literal> "
"MBean. The MBean must provide an appropriate "
"<literal>startManagedConnectionFactory</literal> operation."
-msgstr ""
+msgstr "<emphasis role=\"bold\">ManagedConnectionFactoryName</emphasis>:它指定了创建 <literal>javax.resource.spi.ManagedConnectionFactory</literal> 实例的 MBean 的<literal>ObjectName</literal>。通常它作为内嵌 MBean 配置在 depends 元素里,而不是一个使用 <literal>RARDeployment</literal> MBean 的独立的 MBean 引用。这个 MBean 必须提供合适的 <literal>startManagedConnectionFactory</literal> 操作。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:164
@@ -519,18 +539,16 @@
"minimum number of connections this pool should hold. These are not created "
"until a <literal>Subject</literal> is known from a request for a connection. "
"<literal>MinSize</literal> connections will be created for each sub-pool."
-msgstr ""
+msgstr "<emphasis role=\"bold\">MinSize</emphasis>:这个属性指出连接池应该保持的连接的最小数目。它们直到获知连接请求里的 <literal>Subject</literal> 才被创建。将为每个子连接池创建数目为 <literal>MinSize</literal> 的连接。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:169
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">MaxSize</emphasis>: This attribute indicates the "
"maximum number of connections for a pool. No more than MaxSize connections "
"will be created in each sub-pool."
-msgstr ""
-"<emphasis role=\"bold\">timeout</emphasis> 指定对 are-you-alive 信息的应答的"
-"最长等待时间(毫秒数)。"
+msgstr "<emphasis role=\"bold\">MaxSize</emphasis>:这个属性指出连接池的最大连接数目。每个子连接池里最多只能创建 MaxSize 个连接。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:174
@@ -541,23 +559,22 @@
"throwing an exception. Note that this blocks only while waiting for a permit "
"for a connection, and will never throw an exception if creating a new "
"connection takes an inordinately long time."
-msgstr ""
+msgstr "<emphasis role=\"bold\">BlockingTimeoutMillis</emphasis>:这个属性指出在抛出异常前等待连接时堵塞的最长时间。请注意,这只在等待连接许可时才堵塞,且如果创建新的连接花费了过长时间,它将永不会抛出异常。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:179
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">IdleTimeoutMinutes</emphasis>: This attribute "
"indicates the maximum time a connection may be idle before being closed. The "
"actual maximum time depends also on the idle remover thread scan time, which "
"is 1/2 the smallest idle timeout of any pool."
-msgstr ""
-"<emphasis role=\"bold\">timeout</emphasis> 指定对 are-you-alive 信息的应答的"
-"最长等待时间(毫秒数)。"
+msgstr "<emphasis role=\"bold\">IdleTimeoutMinutes</emphasis>:这个属性指出连接在关闭前可以空闲的最长时间。实际的最长时间也取决于空闲删除线程的扫描时间(它是所有连接池的最小空闲超时时间的 1/2)。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:184
#, no-c-format
+#, fuzzy
msgid ""
"<emphasis role=\"bold\">NoTxSeparatePools</emphasis>: Setting this to true "
"doubles the available pools. One pool is for connections used outside a "
@@ -567,7 +584,7 @@
"and <literal>XATxConnectionManager</literal>. Its use case is for Oracle "
"(and possibly other vendors) XA implementations that don't like using an "
"XA connection with and without a JTA transaction."
-msgstr ""
+msgstr "<emphasis role=\"bold\">NoTxSeparatePools</emphasis>:其值为 true 时会使可用的连接池翻倍。 "
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:189
@@ -2175,7 +2192,7 @@
#: J2EE_Connectors_On_JBOSS.xml:911
#, no-c-format
msgid "Configuring Generic JCA Adaptors"
-msgstr ""
+msgstr "配置通用的 JCA 适配器"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:912
@@ -2188,6 +2205,9 @@
"The_simplified_JCA_adaptor_connection_factory_configuration_descriptor_top_level_schema_elements"
"\"/>."
msgstr ""
+"XSLSubDeployer 也支持任意非 JDBC JCA 资源适配器的部署。<xref linkend=\"Configuring_Generic_JCA_Adaptors-"
+"The_simplified_JCA_adaptor_connection_factory_configuration_descriptor_top_level_schema_elements"
+"\"/> 里展示了对 <literal>*-ds.xml</literal> 配置部署文件里的顶层连接工厂元素的使用。"
#. Tag: title
#: J2EE_Connectors_On_JBOSS.xml:916
@@ -2195,7 +2215,7 @@
msgid ""
"The simplified JCA adaptor connection factory configuration descriptor top-"
"level schema elements"
-msgstr ""
+msgstr "简化的 JCA 适配器连接工厂配置描述符的顶层元素"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:923
@@ -2205,6 +2225,8 @@
"configuration deployment file. The child elements of the <literal>connection-"
"factories</literal> root are:"
msgstr ""
+"在配置部署文件里可以指定多个连接工厂配置。<literal>connection-"
+"factories</literal> 根元素的子元素是:"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:928
@@ -2215,7 +2237,7 @@
"<literal>jboss-service.xml</literal> descriptor that results from the "
"transformation. This may be used to configure additional services used by "
"the adaptor."
-msgstr ""
+msgstr "<emphasis role=\"bold\">mbean</emphasis>:可以指定任何数目的 mbean 元素来定义应该包含在 <literal>jboss-service.xml</literal> 描述符里的 MBean 服务。这可以用来配置适配器使用的其他服务。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:933
@@ -2229,10 +2251,14 @@
"element schema is given in <xref linkend=\"Configuring_Generic_JCA_Adaptors-"
"The_no_tx_connection_factory_element_schema\"/>."
msgstr ""
+"<emphasis role=\"bold\">no-tx-connection-factory</emphasis>:这个元素用来指定 (<literal>org.jboss.resource.connectionmanager</"
+"literal>) <literal>NoTxConnectionManager</literal> 服务配置。<literal>NoTxConnectionManager</literal> 是一个不支持事务的 JCA 连接管理者。<xref linkend=\"Configuring_Generic_JCA_Adaptors-"
+"The_no_tx_connection_factory_element_schema\"/> 里给出了 <literal>no-tx-connection-factory</literal> 子元素模式。"
#. Tag: para
#: J2EE_Connectors_On_JBOSS.xml:938
#, no-c-format
+#, fuzzy
msgid ""
"<emphasis role=\"bold\">tx-connection-factory</emphasis>: this element is "
"used to specify the (<literal>org.jboss.resource.connectionmanager</"
@@ -2241,6 +2267,8 @@
"<xref linkend=\"Configuring_Generic_JCA_Adaptors-"
"The_tx_connection_factory_element_schema\"/>."
msgstr ""
+"<emphasis role=\"bold\">tx-connection-factory</emphasis>:这个元素用来指定 (<literal>org.jboss.resource.connectionmanager</"
+"literal>) <literal>TxConnectionManager</literal> 服务配置。"
#. Tag: title
#: J2EE_Connectors_On_JBOSS.xml:944
Modified: projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Messaging_On_JBOSS.po
===================================================================
--- projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Messaging_On_JBOSS.po 2008-01-15 00:38:58 UTC (rev 68959)
+++ projects/docs/trunk/Server_Configuration_Guide/zh-CN/J2EE_Messaging_On_JBOSS.po 2008-01-15 01:25:56 UTC (rev 68960)
@@ -1,30 +1,33 @@
+# translation of J2EE_Messaging_On_JBOSS.po to
# Language /tmp/mike/JBEAP420/JBAS 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: J2EE_Messaging_On_JBOSS\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-11-05 06:03+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-01-15 11:25+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: <zh 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
#: J2EE_Messaging_On_JBOSS.xml:6
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Messaging on JBoss"
-msgstr "Naming on JBoss"
+msgstr "JBoss 的消息处理"
#. Tag: subtitle
#: J2EE_Messaging_On_JBOSS.xml:7
-#, fuzzy, no-c-format
+#, no-c-format
msgid "JMS Configuration and Architecture"
-msgstr "JBoss JMX 实现架构"
+msgstr "JMS 配置和架构"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:8
@@ -39,7 +42,7 @@
"applications are up and running, and conversely, receiving applications do "
"not need to worry about the sending application's status. Both senders, "
"and receivers only interact with the destinations."
-msgstr ""
+msgstr "JMS API 代表 Java Message Service 应用程序接口,它被用来发送异步的 <emphasis>business-quality</emphasis> 消息给其他应用程序。消息通常不会直接发送给其他应用程序,相反,消息会先发送到目的地(消息队列或主题)。发送消息的应用程序不需要担心接受方是否正在运行,同样,接受消息的应用程序也不用担心发送方的状态。发送和接受方只和目的地(destination)进行交互。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:11
@@ -53,7 +56,7 @@
"therefore, the best JBoss Messaging user guide is the JMS specification. For "
"more information about the JMS API please visit the JMS Tutorial or JMS "
"Downloads & Specifications."
-msgstr ""
+msgstr "JMS API 是 JMS 提供者的标准化接口,有时也被称作面向消息的中间件(Message Oriented Middleware,MOM)系统。JBoss 带有一个兼容 JMS 1.1 的 JMS 提供者:JBoss Messaging 或称为 JBossMQ。当你在 JBoss 里使用 JMS API 时,其实是在透明地使用 JBoss Messaging 引擎。JBoss Messaging 完全实现了 JMS 规格:因此,最好的 JBoss Messaging 用户指南就是 JMS 规格。关于 JMS API 的更多信息,请参考 JMS Tutorial 或 JMS 规格。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:14
@@ -61,13 +64,13 @@
msgid ""
"This chapter focuses on the JBoss specific aspects of using JMS and message "
"driven beans as well as the JBoss Messaging configuration and MBeans."
-msgstr ""
+msgstr "本章着重介绍使用 JMS 和 message driven bean 的 JBoss 相关概念以及 JBoss Messaging 配置和 MBean。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:18
-#, fuzzy, no-c-format
+#, no-c-format
msgid "JMS Examples"
-msgstr "XMBean示例"
+msgstr "JMS 示例"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:19
@@ -77,7 +80,7 @@
"implementation. JMS leaves the details of accessing JMS connection factories "
"and destinations as provider specific details. What you need to know to use "
"the JBoss Messaging layer is:"
-msgstr ""
+msgstr "在本节,我们讨论使用 JBoss JMS 实现的基本概念。JMS 把访问 JMS 连接工厂和目的地的细节留给了提供者来实现。要使用 JBoss Messaging 层,你所需要知道的只是:"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:24
@@ -86,7 +89,7 @@
"The location of the queue and topic connect factories: In JBoss both "
"connection factory implementations are located under the JNDI name "
"<literal>ConnectionFactory</literal>."
-msgstr ""
+msgstr "队列和主题连接工厂的位置:在 JBoss 里,这两个连接工厂的实现都基于 JNDI 名称 <literal>ConnectionFactory</literal>。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:29
@@ -96,20 +99,21 @@
"configured via MBeans as we will see when we discuss the messaging MBeans. "
"JBoss comes with a few queues and topics preconfigured. You can find them "
"under the <literal>jboss.mq.destination</literal> domain in the JMX Console.."
-msgstr ""
+msgstr "怎样查找 JMS 目的地(队列和主题):当讨论 messaging MBean 时,我们将看到目的地是通过 MBean 进行配置的。JBoss 带有一些预配置的队列和主题。你可以在 JMX 控制台里的 <literal>jboss.mq.destination</literal> 域下找到它们。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:34
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"Which JARS JMS requires: These include <literal>concurrent.jar</literal>, "
"<literal>jbossmq-client.jar</literal>, <literal>jboss-common-client.jar</"
"literal>, <literal>jboss-system-client.jar</literal>, <literal>jnp-client."
"jar</literal> and <literal>log4j.jar</literal>."
msgstr ""
-"人员(Person)表中将包括 <literal>pid</literal>,<literal>birthday</"
-"literal>,<literal>initial</literal>,<literal>first</literal>和 "
-"<literal>last</literal> 等字段。"
+"JMS 需要哪些 JAR 文件:<literal>concurrent.jar</literal>、"
+"<literal>jbossmq-client.jar</literal>、<literal>jboss-common-client.jar</"
+"literal>、<literal>jboss-system-client.jar</literal>、<literal>jnp-client."
+"jar</literal> 和 <literal>log4j.jar</literal>。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:39
@@ -119,13 +123,13 @@
"messaging models and message driven beans. The chapter example source is "
"located under the <literal>src/main/org/jboss/book/jms</literal> directory "
"of the book examples."
-msgstr ""
+msgstr "在下面的内容里,我们将讨论不同的 JMS 消息模型和 message driven bean 的示例。你可以在本书的 <literal>src/main/org/jboss/book/jms</literal> 目录下找到源代码。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:43
#, no-c-format
msgid "A Point-To-Point Example"
-msgstr ""
+msgstr "Point-To-Point 示例"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:44
@@ -140,12 +144,15 @@
"testQueue</literal> and asynchronously receives the message from the same "
"queue."
msgstr ""
+"让我们从一个 point-to-point (P2P) 示例开始。在 P2P 模型里,发送者把消息提交到队列,而单一的接受者将消息从队列里提出。在消息被发送的时候,接受者不需要侦听该队列。<xref linkend=\"A_Point_To_Point_Example-"
+"A_P2P_JMS_client_example\"/> 展示了一个完整的 P2P 示例,它发送了一个 <literal>javax.jms.TextMessage</literal> 到队列 <literal>queue/"
+"testQueue</literal>,且从相同的队列里异步地接受了这个消息。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:47
#, no-c-format
msgid "A P2P JMS client example"
-msgstr ""
+msgstr "P2P JMS 客户端示例"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:48
@@ -262,12 +269,122 @@
" }\n"
"}"
msgstr ""
+"package org.jboss.book.jms.ex1;\n"
+"\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.MessageListener;\n"
+"import javax.jms.Queue;\n"
+"import javax.jms.QueueConnection;\n"
+"import javax.jms.QueueConnectionFactory;\n"
+"import javax.jms.QueueReceiver;\n"
+"import javax.jms.QueueSender;\n"
+"import javax.jms.QueueSession;\n"
+"import javax.jms.TextMessage;\n"
+"import javax.naming.InitialContext;\n"
+"import javax.naming.NamingException;\n"
+"\n"
+"import EDU.oswego.cs.dl.util.concurrent.CountDown;\n"
+"import org.apache.log4j.Logger;\n"
+"import org.jboss.util.ChapterExRepository;\n"
+"\n"
+"/** \n"
+" * A complete JMS client example program that sends a\n"
+" * TextMessage to a Queue and asynchronously receives the\n"
+" * message from the same Queue.\n"
+" * \n"
+" * @author Scott.Stark at jboss.org\n"
+" * @version $Revision: 1.9 $\n"
+" */\n"
+"public class SendRecvClient\n"
+"{\n"
+" static Logger log;\n"
+" static CountDown done = new CountDown(1);\n"
+" \n"
+" QueueConnection conn;\n"
+" QueueSession session;\n"
+" Queue que;\n"
+" \n"
+" public static class ExListener \n"
+" implements MessageListener\n"
+" {\n"
+" public void onMessage(Message msg)\n"
+" {\n"
+" done.release();\n"
+" TextMessage tm = (TextMessage) msg;\n"
+" try {\n"
+" log.info(\"onMessage, recv text=\" + tm.getText());\n"
+" } catch(Throwable t) {\n"
+" t.printStackTrace();\n"
+" }\n"
+" }\n"
+" }\n"
+" \n"
+" public void setupPTP()\n"
+" throws JMSException, \n"
+" NamingException\n"
+" {\n"
+" InitialContext iniCtx = new InitialContext();\n"
+" Object tmp = iniCtx.lookup(\"ConnectionFactory\");\n"
+" QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;\n"
+" conn = qcf.createQueueConnection();\n"
+" que = (Queue) iniCtx.lookup(\"queue/testQueue\");\n"
+" session = conn.createQueueSession(false,\n"
+" QueueSession.AUTO_ACKNOWLEDGE);\n"
+" conn.start();\n"
+" }\n"
+" \n"
+" public void sendRecvAsync(String text)\n"
+" throws JMSException, \n"
+" NamingException\n"
+" {\n"
+" log.info(\"Begin sendRecvAsync\");\n"
+" // Setup the PTP connection, session\n"
+" setupPTP();\n"
+"\n"
+" // Set the async listener\n"
+" QueueReceiver recv = session.createReceiver(que);\n"
+" recv.setMessageListener(new ExListener());\n"
+"\n"
+" // Send a text msg\n"
+" QueueSender send = session.createSender(que);\n"
+" TextMessage tm = session.createTextMessage(text);\n"
+" send.send(tm);\n"
+" log.info(\"sendRecvAsync, sent text=\" + tm.getText());\n"
+" send.close();\n"
+" log.info(\"End sendRecvAsync\");\n"
+" }\n"
+" \n"
+" public void stop()\n"
+" throws JMSException\n"
+" {\n"
+" conn.stop();\n"
+" session.close();\n"
+" conn.close();\n"
+" }\n"
+" \n"
+" public static void main(String args[]) \n"
+" throws Exception\n"
+" {\n"
+" ChapterExRepository.init(SendRecvClient.class);\n"
+" log = Logger.getLogger(\"SendRecvClient\");\n"
+" \n"
+" log.info(\"Begin SendRecvClient, now=\" + System.currentTimeMillis"
+"());\n"
+" SendRecvClient client = new SendRecvClient();\n"
+" client.sendRecvAsync(\"A text msg\");\n"
+" client.done.acquire();\n"
+" client.stop();\n"
+" log.info(\"End SendRecvClient\");\n"
+" System.exit(0);\n"
+" }\n"
+"}"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:49 J2EE_Messaging_On_JBOSS.xml:62
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The client may be run using the following command line:"
-msgstr "涉及的 SQL 语句会按照下面的顺序发出执行:"
+msgstr "你可以使用下面的命令行运行客户端(Client):"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:52
@@ -283,12 +400,21 @@
" [java] [INFO,SendRecvClient] End sendRecvAsync\n"
" [java] [INFO,SendRecvClient] End SendRecvClient"
msgstr ""
+"[examples]$ ant -Dchap=jms -Dex=1p2p run-example\n"
+"...\n"
+"run-example1p2p:\n"
+" [java] [INFO,SendRecvClient] Begin SendRecvClient, now=1102808673386\n"
+" [java] [INFO,SendRecvClient] Begin sendRecvAsync\n"
+" [java] [INFO,SendRecvClient] onMessage, recv text=A text msg\n"
+" [java] [INFO,SendRecvClient] sendRecvAsync, sent text=A text msg\n"
+" [java] [INFO,SendRecvClient] End sendRecvAsync\n"
+" [java] [INFO,SendRecvClient] End SendRecvClient"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:56
#, no-c-format
msgid "A Pub-Sub Example"
-msgstr ""
+msgstr "Pub-Sub 示例"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:57
@@ -300,13 +426,13 @@
"topic will miss the published message. shows a complete JMS client that "
"sends a <literal>javax.jms.TextMessage</literal> to a topic and "
"asynchronously receives the message from the same topic."
-msgstr ""
+msgstr "JMS publish/subscribe (Pub-Sub) 消息模型是一个一对多的模型。发布者(publisher)把消息发送给一个主题,该主题的所有的订阅者(subscriber)都会接受到这个消息。没有积极侦听主题的订阅者将错过这个消息。展示了一个完整的 JMS 客户端,它发送 <literal>javax.jms.TextMessage</literal> 到一个主题且从相同的主题异步地接受这个消息。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:60
#, no-c-format
msgid "A Pub-Sub JMS client example"
-msgstr ""
+msgstr "Pub-Sub JMS 客户端示例"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:61
@@ -414,6 +540,107 @@
" \n"
"}"
msgstr ""
+"package org.jboss.book.jms.ex1;\n"
+"\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.MessageListener;\n"
+"import javax.jms.Topic;\n"
+"import javax.jms.TopicConnection;\n"
+"import javax.jms.TopicConnectionFactory;\n"
+"import javax.jms.TopicPublisher;\n"
+"import javax.jms.TopicSubscriber;\n"
+"import javax.jms.TopicSession;\n"
+"import javax.jms.TextMessage;\n"
+"import javax.naming.InitialContext;\n"
+"import javax.naming.NamingException;\n"
+"\n"
+"import EDU.oswego.cs.dl.util.concurrent.CountDown;\n"
+"\n"
+"/**\n"
+" * A complete JMS client example program that sends a TextMessage to\n"
+" * a Topic and asynchronously receives the message from the same\n"
+" * Topic.\n"
+" * \n"
+" * @author Scott.Stark at jboss.org\n"
+" * @version $Revision: 1.9 $\n"
+" */\n"
+"\n"
+"public class TopicSendRecvClient\n"
+"{\n"
+" static CountDown done = new CountDown(1);\n"
+" TopicConnection conn = null;\n"
+" TopicSession session = null;\n"
+" Topic topic = null;\n"
+" \n"
+" public static class ExListener implements MessageListener\n"
+" {\n"
+" public void onMessage(Message msg)\n"
+" {\n"
+" done.release();\n"
+" TextMessage tm = (TextMessage) msg;\n"
+" try {\n"
+" System.out.println(\"onMessage, recv text=\" + tm.getText"
+"());\n"
+" } catch(Throwable t) {\n"
+" t.printStackTrace();\n"
+" }\n"
+" }\n"
+" }\n"
+" \n"
+" public void setupPubSub()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" InitialContext iniCtx = new InitialContext();\n"
+" Object tmp = iniCtx.lookup(\"ConnectionFactory\");\n"
+" TopicConnectionFactory tcf = (TopicConnectionFactory) tmp;\n"
+" conn = tcf.createTopicConnection();\n"
+" topic = (Topic) iniCtx.lookup(\"topic/testTopic\");\n"
+" session = conn.createTopicSession(false,\n"
+" TopicSession.AUTO_ACKNOWLEDGE);\n"
+" conn.start();\n"
+" }\n"
+" \n"
+" public void sendRecvAsync(String text)\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" System.out.println(\"Begin sendRecvAsync\");\n"
+" // Setup the PubSub connection, session\n"
+" setupPubSub();\n"
+" // Set the async listener\n"
+" \n"
+" TopicSubscriber recv = session.createSubscriber(topic);\n"
+" recv.setMessageListener(new ExListener());\n"
+" // Send a text msg\n"
+" TopicPublisher send = session.createPublisher(topic);\n"
+" TextMessage tm = session.createTextMessage(text);\n"
+" send.publish(tm);\n"
+" System.out.println(\"sendRecvAsync, sent text=\" + tm.getText());\n"
+" send.close();\n"
+" System.out.println(\"End sendRecvAsync\");\n"
+" }\n"
+" \n"
+" public void stop() throws JMSException\n"
+" {\n"
+" conn.stop();\n"
+" session.close();\n"
+" conn.close();\n"
+" }\n"
+" \n"
+" public static void main(String args[]) throws Exception\n"
+" {\n"
+" System.out.println(\"Begin TopicSendRecvClient, now=\" + \n"
+" System.currentTimeMillis());\n"
+" TopicSendRecvClient client = new TopicSendRecvClient();\n"
+" client.sendRecvAsync(\"A text msg, now=\"+System.currentTimeMillis"
+"());\n"
+" client.done.acquire();\n"
+" client.stop();\n"
+" System.out.println(\"End TopicSendRecvClient\");\n"
+" System.exit(0);\n"
+" }\n"
+" \n"
+"}"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:65
@@ -429,6 +656,15 @@
" [java] End sendRecvAsync\n"
" [java] End TopicSendRecvClient"
msgstr ""
+"[examples]$ ant -Dchap=jms -Dex=1ps run-example\n"
+"...\n"
+"run-example1ps:\n"
+" [java] Begin TopicSendRecvClient, now=1102809427043\n"
+" [java] Begin sendRecvAsync\n"
+" [java] onMessage, recv text=A text msg, now=1102809427071\n"
+" [java] sendRecvAsync, sent text=A text msg, now=1102809427071\n"
+" [java] End sendRecvAsync\n"
+" [java] End TopicSendRecvClient"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:66
@@ -442,12 +678,14 @@
"only client is shown in <xref linkend=\"A_Pub_Sub_Example-"
"A_JMS_subscriber_client\"/>."
msgstr ""
+"现在,让我们把发布者和订阅者划分到不同的程序里,演示订阅者只有在侦听主题时才接受消息。<xref linkend=\"A_Pub_Sub_Example-A_JMS_publisher_client\"/> 展示了前面的 pub-sub 客户端一个变种,它只发布消息到 <literal>topic/testTopic</literal> 主题。<xref linkend=\"A_Pub_Sub_Example-"
+"A_JMS_subscriber_client\"/> 展示了单独的订阅者程序。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:69
#, no-c-format
msgid "A JMS publisher client"
-msgstr ""
+msgstr "JMS 发布者客户端"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:70
@@ -531,12 +769,89 @@
" \n"
"}"
msgstr ""
+"package org.jboss.book.jms.ex1;\n"
+"\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.MessageListener;\n"
+"import javax.jms.Topic;\n"
+"import javax.jms.TopicConnection;\n"
+"import javax.jms.TopicConnectionFactory;\n"
+"import javax.jms.TopicPublisher;\n"
+"import javax.jms.TopicSlistubscriber;\n"
+"import javax.jms.TopicSession;\n"
+"import javax.jms.TextMessage;\n"
+"import javax.naming.InitialContext;\n"
+"import javax.naming.NamingException;\n"
+"\n"
+"/** \n"
+" * A JMS client example program that sends a TextMessage to a Topic\n"
+" * \n"
+" * @author Scott.Stark at jboss.org\n"
+" * @version $Revision: 1.9 $\n"
+" */\n"
+"public class TopicSendClient\n"
+"{\n"
+" TopicConnection conn = null;\n"
+" TopicSession session = null;\n"
+" Topic topic = null;\n"
+" \n"
+" public void setupPubSub()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" InitialContext iniCtx = new InitialContext();\n"
+" Object tmp = iniCtx.lookup(\"ConnectionFactory\");\n"
+" TopicConnectionFactory tcf = (TopicConnectionFactory) tmp;\n"
+" conn = tcf.createTopicConnection();\n"
+" topic = (Topic) iniCtx.lookup(\"topic/testTopic\");\n"
+" session = conn.createTopicSession(false,\n"
+" TopicSession.AUTO_ACKNOWLEDGE);\n"
+" conn.start();\n"
+" }\n"
+" \n"
+" public void sendAsync(String text)\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" System.out.println(\"Begin sendAsync\");\n"
+" // Setup the pub/sub connection, session\n"
+" setupPubSub();\n"
+" // Send a text msg\n"
+" TopicPublisher send = session.createPublisher(topic);\n"
+" TextMessage tm = session.createTextMessage(text);\n"
+" send.publish(tm);\n"
+" System.out.println(\"sendAsync, sent text=\" + tm.getText());\n"
+" send.close();\n"
+" System.out.println(\"End sendAsync\");\n"
+" }\n"
+" \n"
+" public void stop() \n"
+" throws JMSException\n"
+" {\n"
+" conn.stop();\n"
+" session.close();\n"
+" conn.close();\n"
+" }\n"
+" \n"
+" public static void main(String args[]) \n"
+" throws Exception\n"
+" {\n"
+" System.out.println(\"Begin TopicSendClient, now=\" + \n"
+" System.currentTimeMillis());\n"
+" TopicSendClient client = new TopicSendClient();\n"
+" client.sendAsync(\"A text msg, now=\"+System.currentTimeMillis"
+"());\n"
+" client.stop();\n"
+" System.out.println(\"End TopicSendClient\");\n"
+" System.exit(0);\n"
+" }\n"
+" \n"
+"}"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:71
#, no-c-format
msgid "A JMS subscriber client"
-msgstr ""
+msgstr "JMS 订阅者客户端"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:72
@@ -622,15 +937,93 @@
" \n"
"}"
msgstr ""
+"package org.jboss.book.jms.ex1;\n"
+"\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.MessageListener;\n"
+"import javax.jms.Topic;\n"
+"import javax.jms.TopicConnection;\n"
+"import javax.jms.TopicConnectionFactory;\n"
+"import javax.jms.TopicPublisher;\n"
+"import javax.jms.TopicSubscriber;\n"
+"import javax.jms.TopicSession;\n"
+"import javax.jms.TextMessage;\n"
+"import javax.naming.InitialContext;\n"
+"import javax.naming.NamingException;\n"
+"\n"
+"/**\n"
+" * A JMS client example program that synchronously receives a message a "
+"Topic\n"
+" * \n"
+" * @author Scott.Stark at jboss.org\n"
+" * @version $Revision: 1.9 $\n"
+" */\n"
+"public class TopicRecvClient\n"
+"{\n"
+" TopicConnection conn = null;\n"
+" TopicSession session = null;\n"
+" Topic topic = null;\n"
+" \n"
+" public void setupPubSub()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" InitialContext iniCtx = new InitialContext();\n"
+" Object tmp = iniCtx.lookup(\"ConnectionFactory\");\n"
+" TopicConnectionFactory tcf = (TopicConnectionFactory) tmp;\n"
+" conn = tcf.createTopicConnection();\n"
+" topic = (Topic) iniCtx.lookup(\"topic/testTopic\");\n"
+" session = conn.createTopicSession(false,\n"
+" TopicSession.AUTO_ACKNOWLEDGE);\n"
+" conn.start();\n"
+" }\n"
+" \n"
+" public void recvSync()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" System.out.println(\"Begin recvSync\");\n"
+" // Setup the pub/sub connection, session\n"
+" setupPubSub();\n"
+"\n"
+" // Wait upto 5 seconds for the message\n"
+" TopicSubscriber recv = session.createSubscriber(topic);\n"
+" Message msg = recv.receive(5000);\n"
+" if (msg == null) {\n"
+" System.out.println(\"Timed out waiting for msg\");\n"
+" } else {\n"
+" System.out.println(\"TopicSubscriber.recv, msgt=\"+msg);\n"
+" }\n"
+" }\n"
+" \n"
+" public void stop()\n"
+" throws JMSException\n"
+" {\n"
+" conn.stop();\n"
+" session.close();\n"
+" conn.close();\n"
+" }\n"
+" \n"
+" public static void main(String args[]) \n"
+" throws Exception\n"
+" {\n"
+" System.out.println(\"Begin TopicRecvClient, now=\" +\n"
+" System.currentTimeMillis());\n"
+" TopicRecvClient client = new TopicRecvClient();\n"
+" client.recvSync();\n"
+" client.stop();\n"
+" System.out.println(\"End TopicRecvClient\");\n"
+" System.exit(0);\n"
+" }\n"
+" \n"
+"}"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:73
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"Run the <literal>TopicSendClient</literal> followed by the "
"<literal>TopicRecvClient</literal> as follows:"
-msgstr ""
-"关键字 <literal>in</literal> 与 <literal>between</literal> 可按如下方法使用:"
+msgstr "如下所示,运行 <literal>TopicSendClient</literal>,然后再运行 <literal>TopicRecvClient</literal>:"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:76
@@ -649,6 +1042,18 @@
" [java] Timed out waiting for msg\n"
" [java] End TopicRecvClient"
msgstr ""
+"[examples]$ ant -Dchap=jms -Dex=1ps2 run-example\n"
+"...\n"
+"run-example1ps2:\n"
+" [java] Begin TopicSendClient, now=1102810007899\n"
+" [java] Begin sendAsync\n"
+" [java] sendAsync, sent text=A text msg, now=1102810007909\n"
+" [java] End sendAsync\n"
+" [java] End TopicSendClient\n"
+" [java] Begin TopicRecvClient, now=1102810011524\n"
+" [java] Begin recvSync\n"
+" [java] Timed out waiting for msg\n"
+" [java] End TopicRecvClient"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:77
@@ -658,12 +1063,14 @@
"literal>) fails to receive the message sent by the publisher due to a "
"timeout."
msgstr ""
+"输出结果显示:由于超时的原因,主题订阅者客户端(<literal>TopicRecvClient</"
+"literal>)没有成功接受发布者发送的消息。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:83
#, no-c-format
msgid "A Pub-Sub With Durable Topic Example"
-msgstr ""
+msgstr "带有持久性主题的 Pub-Sub 示例"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:84
@@ -681,12 +1088,16 @@
"linkend=\"A_Pub_Sub_Example-A_JMS_subscriber_client\"/> client highlighted "
"in bold."
msgstr ""
+"JMS 支持跨越 P2P 和 pub-sub 的消息模型。当 pub-sub 客户端在没有积极侦听它所订阅的主题,而又想接收所有发送到该主题的消息时,客户端可以用持久性主题(durable topic)来实现这种行为。让我们看一个前面的订阅者客户端的变种,它使用一个持久性主题来确保接受到所有消息,包括当客户端没有侦听主题时所发布的消息。<xref linkend="
+"\"A_Pub_Sub_With_Durable_Topic_Example-A_durable_topic_JMS_client_example\"/"
+"> 展示了持久性主题客户端,它和 <xref "
+"linkend=\"A_Pub_Sub_Example-A_JMS_subscriber_client\"/> 客户端的关键区别用黑体进行高亮显示。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:87
#, no-c-format
msgid "A durable topic JMS client example"
-msgstr ""
+msgstr "持久性主题 JMS 客户端示例"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:88
@@ -775,6 +1186,88 @@
" \n"
"}"
msgstr ""
+"package org.jboss.book.jms.ex1;\n"
+"\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.MessageListener;\n"
+"import javax.jms.Topic;\n"
+"import javax.jms.TopicConnection;\n"
+"import javax.jms.TopicConnectionFactory;\n"
+"import javax.jms.TopicPublisher;\n"
+"import javax.jms.TopicSubscriber;\n"
+"import javax.jms.TopicSession;\n"
+"import javax.jms.TextMessage;\n"
+"import javax.naming.InitialContext;\n"
+"import javax.naming.NamingException;\n"
+"\n"
+"/**\n"
+" * A JMS client example program that synchronously receives a message a "
+"Topic\n"
+" * \n"
+" * @author Scott.Stark at jboss.org\n"
+" * @version $Revision: 1.9 $\n"
+" */\n"
+"public class DurableTopicRecvClient\n"
+"{\n"
+" TopicConnection conn = null;\n"
+" TopicSession session = null;\n"
+" Topic topic = null;\n"
+" \n"
+" public void setupPubSub()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" InitialContext iniCtx = new InitialContext();\n"
+" Object tmp = iniCtx.lookup(\"ConnectionFactory\");\n"
+"\n"
+" TopicConnectionFactory tcf = (TopicConnectionFactory) tmp;\n"
+" conn = tcf.createTopicConnection(\"john\", \"needle\");\n"
+" topic = (Topic) iniCtx.lookup(\"topic/testTopic\");\n"
+"\n"
+" session = conn.createTopicSession(false,\n"
+" TopicSession.AUTO_ACKNOWLEDGE);\n"
+" conn.start();\n"
+" }\n"
+" \n"
+" public void recvSync()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" System.out.println(\"Begin recvSync\");\n"
+" // Setup the pub/sub connection, session\n"
+" setupPubSub();\n"
+" // Wait upto 5 seconds for the message\n"
+" TopicSubscriber recv = session.createDurableSubscriber(topic, \"jms-"
+"ex1dtps\");\n"
+" Message msg = recv.receive(5000);\n"
+" if (msg == null) {\n"
+" System.out.println(\"Timed out waiting for msg\");\n"
+" } else {\n"
+" System.out.println(\"DurableTopicRecvClient.recv, msgt=\" + "
+"msg);\n"
+" } \n"
+" }\n"
+" \n"
+" public void stop() \n"
+" throws JMSException\n"
+" {\n"
+" conn.stop();\n"
+" session.close();\n"
+" conn.close();\n"
+" }\n"
+" \n"
+" public static void main(String args[]) \n"
+" throws Exception\n"
+" {\n"
+" System.out.println(\"Begin DurableTopicRecvClient, now=\" + \n"
+" System.currentTimeMillis());\n"
+" DurableTopicRecvClient client = new DurableTopicRecvClient();\n"
+" client.recvSync();\n"
+" client.stop();\n"
+" System.out.println(\"End DurableTopicRecvClient\");\n"
+" System.exit(0);\n"
+" }\n"
+" \n"
+"}"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:89
@@ -782,7 +1275,7 @@
msgid ""
"Now run the previous topic publisher with the durable topic subscriber as "
"follows:"
-msgstr ""
+msgstr "现在,运行前面的主题发布者和持久性主题订阅者:"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:92
@@ -825,12 +1318,48 @@
" [java] }\n"
" [java] End DurableTopicRecvClient"
msgstr ""
+"[examples]$ ant -Dchap=jms -Dex=1psdt run-example\n"
+"... \n"
+"run-example1psdt:\n"
+" [java] Begin DurableTopicSetup\n"
+" [java] End DurableTopicSetup\n"
+" [java] Begin TopicSendClient, now=1102899834273\n"
+" [java] Begin sendAsync\n"
+" [java] sendAsync, sent text=A text msg, now=1102899834345\n"
+" [java] End sendAsync\n"
+" [java] End TopicSendClient\n"
+" [java] Begin DurableTopicRecvClient, now=1102899840043\n"
+" [java] Begin recvSync\n"
+" [java] DurableTopicRecvClient.recv, msgt=SpyTextMessage {\n"
+" [java] Header { \n"
+" [java] jmsDestination : TOPIC.testTopic.DurableSubscription[\n"
+" clientId=DurableSubscriberExample name=jms-ex1dtps "
+"selector=null]\n"
+" [java] jmsDeliveryMode : 2\n"
+" [java] jmsExpiration : 0\n"
+" [java] jmsPriority : 4\n"
+" [java] jmsMessageID : ID:3-11028998375501\n"
+" [java] jmsTimeStamp : 1102899837550\n"
+" [java] jmsCorrelationID: null\n"
+" [java] jmsReplyTo : null\n"
+" [java] jmsType : null\n"
+" [java] jmsRedelivered : false\n"
+" [java] jmsProperties : {}\n"
+" [java] jmsPropReadWrite: false\n"
+" [java] msgReadOnly : true\n"
+" [java] producerClientId: ID:3\n"
+" [java] }\n"
+" [java] Body {\n"
+" [java] text :A text msg, now=1102899834345\n"
+" [java] }\n"
+" [java] }\n"
+" [java] End DurableTopicRecvClient"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:93
#, no-c-format
msgid "Items of note for the durable topic example include:"
-msgstr ""
+msgstr "请注意持久性主题示例里的:"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:98
@@ -1219,12 +1748,123 @@
" \n"
"}"
msgstr ""
+"package org.jboss.book.jms.ex2;\n"
+"\n"
+"import javax.jms.JMSException;\n"
+"import javax.jms.Message;\n"
+"import javax.jms.MessageListener;\n"
+"import javax.jms.Queue;\n"
+"import javax.jms.QueueConnection;\n"
+"import javax.jms.QueueConnectionFactory;\n"
+"import javax.jms.QueueReceiver;\n"
+"import javax.jms.QueueSender;\n"
+"import javax.jms.QueueSession;\n"
+"import javax.jms.TextMessage;\n"
+"import javax.naming.InitialContext;\n"
+"import javax.naming.NamingException;\n"
+"\n"
+"import EDU.oswego.cs.dl.util.concurrent.CountDown;\n"
+"\n"
+"/**\n"
+" * A complete JMS client example program that sends N TextMessages to\n"
+" * a Queue B and asynchronously receives the messages as modified by\n"
+" * TextMDB from Queue A.\n"
+" *\n"
+" * @author Scott.Stark at jboss.org\n"
+" * @version $Revision: 1.9 $\n"
+" */\n"
+"public class SendRecvClient\n"
+"{\n"
+" static final int N = 10;\n"
+" static CountDown done = new CountDown(N);\n"
+"\n"
+" QueueConnection conn;\n"
+" QueueSession session;\n"
+" Queue queA;\n"
+" Queue queB;\n"
+" \n"
+" public static class ExListener \n"
+" implements MessageListener\n"
+" {\n"
+" public void onMessage(Message msg)\n"
+" {\n"
+" done.release();\n"
+" TextMessage tm = (TextMessage) msg;\n"
+" try {\n"
+" System.out.println(\"onMessage, recv text=\"+tm.getText());\n"
+" } catch(Throwable t) {\n"
+" t.printStackTrace();\n"
+" }\n"
+" }\n"
+" }\n"
+" \n"
+" public void setupPTP()\n"
+" throws JMSException, NamingException\n"
+" {\n"
+" InitialContext iniCtx = new InitialContext();\n"
+" Object tmp = iniCtx.lookup(\"ConnectionFactory\");\n"
+" QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;\n"
+" conn = qcf.createQueueConnection();\n"
+" queA = (Queue) iniCtx.lookup(\"queue/A\");\n"
+" queB = (Queue) iniCtx.lookup(\"queue/B\");\n"
+" session = conn.createQueueSession(false,\n"
+" QueueSession.AUTO_ACKNOWLEDGE);\n"
+" conn.start();\n"
+" }\n"
+" \n"
+" public void sendRecvAsync(String textBase)\n"
+" throws JMSException, NamingException, InterruptedException\n"
+" {\n"
+" System.out.println(\"Begin sendRecvAsync\");\n"
+"\n"
+" // Setup the PTP connection, session\n"
+" setupPTP();\n"
+"\n"
+" // Set the async listener for queA\n"
+" QueueReceiver recv = session.createReceiver(queA);\n"
+" recv.setMessageListener(new ExListener());\n"
+"\n"
+" // Send a few text msgs to queB\n"
+" QueueSender send = session.createSender(queB);\n"
+"\n"
+" for(int m = 0; m < 10; m ++) {\n"
+" TextMessage tm = session.createTextMessage(textBase+\"#\"+m);\n"
+" tm.setJMSReplyTo(queA);\n"
+" send.send(tm);\n"
+" System.out.println(\"sendRecvAsync, sent text=\" + tm.getText"
+"());\n"
+" }\n"
+" System.out.println(\"End sendRecvAsync\");\n"
+" }\n"
+" \n"
+" public void stop() \n"
+" throws JMSException\n"
+" {\n"
+" conn.stop();\n"
+" session.close();\n"
+" conn.close();\n"
+" }\n"
+" \n"
+" public static void main(String args[]) \n"
+" throws Exception\n"
+" {\n"
+" System.out.println(\"Begin SendRecvClient,now=\" + \n"
+" System.currentTimeMillis());\n"
+" SendRecvClient client = new SendRecvClient();\n"
+" client.sendRecvAsync(\"A text msg\");\n"
+" client.done.acquire();\n"
+" client.stop();\n"
+" System.exit(0);\n"
+" System.out.println(\"End SendRecvClient\");\n"
+" }\n"
+" \n"
+"}"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:139
#, no-c-format
msgid "Run the client as follows:"
-msgstr ""
+msgstr "如下所示,运行客户端:"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:142
@@ -1258,12 +1898,39 @@
" [java] onMessage, recv text=A text msg#8processed by: 6056676\n"
" [java] onMessage, recv text=A text msg#6processed by: 15679078"
msgstr ""
+"[examples]$ ant -Dchap=jms -Dex=2 run-example\n"
+"...\n"
+"run-example2:\n"
+"...\n"
+" [java] Begin SendRecvClient, now=1102900541558\n"
+" [java] Begin sendRecvAsync\n"
+" [java] sendRecvAsync, sent text=A text msg#0\n"
+" [java] sendRecvAsync, sent text=A text msg#1\n"
+" [java] sendRecvAsync, sent text=A text msg#2\n"
+" [java] sendRecvAsync, sent text=A text msg#3\n"
+" [java] sendRecvAsync, sent text=A text msg#4\n"
+" [java] sendRecvAsync, sent text=A text msg#5\n"
+" [java] sendRecvAsync, sent text=A text msg#6\n"
+" [java] sendRecvAsync, sent text=A text msg#7\n"
+" [java] sendRecvAsync, sent text=A text msg#8\n"
+" [java] sendRecvAsync, sent text=A text msg#9\n"
+" [java] End sendRecvAsync\n"
+" [java] onMessage, recv text=A text msg#0processed by: 12855623\n"
+" [java] onMessage, recv text=A text msg#5processed by: 9399816\n"
+" [java] onMessage, recv text=A text msg#9processed by: 6598158\n"
+" [java] onMessage, recv text=A text msg#3processed by: 8153998\n"
+" [java] onMessage, recv text=A text msg#4processed by: 10118602\n"
+" [java] onMessage, recv text=A text msg#2processed by: 1792333\n"
+" [java] onMessage, recv text=A text msg#7processed by: 14251014\n"
+" [java] onMessage, recv text=A text msg#1processed by: 10775981\n"
+" [java] onMessage, recv text=A text msg#8processed by: 6056676\n"
+" [java] onMessage, recv text=A text msg#6processed by: 15679078"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:143
#, no-c-format
msgid "The corresponding JBoss server console output is:"
-msgstr ""
+msgstr "对应的 JBoss 服务器控制台的输出是:"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:146
@@ -1324,12 +1991,66 @@
"19:15:47,064 INFO [TextMDB] TextMDB.onMessage, this=15679078\n"
"19:15:47,065 INFO [TextMDB] TextMDB.sendReply, this=15679078, dest=QUEUE.A"
msgstr ""
+"19:15:40,232 INFO [EjbModule] Deploying TextMDB\n"
+" 19:15:41,498 INFO [EJBDeployer] Deployed: file:/jboss-4.2.0.GA/"
+"server/production/deploy/\n"
+" jms-ex2.jar\n"
+"19:15:45,606 INFO [TextMDB] TextMDB.ctor, this=10775981\n"
+"19:15:45,620 INFO [TextMDB] TextMDB.ctor, this=1792333\n"
+"19:15:45,627 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=10775981\n"
+"19:15:45,638 INFO [TextMDB] TextMDB.ejbCreate, this=10775981\n"
+"19:15:45,640 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=1792333\n"
+"19:15:45,640 INFO [TextMDB] TextMDB.ejbCreate, this=1792333\n"
+"19:15:45,649 INFO [TextMDB] TextMDB.ctor, this=12855623\n"
+"19:15:45,658 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=12855623\n"
+"19:15:45,661 INFO [TextMDB] TextMDB.ejbCreate, this=12855623\n"
+"19:15:45,742 INFO [TextMDB] TextMDB.ctor, this=8153998\n"
+"19:15:45,744 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=8153998\n"
+"19:15:45,744 INFO [TextMDB] TextMDB.ejbCreate, this=8153998\n"
+"19:15:45,763 INFO [TextMDB] TextMDB.ctor, this=10118602\n"
+"19:15:45,764 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=10118602\n"
+"19:15:45,764 INFO [TextMDB] TextMDB.ejbCreate, this=10118602\n"
+"19:15:45,777 INFO [TextMDB] TextMDB.ctor, this=9399816\n"
+"19:15:45,779 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=9399816\n"
+"19:15:45,779 INFO [TextMDB] TextMDB.ejbCreate, this=9399816\n"
+"19:15:45,792 INFO [TextMDB] TextMDB.ctor, this=15679078\n"
+"19:15:45,798 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=15679078\n"
+"19:15:45,799 INFO [TextMDB] TextMDB.ejbCreate, this=15679078\n"
+"19:15:45,815 INFO [TextMDB] TextMDB.ctor, this=14251014\n"
+"19:15:45,816 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=14251014\n"
+"19:15:45,817 INFO [TextMDB] TextMDB.ejbCreate, this=14251014\n"
+"19:15:45,829 INFO [TextMDB] TextMDB.ctor, this=6056676\n"
+"19:15:45,831 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=6056676\n"
+"19:15:45,864 INFO [TextMDB] TextMDB.ctor, this=6598158\n"
+"19:15:45,903 INFO [TextMDB] TextMDB.ejbCreate, this=6056676\n"
+"19:15:45,906 INFO [TextMDB] TextMDB.setMessageDrivenContext, this=6598158\n"
+"19:15:45,906 INFO [TextMDB] TextMDB.ejbCreate, this=6598158\n"
+"19:15:46,236 INFO [TextMDB] TextMDB.onMessage, this=12855623\n"
+"19:15:46,238 INFO [TextMDB] TextMDB.sendReply, this=12855623, dest=QUEUE.A\n"
+"19:15:46,734 INFO [TextMDB] TextMDB.onMessage, this=9399816\n"
+"19:15:46,736 INFO [TextMDB] TextMDB.onMessage, this=8153998\n"
+"19:15:46,737 INFO [TextMDB] TextMDB.onMessage, this=6598158\n"
+"19:15:46,768 INFO [TextMDB] TextMDB.sendReply, this=9399816, dest=QUEUE.A\n"
+"19:15:46,768 INFO [TextMDB] TextMDB.sendReply, this=6598158, dest=QUEUE.A\n"
+"19:15:46,774 INFO [TextMDB] TextMDB.sendReply, this=8153998, dest=QUEUE.A\n"
+"19:15:46,903 INFO [TextMDB] TextMDB.onMessage, this=10118602\n"
+"19:15:46,904 INFO [TextMDB] TextMDB.sendReply, this=10118602, dest=QUEUE.A\n"
+"19:15:46,927 INFO [TextMDB] TextMDB.onMessage, this=1792333\n"
+"19:15:46,928 INFO [TextMDB] TextMDB.sendReply, this=1792333, dest=QUEUE.A\n"
+"19:15:47,002 INFO [TextMDB] TextMDB.onMessage, this=14251014\n"
+"19:15:47,007 INFO [TextMDB] TextMDB.sendReply, this=14251014, dest=QUEUE.A\n"
+"19:15:47,051 INFO [TextMDB] TextMDB.onMessage, this=10775981\n"
+"19:15:47,051 INFO [TextMDB] TextMDB.sendReply, this=10775981, dest=QUEUE.A\n"
+"19:15:47,060 INFO [TextMDB] TextMDB.onMessage, this=6056676\n"
+"19:15:47,061 INFO [TextMDB] TextMDB.sendReply, this=6056676, dest=QUEUE.A\n"
+"19:15:47,064 INFO [TextMDB] TextMDB.onMessage, this=15679078\n"
+"19:15:47,065 INFO [TextMDB] TextMDB.sendReply, this=15679078, dest=QUEUE.A"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:147
#, no-c-format
msgid "Items of note in this example include:"
-msgstr ""
+msgstr "这个例子里要注意的是:"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:152
@@ -1698,8 +2419,7 @@
msgid ""
"<emphasis role=\"bold\">deploy/jms/jms-ra.rar</emphasis>: This is a JCA "
"resource adaptor for JMS providers."
-msgstr ""
-"<emphasis role=\"bold\">parameter</emphasis>:这个元素描述了操作的签名。"
+msgstr "<emphasis role=\"bold\">parameter</emphasis>:这个元素描述了操作的签名。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:315
@@ -2187,8 +2907,7 @@
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:527
#, fuzzy, no-c-format
-msgid ""
-"<emphasis role=\"bold\">URLPort</emphasis>: The port portion of the URL."
+msgid "<emphasis role=\"bold\">URLPort</emphasis>: The port portion of the URL."
msgstr "<emphasis role=\"bold\">description</emphasis>:对attribute的描述"
#. Tag: para
@@ -2549,11 +3268,11 @@
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:687
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">listMessageCounter()</emphasis>: This operation "
"generates an HTML table that contains:"
-msgstr "<emphasis role=\"bold\">ACTION_INFO</emphasis>:读/写操作。"
+msgstr "<emphasis role=\"bold\">listMessageCounter()</emphasis>:这个操作产生包含下列内容的 HTML 表格:"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:692
@@ -2567,33 +3286,33 @@
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:697
-#, fuzzy, no-c-format
+#, no-c-format
msgid "<emphasis role=\"bold\">Name</emphasis>: The name of the destination."
-msgstr "<emphasis role=\"bold\">className</emphasis>:提供服务实现的类的名字。"
+msgstr "<emphasis role=\"bold\">Name</emphasis>:目的地的名称。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:702
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">Subscription</emphasis>: The subscription ID for a "
"topic."
-msgstr "<emphasis role=\"bold\">description</emphasis>:对attribute的描述"
+msgstr "<emphasis role=\"bold\">Subscription</emphasis>:主题的订阅 ID。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:707
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">Durable</emphasis>: A boolean indicating if the "
"topic subscription is durable."
-msgstr "<emphasis role=\"bold\">name</emphasis>:这个元素包含操作的名字。"
+msgstr "<emphasis role=\"bold\">Durable</emphasis>:表示主题订阅是否持久的布尔值。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:712
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">Count</emphasis>: The number of message delivered to "
"the destination."
-msgstr "<emphasis role=\"bold\">ACTION_INFO</emphasis>:读/写操作。"
+msgstr "<emphasis role=\"bold\">Count</emphasis>:提交到目的地的消息的数量。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:717
@@ -2785,21 +3504,19 @@
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:816
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">HardRefCacheSize</emphasis>: The number of messages "
"in the cache that are not softened."
-msgstr "<emphasis role=\"bold\">className</emphasis>:提供服务实现的类的名字。"
+msgstr "<emphasis role=\"bold\">HardRefCacheSize</emphasis>:缓存里没有减弱的消息的数量。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:821
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">SoftRefCacheSize</emphasis>: The number of messages "
"that are currently softened."
-msgstr ""
-"<emphasis role=\"bold\">MaxPoolSize</emphasis>:处理客户的服务器线程数量。它"
-"的缺省值是 300。"
+msgstr "<emphasis role=\"bold\">SoftRefCacheSize</emphasis>:正在减弱的消息的数量。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:826
@@ -2813,19 +3530,17 @@
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:831
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">TotalCacheSize</emphasis>: The total number of "
"messages that are being managed by the cache."
-msgstr ""
-"<emphasis role=\"bold\">MaxPoolSize</emphasis>:处理客户的服务器线程数量。它"
-"的缺省值是 300。"
+msgstr "<emphasis role=\"bold\">TotalCacheSize</emphasis>:缓存所管理的消息的总数。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:839
-#, fuzzy, no-c-format
+#, no-c-format
msgid "org.jboss.mq.pm.jdbc2.PersistenceManager"
-msgstr "org.jboss.mx.interceptor.PersistenceInterceptor"
+msgstr "org.jboss.mq.pm.jdbc2.PersistenceManager"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:840
@@ -2887,7 +3602,7 @@
#: J2EE_Messaging_On_JBOSS.xml:865
#, no-c-format
msgid "Default JDBC2 PersistenceManager SqlProperties"
-msgstr ""
+msgstr "缺省的 JDBC2 PersistenceManager SqlProperties"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:866
@@ -2956,18 +3671,80 @@
" VALUES ('noacc','nobody')\n"
"</attribute>"
msgstr ""
+"<attribute name=\"SqlProperties\">\n"
+" CREATE_TABLES_ON_STARTUP = TRUE\n"
+" CREATE_USER_TABLE = CREATE TABLE JMS_USERS \\\n"
+" (USERID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, \\\n"
+" CLIENTID VARCHAR(128), PRIMARY KEY(USERID))\n"
+" CREATE_ROLE_TABLE = CREATE TABLE JMS_ROLES \\\n"
+" (ROLEID VARCHAR(32) NOT NULL, USERID VARCHAR(32) NOT NULL, \\\n"
+" PRIMARY KEY(USERID, ROLEID))\n"
+" CREATE_SUBSCRIPTION_TABLE = CREATE TABLE JMS_SUBSCRIPTIONS \\\n"
+" (CLIENTID VARCHAR(128) NOT NULL, \\ \n"
+" SUBNAME VARCHAR(128) NOT NULL, TOPIC VARCHAR(255) NOT NULL, "
+"\\ \n"
+" SELECTOR VARCHAR(255), PRIMARY KEY(CLIENTID, SUBNAME))\n"
+" GET_SUBSCRIPTION = SELECT TOPIC, SELECTOR FROM JMS_SUBSCRIPTIONS \\\n"
+" WHERE CLIENTID=? AND SUBNAME=?\n"
+" LOCK_SUBSCRIPTION = SELECT TOPIC, SELECTOR FROM JMS_SUBSCRIPTIONS \\\n"
+" WHERE CLIENTID=? AND SUBNAME=?\n"
+" GET_SUBSCRIPTIONS_FOR_TOPIC = \n"
+" SELECT CLIENTID, SUBNAME, SELECTOR FROM JMS_SUBSCRIPTIONS WHERE "
+"TOPIC=?\n"
+" INSERT_SUBSCRIPTION = \\\n"
+" INSERT INTO JMS_SUBSCRIPTIONS (CLIENTID, SUBNAME, TOPIC, "
+"SELECTOR) VALUES(?,?,?,?)\n"
+" UPDATE_SUBSCRIPTION = \\\n"
+" UPDATE JMS_SUBSCRIPTIONS SET TOPIC=?, SELECTOR=? WHERE CLIENTID=? "
+"AND SUBNAME=?\n"
+" REMOVE_SUBSCRIPTION = DELETE FROM JMS_SUBSCRIPTIONS WHERE CLIENTID=? "
+"AND SUBNAME=?\n"
+" GET_USER_BY_CLIENTID = SELECT USERID, PASSWD, CLIENTID FROM JMS_USERS "
+"WHERE CLIENTID=?\n"
+" GET_USER = SELECT PASSWD, CLIENTID FROM JMS_USERS WHERE USERID=?\n"
+" POPULATE.TABLES.01 = INSERT INTO JMS_USERS (USERID, PASSWD) \\\n"
+" VALUES ('guest', 'guest')\n"
+" POPULATE.TABLES.02 = INSERT INTO JMS_USERS (USERID, PASSWD) \\\n"
+" VALUES ('j2ee', 'j2ee')\n"
+" POPULATE.TABLES.03 = INSERT INTO JMS_USERS (USERID, PASSWD, CLIENTID) "
+"\\\n"
+" VALUES ('john', 'needle', '"
+"DurableSubscriberExample')\n"
+" POPULATE.TABLES.04 = INSERT INTO JMS_USERS (USERID, PASSWD) \\\n"
+" VALUES ('nobody', 'nobody')\n"
+" POPULATE.TABLES.05 = INSERT INTO JMS_USERS (USERID, PASSWD) \\\n"
+" VALUES ('dynsub', 'dynsub')\n"
+" POPULATE.TABLES.06 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('guest','guest')\n"
+" POPULATE.TABLES.07 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('j2ee','guest')\n"
+" POPULATE.TABLES.08 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('john','guest')\n"
+" POPULATE.TABLES.09 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('subscriber','john')\n"
+" POPULATE.TABLES.10 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('publisher','john')\n"
+" POPULATE.TABLES.11 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('publisher','dynsub')\n"
+" POPULATE.TABLES.12 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('durpublisher','john')\n"
+" POPULATE.TABLES.13 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('durpublisher','dynsub')\n"
+" POPULATE.TABLES.14 = INSERT INTO JMS_ROLES (ROLEID, USERID) \\\n"
+" VALUES ('noacc','nobody')\n"
+"</attribute>"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:867
#, no-c-format
msgid "shows an alternate setting for Oracle."
-msgstr ""
+msgstr "展示了用于 Oracle 的特定设置。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:870
#, no-c-format
msgid "A sample JDBC2 PersistenceManager SqlProperties for Oracle"
-msgstr ""
+msgstr "用于 Oracle 的一个 JDBC2 PersistenceManager SqlProperties 范例"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:871
@@ -3022,6 +3799,54 @@
" CREATE_TABLES_ON_STARTUP = TRUE\n"
"</attribute>"
msgstr ""
+"<attribute name=\"SqlProperties\">\n"
+" BLOB_TYPE=BINARYSTREAM_BLOB\n"
+" INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?)\n"
+" INSERT_MESSAGE = \\\n"
+" INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION, MESSAGEBLOB, "
+"TXID, TXOP) \\\n"
+" VALUES(?,?,?,?,?)\n"
+" SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS\n"
+" SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES\n"
+" SELECT_MESSAGES_IN_DEST = \\\n"
+" SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE "
+"DESTINATION=?\n"
+" SELECT_MESSAGE = \\\n"
+" SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE MESSAGEID=? "
+"AND DESTINATION=?\n"
+" MARK_MESSAGE = \\\n"
+" UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE MESSAGEID=? AND "
+"DESTINATION=?\n"
+" UPDATE_MESSAGE = \\\n"
+" UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND "
+"DESTINATION=?\n"
+" UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE "
+"TXOP=?\n"
+" UPDATE_MARKED_MESSAGES_WITH_TX = \\\n"
+" UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=?\n"
+" DELETE_MARKED_MESSAGES_WITH_TX = \\\n"
+" DELETE FROM JMS_MESSAGES MESS WHERE TXOP=:1 AND EXISTS \\\n"
+" (SELECT TXID FROM JMS_TRANSACTIONS TX WHERE TX.TXID = MESS.TXID)\n"
+" DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ?\n"
+" DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND "
+"TXOP=?\n"
+" DELETE_TEMPORARY_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXOP='"
+"T'\n"
+" DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND "
+"DESTINATION=?\n"
+" CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER "
+"NOT NULL, \\\n"
+" DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), \\\n"
+" MESSAGEBLOB BLOB, PRIMARY KEY (MESSAGEID, DESTINATION) )\n"
+" CREATE_IDX_MESSAGE_TXOP_TXID = \\\n"
+" CREATE INDEX JMS_MESSAGES_TXOP_TXID ON JMS_MESSAGES (TXOP, TXID)\n"
+" CREATE_IDX_MESSAGE_DESTINATION = \\\n"
+" CREATE INDEX JMS_MESSAGES_DESTINATION ON JMS_MESSAGES "
+"(DESTINATION)\n"
+" CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER, "
+"PRIMARY KEY (TXID) )\n"
+" CREATE_TABLES_ON_STARTUP = TRUE\n"
+"</attribute>"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:872
@@ -3033,9 +3858,9 @@
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:878
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Destination MBeans"
-msgstr "关联关系映射"
+msgstr "Destination MBean"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:879
@@ -3050,7 +3875,7 @@
#: J2EE_Messaging_On_JBOSS.xml:883
#, no-c-format
msgid "org.jboss.mq.server.jmx.Queue"
-msgstr ""
+msgstr "org.jboss.mq.server.jmx.Queue"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:884
@@ -3058,7 +3883,7 @@
msgid ""
"The <literal>Queue</literal> is used to define a queue destination in JBoss. "
"The following shows the configuration of one of the default JBoss queues."
-msgstr ""
+msgstr "<literal>Queue</literal> 用来定义 JBoss 里的队列主题。下面是其中一个 JBoss 缺省队列的配置。"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:887
@@ -3085,6 +3910,26 @@
" </attribute>\n"
"</mbean>"
msgstr ""
+"<mbean code=\"org.jboss.mq.server.jmx.Queue\" \n"
+" name=\"jboss.mq.destination:service=Queue,name=testQueue\">\n"
+" <depends optional-attribute-name=\"DestinationManager\">\n"
+" jboss.mq:service=DestinationManager\n"
+" </depends>\n"
+" <depends optional-attribute-name=\"SecurityManager\">\n"
+" jboss.mq:service=SecurityManager\n"
+" </depends>\n"
+" <attribute name=\"MessageCounterHistoryDayLimit\">-1</"
+"attribute>\n"
+" <attribute name=\"SecurityConf\">\n"
+" <security>\n"
+" <role name=\"guest\" read=\"true\" write=\"true\"/>\n"
+" <role name=\"publisher\" read=\"true\" write=\"true\" create="
+"\"false\"/>\n"
+" <role name=\"noacc\" read=\"false\" write=\"false\" "
+"create=\"false\"/>\n"
+" </security>\n"
+" </attribute>\n"
+"</mbean>"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:888
@@ -3169,8 +4014,7 @@
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:923 J2EE_Messaging_On_JBOSS.xml:1021
#, no-c-format
-msgid ""
-"Additional read-only attributes that provide statistics information include:"
+msgid "Additional read-only attributes that provide statistics information include:"
msgstr ""
#. Tag: para
@@ -3212,7 +4056,7 @@
#: J2EE_Messaging_On_JBOSS.xml:948
#, no-c-format
msgid "The following are some of the operations available on queues."
-msgstr ""
+msgstr "下面是队列的一些可用操作。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:953
@@ -3231,31 +4075,29 @@
"<emphasis role=\"bold\">listMessageCounterHistory()</emphasis>: This "
"operation display an HTML table showing the hourly message counts per hour "
"for each day in the history."
-msgstr ""
+msgstr "<emphasis role=\"bold\">listMessageCounterHistory()</emphasis>:这个操作显示了一个 HTML 表格,它显示历史记录里每一天的每小时的消息计数。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:968 J2EE_Messaging_On_JBOSS.xml:1081
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">resetMessageCounterHistory()</emphasis>: This "
"operation resets the day history message counts."
-msgstr ""
-"<emphasis role=\"bold\">parameter</emphasis>:这个元素描述了操作的签名。"
+msgstr "<emphasis role=\"bold\">resetMessageCounterHistory()</emphasis>:这个操作重置历史消息的计数。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:973
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"<emphasis role=\"bold\">removeAllMessages()</emphasis>: This method removes "
"all the messages on the queue."
-msgstr ""
-"<emphasis role=\"bold\">parameter</emphasis>:这个元素描述了操作的签名。"
+msgstr "<emphasis role=\"bold\">removeAllMessages()</emphasis>:这个方法删除队列中的所有消息。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:981
#, no-c-format
msgid "org.jboss.mq.server.jmx.Topic"
-msgstr ""
+msgstr "org.jboss.mq.server.jmx.Topic"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:982
@@ -3264,7 +4106,7 @@
"The <literal>org.jboss.mq.server.jmx.Topic</literal> is used to define a "
"topic destination in JBoss. The following shows the configuration of one of "
"the default JBoss topics."
-msgstr ""
+msgstr "<literal>org.jboss.mq.server.jmx.Topic</literal> 被用来定义 JBoss 里的主题目的地。下面的代码展示了其中一个缺省的 JBoss 主题。"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:985
@@ -3290,6 +4132,25 @@
" </attribute>\n"
"</mbean>"
msgstr ""
+"<mbean code=\"org.jboss.mq.server.jmx.Topic\"\n"
+" name=\"jboss.mq.destination:service=Topic,name=testTopic\">\n"
+" <depends optional-attribute-name=\"DestinationManager\">\n"
+" jboss.mq:service=DestinationManager\n"
+" </depends>\n"
+" <depends optional-attribute-name=\"SecurityManager\">\n"
+" jboss.mq:service=SecurityManager\n"
+" </depends>\n"
+" <attribute name=\"SecurityConf\">\n"
+" <security>\n"
+" <role name=\"guest\" read=\"true\" write=\"true\" /"
+">\n"
+" <role name=\"publisher\" read=\"true\" write=\"true\" "
+"create=\"false\" />\n"
+" <role name=\"durpublisher\" read=\"true\" write=\"true\" "
+"create=\"true\" />\n"
+" </security>\n"
+" </attribute>\n"
+"</mbean>"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:986
@@ -3456,7 +4317,7 @@
#: J2EE_Messaging_On_JBOSS.xml:1093
#, no-c-format
msgid "Specifying the MDB JMS Provider"
-msgstr ""
+msgstr "指定 MDB JMS 提供者"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:1094
@@ -3530,7 +4391,7 @@
#: J2EE_Messaging_On_JBOSS.xml:1107
#, no-c-format
msgid "org.jboss.jms.jndi.JMSProviderLoader MBean"
-msgstr ""
+msgstr "org.jboss.jms.jndi.JMSProviderLoader MBean"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:1108
@@ -3589,8 +4450,7 @@
msgid ""
"<emphasis role=\"bold\">TopicFactoryRef</emphasis>: The JNDI name under "
"which the <literal>javax.jms.TopicConnectionFactory</literal> will be bound."
-msgstr ""
-"<emphasis role=\"bold\">JndiName</emphasis>:外部的上下文绑定的 JNDI 名。"
+msgstr "<emphasis role=\"bold\">JndiName</emphasis>:外部的上下文绑定的 JNDI 名。"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:1138
@@ -3598,14 +4458,13 @@
msgid ""
"<emphasis role=\"bold\">Properties</emphasis>: The JNDI properties of the "
"initial context used to look up the factories."
-msgstr ""
-"<emphasis role=\"bold\">JndiName</emphasis>:外部的上下文绑定的 JNDI 名。"
+msgstr "<emphasis role=\"bold\">JndiName</emphasis>:外部的上下文绑定的 JNDI 名。"
#. Tag: title
#: J2EE_Messaging_On_JBOSS.xml:1143
#, no-c-format
msgid "A JMSProviderLoader for accessing a remote JBossMQ server"
-msgstr ""
+msgstr "访问远程 JBossMQ 服务器的 JMSProviderLoader"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:1144
@@ -3633,6 +4492,27 @@
" </attribute>\n"
"</mbean>"
msgstr ""
+"<mbean code=\"org.jboss.jms.jndi.JMSProviderLoader\"\n"
+" name=\"jboss.mq:service=JMSProviderLoader,name=RemoteJBossMQProvider"
+"\">\n"
+" <attribute name=\"ProviderName\">RemoteJMSProvider</"
+"attribute>\n"
+" <attribute name=\"ProviderUrl\"></attribute>\n"
+" <attribute name=\"ProviderAdapterClass\">\n"
+" org.jboss.jms.jndi.JBossMQProvider\n"
+" </attribute>\n"
+" <attribute name=\"FactoryRef\">XAConnectionFactory</"
+"attribute>\n"
+" <attribute name=\"QueueFactoryRef\">XAConnectionFactory</"
+"attribute>\n"
+" <attribute name=\"TopicFactoryRef\">XAConnectionFactory</"
+"attribute>\n"
+" <attribute name=\"Properties>\n"
+" java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory\n"
+" java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces\n"
+" java.naming.provider.url=jnp://remotehost:1099\n"
+" </attribute>\n"
+"</mbean>"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:1145
@@ -3648,7 +4528,7 @@
#: J2EE_Messaging_On_JBOSS.xml:1148
#, no-c-format
msgid "A jboss.xml fragment for specifying the MDB JMS provider adaptor"
-msgstr ""
+msgstr "指定 MDB JMS 提供者适配器的 jboss.xml 片段"
#. Tag: programlisting
#: J2EE_Messaging_On_JBOSS.xml:1149
@@ -3671,6 +4551,22 @@
" </MDBConfig>\n"
"</proxy-factory-config>"
msgstr ""
+"<proxy-factory-config>\n"
+" <JMSProviderAdapterJNDI>RemoteJMSProvider</"
+"JMSProviderAdapterJNDI>\n"
+" <ServerSessionPoolFactoryJNDI>StdJMSPool</"
+"ServerSessionPoolFactoryJNDI>\n"
+" <MaximumSize>15</MaximumSize>\n"
+" <MaxMessages>1</MaxMessages>\n"
+" <MDBConfig>\n"
+" <ReconnectIntervalSec>10</ReconnectIntervalSec>\n"
+" <DLQConfig>\n"
+" <DestinationQueue>queue/DLQ</DestinationQueue>\n"
+" <MaxTimesRedelivered>10</MaxTimesRedelivered>\n"
+" <TimeToLive>0</TimeToLive>\n"
+" </DLQConfig>\n"
+" </MDBConfig>\n"
+"</proxy-factory-config>"
#. Tag: para
#: J2EE_Messaging_On_JBOSS.xml:1150
@@ -3810,3 +4706,4 @@
"\"http://wiki.jboss.org/wiki/Wiki.jsp?page=IntegrationWithWebSphereMQSeries"
"\"></ulink>."
msgstr ""
+
Modified: projects/docs/trunk/Server_Configuration_Guide/zh-CN/Transactions.po
===================================================================
--- projects/docs/trunk/Server_Configuration_Guide/zh-CN/Transactions.po 2008-01-15 00:38:58 UTC (rev 68959)
+++ projects/docs/trunk/Server_Configuration_Guide/zh-CN/Transactions.po 2008-01-15 01:25:56 UTC (rev 68960)
@@ -9,7 +9,7 @@
"Project-Id-Version: Transactions\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-12-09 23:23+0000\n"
-"PO-Revision-Date: 2008-01-08 11:28+1000\n"
+"PO-Revision-Date: 2008-01-13 20:53+1000\n"
"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
"Language-Team: <zh at li.org>\n"
"MIME-Version: 1.0\n"
@@ -327,7 +327,7 @@
"maintain the atomic property of the transaction. The reason for this is that "
"if one recoverable resource has committed and another fails to commit, part "
"of the transaction would be committed and the other part rolled back."
-msgstr ""
+msgstr "当这个事务涉及多个可恢复资源时,对提交的管理将更为复杂。要维持事务的原子属性,简单地让每个会恢复资源提交对稳定存储设备的修改是不够的。这是因为如果其中一个可恢复资源已经提交而另外一个提交失败的话,部分事务将被提交而其他部分将被回滚。"
#. Tag: para
#: Transactions.xml:114
@@ -340,7 +340,7 @@
"When a recoverable resource indicates it is prepared to commit the "
"transaction, it has ensured that it can commit the transaction. The resource "
"is still able to rollback the transaction if necessary as well."
-msgstr ""
+msgstr "使用两阶段的 XA 协议可以解决这个问题。在实际的提交阶段之前,XA 协议使用一个额外的准备阶段。在请求任何会恢复资源提交修改前,事务管理者请求所有会恢复资源准备进行提交。当恢复资源准备好提交事务时,它会确保能够提交事务。而且,如有必要资源仍然能够回滚这个事务。"
#. Tag: para
#: Transactions.xml:117
@@ -354,13 +354,13 @@
"manager asking all the recoverable resources to commit the transaction. "
"Because all the recoverable resources have indicated they are prepared, this "
"step cannot fail."
-msgstr ""
+msgstr "所以,第一个阶段由请求所有可恢复资源准备提交的事务管理者组成。如果任何可恢复资源都没准备好,事务将被回滚。但如果所有的会恢复资源都指出它们能够准备好提交,XA 协议的第二阶段将开始。它由请求所有可恢复资源提交事务的事务管理者组成。因为所有的会恢复资源都表示它们已经准备好了,这个阶段不可能会失败。"
#. Tag: title
#: Transactions.xml:123
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Heuristic exceptions"
-msgstr "处理异常"
+msgstr "启发式异常(Heuristic exceptions)"
#. Tag: para
#: Transactions.xml:124
@@ -375,7 +375,7 @@
"parts of the transaction being committed while other parts are rolled back, "
"thus violating the atomicity property of transaction and possibly leading to "
"data integrity corruption."
-msgstr ""
+msgstr "在分布式环境里,通信故障是有可能发生的。如果事务管理者和可恢复资源之间的通信在某段时间内出现故障,会恢复资源可能决定单方面地提交或回滚事务里的修改。这样的决定被称为启发式的决定。这是事务系统里发生的最严重的错误之一,因为它将导致事务的部分被提交而另外一部分被回滚,这违背了事务的原子属性且有可能导致数据完整性问题。"
#. Tag: para
#: Transactions.xml:127
@@ -388,7 +388,7 @@
"that is saved in stable storage depends on the type of recoverable resource "
"and is not standardized. The idea is that a system manager can look at the "
"data, and possibly edit the resource to correct any data integrity problems."
-msgstr ""
+msgstr "因为启发式异常的危险性,作出启发式决定的可恢复资源被要求在可靠存储设备里保留所有关于这个决定的信息,一直到事务管理者告诉它忘记这个决定为止。保存在可靠存储设备里的关于启发式决定的实际数据取决于可恢复资源的类型且并非标准化的。系统管理者可以查看这个数据,并编辑资源来纠正任何关于数据完整性的问题。"
#. Tag: para
#: Transactions.xml:130
@@ -403,6 +403,8 @@
"resource when it is asked to commit to indicate that a heuristic decision "
"was made and that all relevant updates have been rolled back."
msgstr ""
+"JTA 定义了几种不同的启发式异常。当可恢复资源被要求回滚、报告已做出启发式决定并提交了所有相关的更新时,<literal>javax.transaction.HeuristicCommitException</literal> 被抛出。相反的是 <literal>javax.transaction."
+"HeuristicRollbackException</literal>,它在可恢复资源被要求提交来指出已做出启发式决定且回滚了所有相关的更新时被抛出。"
#. Tag: para
#: Transactions.xml:133
@@ -414,7 +416,7 @@
"transaction manager throws this exception when some recoverable resources "
"did a heuristic commit, while other recoverable resources did a heuristic "
"rollback."
-msgstr ""
+msgstr "<literal>javax.transaction.HeuristicMixedException</literal> 是最坏的启发式异常。它被抛出来指出事务的一部分被提交,而其他部分被回滚。当某些会恢复资源做出启发式提交而其他可恢复资源做出启发式回滚时,事务管理者抛出这个异常。"
#. Tag: title
#: Transactions.xml:139
@@ -429,7 +431,7 @@
"In JTA, the identity of transactions is encapsulated in objects implementing "
"the <literal>javax.transaction.xa.Xid</literal> interface. The transaction "
"ID is an aggregate of three parts:"
-msgstr ""
+msgstr "在 JTA 里,事务的表示被封装在实现了 <literal>javax.transaction.xa.Xid</literal> 接口的对象里。事务 ID 是下面 3 部分的集合:"
#. Tag: para
#: Transactions.xml:145
@@ -437,7 +439,7 @@
msgid ""
"The format identifier indicates the transaction family and tells how the "
"other two parts should be interpreted."
-msgstr ""
+msgstr "format 标识符指出事务族(transaction family)以及如何解释其他两部分。"
#. Tag: para
#: Transactions.xml:150
@@ -445,13 +447,13 @@
msgid ""
"The global transaction id identified the global transaction within the "
"transaction family."
-msgstr ""
+msgstr "global 事务 ID 定义了事务族里的全局事务。"
#. Tag: para
#: Transactions.xml:155
#, no-c-format
msgid "The branch qualifier denotes a particular branch of the global transaction."
-msgstr ""
+msgstr "branch 限定符指定全局事务的特定分支。"
#. Tag: para
#: Transactions.xml:160
@@ -460,13 +462,13 @@
"Transaction branches are used to identify different parts of the same global "
"transaction. Whenever the transaction manager involves a new recoverable "
"resource in a transaction it creates a new transaction branch."
-msgstr ""
+msgstr "事务分支被用来标识相同全局事务的不同部分。每当事务管理者涉及新的可恢复资源时,它都会创建一个新的事务分支。"
#. Tag: title
#: Transactions.xml:168
#, no-c-format
msgid "JTS support"
-msgstr ""
+msgstr "对 JTS 的支持"
#. Tag: para
#: Transactions.xml:169
@@ -479,13 +481,13 @@
"model for transaction interoperability as recommended in the J2EE and EJB "
"standards and leads the market in providing many advanced features such as "
"fully distributed transactions and ORB portability with POA support."
-msgstr ""
+msgstr "JBoss Transactions 是对基于 Sun Microsystems J2EE Java Transaction Service (JTS) 标准的分布式事务管理系统的纯 Java 实现。我们对 JTS 的实现利用了 J2EE 和 EJB 标准推荐的用于事务互操作性的 Object Management Group(OMG)的 Object Transaction Service (OTS) 模型,并通过提供许多高级特征如完全分布式事务和带有 POA 支持的 ORB 可移植性来引导市场。"
#. Tag: title
#: Transactions.xml:175
#, no-c-format
msgid "Web Services Transactions"
-msgstr ""
+msgstr "Web 服务事务"
#. Tag: para
#: Transactions.xml:176
@@ -497,7 +499,7 @@
"advent of the Internet and Web services, the scenario that is now emerging "
"requires involvement of participants unknown to each other in distributed "
"transactions. These transactions have the following characteristics:"
-msgstr ""
+msgstr "在传统的 ACID 事务系统里,事务是短期存在的,资源(如数据库)在事务期间被锁定且参与者都彼此高度信任。随着互联网和 Web 服务的发展,分布式事务里需要涉及彼此未知的参与者。这些事务具有下面的特点:"
#. Tag: para
#: Transactions.xml:181
@@ -505,25 +507,25 @@
msgid ""
"Transactions may be of a long duration, sometimes lasting hours, days, or "
"more."
-msgstr ""
+msgstr "事务可能持续更长的时间,可能是小时、天或更长。"
#. Tag: para
#: Transactions.xml:186
#, no-c-format
msgid "Participants may not allow their resources to be locked for long durations."
-msgstr ""
+msgstr "参与者可能不允许它们的资源被锁定很长的时间。"
#. Tag: para
#: Transactions.xml:191
#, no-c-format
msgid "The communication infrastructure between participants may not be reliable."
-msgstr ""
+msgstr "参与者之间的通信基础结构可能不可靠。"
#. Tag: para
#: Transactions.xml:196
#, no-c-format
msgid "Some of the ACID properties of traditional transactions are not mandatory."
-msgstr ""
+msgstr "传统事务的某些 ACID 属性不是强制的。"
#. Tag: para
#: Transactions.xml:201
@@ -531,7 +533,7 @@
msgid ""
"A transaction may succeed even if only some of the participants choose to "
"confirm and others cancel."
-msgstr ""
+msgstr "即使只有一些参与者选择确认而其他参与者取消,事务也可能成功。"
#. Tag: para
#: Transactions.xml:206
@@ -539,19 +541,19 @@
msgid ""
"All participants may choose to have their own coordinator (Transaction "
"Manager), because of lack of trust."
-msgstr ""
+msgstr "由于缺乏信任,所有的参与者都可能选择拥有自己的协调者(事务管理者)。"
#. Tag: para
#: Transactions.xml:211
#, no-c-format
msgid "All activities are logged."
-msgstr ""
+msgstr "为所有的活动登记日志"
#. Tag: para
#: Transactions.xml:216
#, no-c-format
msgid "Transactions that have to be rolled back have the concept of compensation."
-msgstr ""
+msgstr "不得不回滚的事务具有补偿的概念。"
#. Tag: para
#: Transactions.xml:221
@@ -566,6 +568,8 @@
"designed to support multiple coordination protocols and therefore helps to "
"future-proof transactional applications."
msgstr ""
+"JBoss Transactions 添加了对 Web 服务事务的原始支持,它通过提供所有必要的组件,用最小的努力来构建可互用的、可靠的、多方的、基于 Web 服务的应用程序。它的编程接口基于用于 XML Transactioning "
+"(JAXTX) 的 Java API ,其产品包括对 WS-AtomicTransaction 和 WS-BusinessActivity 规格的支持。JBossTS 4.2 被设计成支持多个协调协议,有助于未来的事务性程序的构建。"
#. Tag: title
#: Transactions.xml:227
@@ -580,13 +584,13 @@
"JBossTS is configured through the jbossjts-properties.xml property file. You "
"should consult the JBossTS documentation for all of the configurable options "
"it supports."
-msgstr ""
+msgstr "我们通过 jbossjts-properties.xml 属性文件对 JBossTS 进行配置。关于它所支持的所有可配置选项,你可以参考 JBossTS 文档。"
#. Tag: title
#: Transactions.xml:234
#, no-c-format
msgid "Local versus distributed transactions"
-msgstr ""
+msgstr "本地 vs. 分布式事务"
#. Tag: para
#: Transactions.xml:235
@@ -601,5 +605,5 @@
"consider using either the JTS implementation from JBossTS, which uses CORBA "
"for communication, or the Web Services transactions component, which uses "
"SOAP/HTTP."
-msgstr ""
+msgstr "JBossTS 支持本地和分布式事务。如果事务跨越多个进程实例(例如多个虚拟机),它就被认为是分布式的。通常分布式事务将包含位于多个虚拟机里的参与者(例如 XAResources),但事务在单独的虚拟机(或其中一个参与者)里进行协调。如果你的架构要求分布式事务,你应该考虑使用 JBossTS 里的 JTS 实现(使用 CORBA),或者 Web 服务事务组件(使用 SOAP/HTTP)。"
More information about the jboss-cvs-commits
mailing list