[jboss-cvs] JBossAS SVN: r73247 - projects/docs/trunk/AS_4/Server_Configuration_Guide/zh-CN.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun May 11 07:51:38 EDT 2008
Author: xhuang at jboss.com
Date: 2008-05-11 07:51:37 -0400 (Sun, 11 May 2008)
New Revision: 73247
Modified:
projects/docs/trunk/AS_4/Server_Configuration_Guide/zh-CN/The_CMP_Engine.po
Log:
update
Modified: projects/docs/trunk/AS_4/Server_Configuration_Guide/zh-CN/The_CMP_Engine.po
===================================================================
--- projects/docs/trunk/AS_4/Server_Configuration_Guide/zh-CN/The_CMP_Engine.po 2008-05-09 22:22:22 UTC (rev 73246)
+++ projects/docs/trunk/AS_4/Server_Configuration_Guide/zh-CN/The_CMP_Engine.po 2008-05-11 11:51:37 UTC (rev 73247)
@@ -9,7 +9,7 @@
"Project-Id-Version: The_CMP_Engine\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-11-05 06:04+0000\n"
-"PO-Revision-Date: 2008-05-09 21:57+1000\n"
+"PO-Revision-Date: 2008-05-10 23:32+1000\n"
"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
"Language-Team: <en at li.org>\n"
"MIME-Version: 1.0\n"
@@ -1821,7 +1821,7 @@
#: The_CMP_Engine.xml:485
#, no-c-format
msgid "The declaration of audit information with given column names is shown below."
-msgstr ""
+msgstr "下面展示了对给定列名称的审计信息的声明。"
#. Tag: programlisting
#: The_CMP_Engine.xml:488
@@ -1877,7 +1877,7 @@
#: The_CMP_Engine.xml:492
#, no-c-format
msgid "Dependent Value Classes (DVCs)"
-msgstr ""
+msgstr "Dependent Value 类 (DVC)"
#. Tag: para
#: The_CMP_Engine.xml:493
@@ -1889,7 +1889,7 @@
"By default, a DVC is serialized, and the serialized form is stored in a "
"single database column. Although not discussed here, there are several known "
"issues with the long-term storage of classes in serialized form."
-msgstr ""
+msgstr "Dependent value 类(DVC)是用来识别类型为某个 <literal>cmp-field</literal> 而不是可自动识别的核心类型如 String 或数字值的 Java 类。在缺省情况下,DVC 是可序列化的,且序列化的格式保存在单个的数据库列里。虽然我们在这里不会进行讨论,但以序列化形式对类进行长期保存有几个已知的问题。"
#. Tag: para
#: The_CMP_Engine.xml:496
@@ -1905,7 +1905,7 @@
"with separate fields for area code, exchange, and extension, or a person'"
"s name spread across several fields. With a DVC, multiple columns can be "
"mapped to one logical field."
-msgstr ""
+msgstr "JBoss 也支持把 DVC 的内部数据保存到一个或多列里。这对于支持遗留的 JavaBean 和数据库结构很有用。具有高度平行结构的数据库(如带有字段 <literal>SHIP_LINE1</literal>、<literal>SHIP_LINE2</literal>、<literal>SHIP_CITY</literal> 等并用于帐单地址的另外一系列字段的 <literal>PURCHASE_ORDER</literal> 表)并不少见。其他常见的数据库结构包括带有独立的地区、总机、分机字段的电话号码,或者跨多个字段的名称。使用 DVC,你可以把多列映射至一个逻辑字段。"
#. Tag: para
#: The_CMP_Engine.xml:499
@@ -1920,22 +1920,24 @@
"literal> element within the <literal>dependent-value-classes</literal> "
"element."
msgstr ""
+"JBoss 要求 DVC 的映射必须遵循 JavaBean 用于简单属性的命名规则,以及每个存储在数据库里的属性都必须有 getter 和 setter 方法。而且,这个 bean 序列化且必须有一个无参数的构造函数。属性可以为任何简单类型,未映射的 DVC 或映射的 DVC,但不能是 EJB。DVC 映射在 <literal>dependent-value-classes</literal> 元素的 <literal>dependent-value-class</"
+"literal> 元素里进行指定。"
#. Tag: title
#: The_CMP_Engine.xml:503
#, no-c-format
msgid "The jbosscmp-jdbc dependent-value-class element model."
-msgstr ""
+msgstr "jbosscmp-jdbc 的 dependent-value-class 元素的内容格式。"
#. Tag: para
#: The_CMP_Engine.xml:510
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Here is an example of a simple <literal>ContactInfo</literal> DVC class."
-msgstr "自定义的 <literal>CacheProvider</literal> 的类名。"
+msgstr "下面是一个简单的 <literal>ContactInfo</literal> DVC 类的例子。"
#. Tag: programlisting
#: The_CMP_Engine.xml:513
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"public class ContactInfo \n"
" implements Serializable \n"
@@ -1983,41 +1985,50 @@
" // ... equals, hashCode, toString \n"
"}"
msgstr ""
-"package events;\n"
+"public class ContactInfo \n"
+" implements Serializable \n"
+"{\n"
+" /** The cell phone number. */\n"
+" private PhoneNumber cell;\n"
+" \n"
+" /** The pager number. */\n"
+" private PhoneNumber pager;\n"
+" \n"
+" /** The email address */\n"
+" private String email;\n"
"\n"
-"import java.util.Date;\n"
-"\n"
-"public class Event {\n"
-" private Long id;\n"
-"\n"
-" private String title;\n"
-" private Date date;\n"
-"\n"
-" public Event() {}\n"
-"\n"
-" public Long getId() {\n"
-" return id;\n"
+" \n"
+" /**\n"
+" * Creates empty contact info.\n"
+" */\n"
+" public ContactInfo() {\n"
" }\n"
"\n"
-" private void setId(Long id) {\n"
-" this.id = id;\n"
+" public PhoneNumber getCell() {\n"
+" return cell;\n"
" }\n"
-"\n"
-" public Date getDate() {\n"
-" return date;\n"
+" \n"
+" public void setCell(PhoneNumber cell) {\n"
+" this.cell = cell;\n"
" }\n"
-"\n"
-" public void setDate(Date date) {\n"
-" this.date = date;\n"
+" \n"
+" public PhoneNumber getPager() {\n"
+" return pager;\n"
" }\n"
-"\n"
-" public String getTitle() {\n"
-" return title;\n"
+" \n"
+" public void setPager(PhoneNumber pager) {\n"
+" this.pager = pager;\n"
" }\n"
+" \n"
+" public String getEmail() {\n"
+" return email;\n"
+" }\n"
"\n"
-" public void setTitle(String title) {\n"
-" this.title = title;\n"
+" public void setEmail(String email) {\n"
+" this.email = email.toLowerCase();\n"
" }\n"
+" \n"
+" // ... equals, hashCode, toString \n"
"}"
#. Tag: para
@@ -2026,7 +2037,7 @@
msgid ""
"The contact info includes a phone number, which is represented by another "
"DVC class."
-msgstr ""
+msgstr "这里的联系信息包括由另外一个 DVC 类表示的电话号码。"
#. Tag: programlisting
#: The_CMP_Engine.xml:517
@@ -2049,12 +2060,28 @@
" // ... equals, hashCode, toString\n"
"}"
msgstr ""
+"public class PhoneNumber\n"
+" implements Serializable \n"
+"{\n"
+" /** The first three digits of the phone number. */\n"
+" private short areaCode;\n"
+"\n"
+" /** The middle three digits of the phone number. */\n"
+" private short exchange;\n"
+"\n"
+" /** The last four digits of the phone number. */\n"
+" private short extension;\n"
+"\n"
+" // ... getters and setters \n"
+" \n"
+" // ... equals, hashCode, toString\n"
+"}"
#. Tag: para
#: The_CMP_Engine.xml:518
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The DVC mappings for these two classes are relatively straight forward."
-msgstr "下列的 XML 映射应该是很直白的。"
+msgstr "这两个类的 DVC 映射是相对简单的。"
#. Tag: programlisting
#: The_CMP_Engine.xml:521
@@ -2098,6 +2125,43 @@
" </dependent-value-class>\n"
"</dependent-value-classes>"
msgstr ""
+"<dependent-value-classes>\n"
+" <dependent-value-class>\n"
+" <description>A phone number</description>\n"
+" <class>org.jboss.cmp2.crimeportal.PhoneNumber</class>\n"
+" <property>\n"
+" <property-name>areaCode</property-name>\n"
+" <column-name>area_code</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>exchange</property-name>\n"
+" <column-name>exchange</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>extension</property-name>\n"
+" <column-name>extension</column-name>\n"
+" </property>\n"
+" </dependent-value-class>\n"
+" \n"
+" <dependent-value-class>\n"
+" <description>General contact info</description>\n"
+" <class>org.jboss.cmp2.crimeportal.ContactInfo</class>\n"
+" <property>\n"
+" <property-name>cell</property-name>\n"
+" <column-name>cell</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>pager</property-name>\n"
+" <column-name>pager</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>email</property-name>\n"
+" <column-name>email</column-name>\n"
+" <jdbc-type>VARCHAR</jdbc-type>\n"
+" <sql-type>VARCHAR(128)</sql-type>\n"
+" </property>\n"
+" </dependent-value-class>\n"
+"</dependent-value-classes>"
#. Tag: para
#: The_CMP_Engine.xml:522
@@ -2111,7 +2175,7 @@
"future release. The current proposal involves storing the primary key fields "
"in the case of a local entity and the entity handle in the case of a remote "
"entity."
-msgstr ""
+msgstr "每个 DVC 都用 <literal>dependent-value-class</literal> 元素进行声明。DVC 由 class 元素里声明的 Java 类的类型来标识。property 元素声明将被持久化的属性。这个规格是基于 <literal>cmp-field</literal> 元素的,所以不需加以说明。这个限制也将在将来的版本里删除。目前的计划包括在本地 entity 情况下保存主键字段而在远程 entity 情况下保存 entity 句柄。"
#. Tag: para
#: The_CMP_Engine.xml:525
@@ -2132,7 +2196,7 @@
"DVC, the process is repeated. For example, a <literal>cmp-field</literal> "
"named <literal>info</literal> that uses the <literal>ContactInfo</literal> "
"DVC would have the following columns:"
-msgstr ""
+msgstr "<literal>dependent-value-classes</literal> 部分定义了这个类的内部结构和缺省映射。当 JBoss 遇到具有未知类型的字段时,它将搜索注册的 DVC 列表,如果找到了一个 DVC,它将以序列化的形式把这个字段存储在某个单列里。JBoss 不支持 DVC 的继承;因此,这种搜索只局限于已声明的类型。DVC 可以根据其他 DVC 来构造,所以当 JBoss 采用 DVC 时,它把 DVC 树的结构简化为一系列的列。如果 JBoss 在启动时发现 DVC 循环,它将抛出 <literal>EJBException</literal>。属性的缺省列名称是 <literal>cmp-field</literal> 的列名后接下划线,然后是属性的列名。如果这个属性是一个 DVC,这个过程将被重复。令人,名为 <literal>info</literal> 并使用 <literal>ContactInfo</literal> DVC 的 <literal>cmp-field</literal> 将具有下列的列:"
#. Tag: programlisting
#: The_CMP_Engine.xml:528
@@ -2146,6 +2210,13 @@
"info_pager_extension\n"
"info_email"
msgstr ""
+"info_cell_area_code\n"
+"info_cell_exchange\n"
+"info_cell_extension\n"
+"info_pager_area_code\n"
+"info_pager_exchange\n"
+"info_pager_extension\n"
+"info_email"
#. Tag: para
#: The_CMP_Engine.xml:529
@@ -2154,7 +2225,7 @@
"The automatically generated column names can quickly become excessively long "
"and awkward. The default mappings of columns can be overridden in the entity "
"element as follows:"
-msgstr ""
+msgstr "自动生成的列名可以很快变得很冗长且糟糕。如下所示,列的自动映射可以在 entity 元素里进行覆盖:"
#. Tag: programlisting
#: The_CMP_Engine.xml:532
@@ -2209,6 +2280,54 @@
" </enterprise-beans>\n"
"</jbosscmp-jdbc>"
msgstr ""
+"<jbosscmp-jdbc>\n"
+" <enterprise-beans>\n"
+" <entity>\n"
+" <ejb-name>GangsterEJB</ejb-name>\n"
+" <cmp-field>\n"
+" <field-name>contactInfo</field-name>\n"
+" <property>\n"
+" <property-name>cell.areaCode</property-"
+"name>\n"
+" <column-name>cell_area</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>cell.exchange</property-"
+"name>\n"
+" <column-name>cell_exch</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>cell.extension</property-"
+"name>\n"
+" <column-name>cell_ext</column-name>\n"
+" </property>\n"
+" \n"
+" <property>\n"
+" <property-name>pager.areaCode</property-"
+"name>\n"
+" <column-name>page_area</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>pager.exchange</property-"
+"name>\n"
+" <column-name>page_exch</column-name>\n"
+" </property>\n"
+" <property>\n"
+" <property-name>pager.extension</property-"
+"name>\n"
+" <column-name>page_ext</column-name>\n"
+" </property>\n"
+" \n"
+" <property>\n"
+" <property-name>email</property-name>\n"
+" <column-name>email</column-name>\n"
+" <jdbc-type>VARCHAR</jdbc-type>\n"
+" <sql-type>VARCHAR(128)</sql-type>\n"
+" </property>\n"
+" </cmp-field>\n"
+" </entity>\n"
+" </enterprise-beans>\n"
+"</jbosscmp-jdbc>"
#. Tag: para
#: The_CMP_Engine.xml:533
@@ -2216,13 +2335,13 @@
msgid ""
"When overriding property info for the entity, you need to refer to the "
"property from a flat perspective as in <literal>cell.areaCode</literal>."
-msgstr ""
+msgstr "当覆盖 entity 的属性信息时,你需要象 <literal>cell.areaCode</literal> 里一样从平面的角度来引用这个属性。"
#. Tag: title
#: The_CMP_Engine.xml:541
#, no-c-format
msgid "Container Managed Relationships"
-msgstr ""
+msgstr "Container Managed Relationship"
#. Tag: para
#: The_CMP_Engine.xml:542
@@ -2241,7 +2360,7 @@
"CMRs is that they are only defined between local interfaces. This means that "
"a relationship cannot be created between two entities in separate "
"applications, even in the same application server."
-msgstr ""
+msgstr "容器管理的关系(Container Managed Relationships,CMR)是 CMP 2.0 的一个强大功能。自从引入 EJB 1.0 后,程序员已经在创建 entity 对象之间的关系,但在 CMP 2.0 出现之前,程序员不得不为每种关系编写大量代码并将之存储在伪外部键字段里。即使最简单的关系都需要冗长的代码,而带有引用完整性(referential integrity)的复杂关系则需要数小时的编码。而使用 CMP 2.0 不需要手工对关系进行编程。容器可以管理一对一、一对多和多对多的带有引用完整性的关系。CMR 的限制是它们只定义本地接口之间的关系。这意味着不能创建处于不同应用程序里的两个 entity 之间的关系,即使它们位于相同的应用服务器里。"
#. Tag: para
#: The_CMP_Engine.xml:545
@@ -2251,13 +2370,13 @@
"the <literal>cmr-field</literal> abstract accessors and declare the "
"relationship in the <literal>ejb-jar.xml</literal> file. The following two "
"sections describe these steps."
-msgstr ""
+msgstr "创建容器管理的关系(container managed relationship)需要两个基本步骤:创建 <literal>cmr-field</literal> 的 abstract accessor 并在 <literal>ejb-jar.xml</literal> 文件里声明关系。下面的两节描述了这些步骤。"
#. Tag: title
#: The_CMP_Engine.xml:549
#, no-c-format
msgid "CMR-Field Abstract Accessors"
-msgstr ""
+msgstr "CMR-Field 的 Abstract Accessor"
#. Tag: para
#: The_CMP_Engine.xml:550
@@ -2271,6 +2390,9 @@
"between organization and gangster, we declare the relationship from "
"organization to gangster in the <literal>OrganizationBean</literal> class:"
msgstr ""
+"CMR-Field 的 abstract accessor 具有和 <literal>cmp-"
+"fields</literal> 相同的签名,除了单一值的关系必须返回相关 entity 的本地接口,且多值的关系可以只返回一个 <literal>java.util.Collection</literal> (或 <literal>java.util."
+"Set</literal>) 对象。例如,要声明 organization 和 gangster 之间的一个一对多的关系,我们可以在 <literal>OrganizationBean</literal> 类里声明 organization 到 gangster 的关系:"
#. Tag: programlisting
#: The_CMP_Engine.xml:553
@@ -2283,6 +2405,12 @@
" public abstract void setMemberGangsters(Set gangsters);\n"
"}"
msgstr ""
+"public abstract class OrganizationBean\n"
+" implements EntityBean \n"
+"{\n"
+" public abstract Set getMemberGangsters();\n"
+" public abstract void setMemberGangsters(Set gangsters);\n"
+"}"
#. Tag: para
#: The_CMP_Engine.xml:554
@@ -2290,7 +2418,7 @@
msgid ""
"We also can declare the relationship from gangster to organization in the "
"<literal>GangsterBean</literal> class:"
-msgstr ""
+msgstr "我们也可以在 <literal>GangsterBean</literal> 类里声明 gangster 到 organization 的关系:"
#. Tag: programlisting
#: The_CMP_Engine.xml:557
@@ -2303,6 +2431,12 @@
" public abstract void setOrganization(Organization org);\n"
"}"
msgstr ""
+"public abstract class GangsterBean\n"
+" implements EntityBean \n"
+"{\n"
+" public abstract Organization getOrganization();\n"
+" public abstract void setOrganization(Organization org);\n"
+"}"
#. Tag: para
#: The_CMP_Engine.xml:558
@@ -2311,13 +2445,13 @@
"Although each bean declared a CMR field, only one of the two beans in a "
"relationship must have a set of accessors. As with CMP fields, a CMR field "
"is required to have both a getter and a setter method."
-msgstr ""
+msgstr "虽然每个 bean 都声明了一个 CMR 字段,但只有其中一个 bean 必须具有 accessor。和 CMP 字段相比,CMR 字段必须具有 getter 以及 setter 方法。"
#. Tag: title
#: The_CMP_Engine.xml:564
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Relationship Declaration"
-msgstr "映射定义(Mapping declaration)"
+msgstr "关系声明"
#. Tag: para
#: The_CMP_Engine.xml:565
@@ -2328,7 +2462,7 @@
"XDoclet to manage the deployment descriptors for CMR fields, it's still "
"important to understand how the descriptor works. The following illustrates "
"the declaration of the organization/gangster relationship:"
-msgstr ""
+msgstr "<literal>ejb-jar.xml</literal> 文件里的关系声明比较复杂且容易出错。虽然我们推荐使用工具(如 XDoclet)来管理 CMR 字段的部署描述符,理解描述符的内容仍然重要。下面演示了对 organization/gangster 关系的声明:"
#. Tag: programlisting
#: The_CMP_Engine.xml:568
@@ -2371,6 +2505,42 @@
" </relationships>\n"
"</ejb-jar>"
msgstr ""
+"<ejb-jar>\n"
+" <relationships>\n"
+" <ejb-relation>\n"
+" <ejb-relation-name>Organization-Gangster</ejb-relation-"
+"name>\n"
+" <ejb-relationship-role>\n"
+" <ejb-relationship-role-name>org-has-gangsters </ejb-"
+"relationship-role-name>\n"
+" <multiplicity>One</multiplicity>\n"
+" <relationship-role-source>\n"
+" <ejb-name>OrganizationEJB</ejb-name>\n"
+" </relationship-role-source>\n"
+" <cmr-field>\n"
+" <cmr-field-name>memberGangsters</cmr-field-"
+"name>\n"
+" <cmr-field-type>java.util.Set</cmr-field-"
+"type>\n"
+" </cmr-field>\n"
+" </ejb-relationship-role>\n"
+" <ejb-relationship-role>\n"
+" <ejb-relationship-role-name>\n"
+" gangster-belongs-to-org\n"
+" </ejb-relationship-role-name>\n"
+" <multiplicity>Many</multiplicity>\n"
+" <cascade-delete/>\n"
+" <relationship-role-source>\n"
+" <ejb-name>GangsterEJB</ejb-name>\n"
+" </relationship-role-source>\n"
+" <cmr-field>\n"
+" <cmr-field-name>organization</cmr-field-"
+"name>\n"
+" </cmr-field>\n"
+" </ejb-relationship-role>\n"
+" </ejb-relation>\n"
+" </relationships>\n"
+"</ejb-jar>"
#. Tag: para
#: The_CMP_Engine.xml:569
@@ -2385,6 +2555,11 @@
"literal> elements (one for each side of the relationship). The <literal>ejb-"
"relationship-role</literal> tags are as follows:"
msgstr ""
+"如你所看到的,每个关系都用顶层的 <literal>relationships</literal> 元素里的 <literal>ejb-relation</"
+"literal> 元素进行声明。<literal>ejb-relation-name</"
+"literal> 元素指定了关系的名称。这很重要,因为我们需要在 <literal>jbosscmp-jdbc.xml</literal> 文件里通过名称来进行引用。每个 <literal>ejb-relation</literal> 都包含两个 <literal>ejb-relationship-role</"
+"literal> 元素(分别用于关系的两方)。下面是 <literal>ejb-"
+"relationship-role</literal> 标签:"
#. Tag: para
#: The_CMP_Engine.xml:574
@@ -2394,7 +2569,7 @@
"element is used to identify the role and match the database mapping the "
"<literal>jbosscmp-jdbc.xml</literal> file. The relationship role names for "
"each side of a relationship must be different."
-msgstr ""
+msgstr "<emphasis role=\"bold\">ejb-relationshiprole-name</emphasis>:这个可选元素用来标识角色并映射 <literal>jbosscmp-jdbc.xml</literal> 文件定义的数据库。关系的每边的角色名称都必须不同。"
#. Tag: para
#: The_CMP_Engine.xml:579
@@ -2407,7 +2582,7 @@
"multiplicity of the gangster is <literal>Many</literal> because the "
"relationship is from one organization to many gangsters. Note, as with all "
"XML elements, this element is case sensitive."
-msgstr ""
+msgstr "<emphasis role=\"bold\">multiplicity</emphasis>:它指定关系的一边的多重性(multiplicity)。其有效值是 <literal>One</literal> 或 <literal>Many</literal>。在这个例子里,organization 的多重性是 <literal>One</literal>,而 gangster 的多重性是 <literal>Many</literal>,这是因为一个 organization 对应多个 gangster。请注意,和所有 XML 元素不同,这个元素对大小写敏感。"
#. Tag: para
#: The_CMP_Engine.xml:584
@@ -2418,7 +2593,7 @@
"entity is deleted. Cascade deletion is only allowed for a role where the "
"other side of the relationship has a multiplicity of one. The default is to "
"not cascade delete."
-msgstr ""
+msgstr "<emphasis role=\"bold\">cascade-delete</emphasis>:如使用这个可选元素,在父 entity 被删除时,JBoss 将删除其子 entity。层叠删除(Cascade deletion)只有在关系的另外一边的多重性为 One 时才允许层叠删除(Cascade deletion)。它缺省是被禁止的。"
#. Tag: emphasis
#: The_CMP_Engine.xml:590
More information about the jboss-cvs-commits
mailing list