[hornetq-commits] JBoss hornetq SVN: r9210 - branches/HnetQ_323_cn/docs/user-manual/zh.

do-not-reply at jboss.org do-not-reply at jboss.org
Sat May 8 07:07:45 EDT 2010


Author: gaohoward
Date: 2010-05-08 07:07:45 -0400 (Sat, 08 May 2010)
New Revision: 9210

Modified:
   branches/HnetQ_323_cn/docs/user-manual/zh/client-classpath.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/client-reconnection.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/clusters.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/interoperability.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/management.xml
Log:
sync doc


Modified: branches/HnetQ_323_cn/docs/user-manual/zh/client-classpath.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/client-classpath.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/client-classpath.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -27,7 +27,7 @@
     <section>
         <title>使用HornetQ内核的客户端</title>
         <para>如果客户端只使用HornetQ内核(非JMS客户端),需要将 <literal
-                >hornetq-core-client.jar</literal>、 <literal>hornetq-transports.jar</literal> 和
+                >hornetq-core-client.jar</literal>和
                 <literal>netty.jar</literal> 放到classpath中。</para>
     </section>
     <section>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/client-reconnection.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/client-reconnection.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/client-reconnection.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -38,9 +38,9 @@
                 >confirmation-window-size</literal>项。如果你并不将JMS连接工厂注册到JNDI,则你需要在
             <literal>HornetQConnectionFactory</literal>上使用相应的方法直接设置该参数。</para>
         <para>如果使用核心服务,你可以直接在<literal>ClientSessionFactory</literal>实例上直接设置该参数。</para>
-        <para>参数的单位是字节,默认值是<literal>1MiB</literal>。</para>
+        <para>参数的单位是字节。</para>
         <para>如果该参数是值设为<literal>-1</literal>,则关闭缓存,即关闭了重新恢复功能,迫使进行重新连接。默认
-              值是<literal>-1</literal>。</para>
+              值是<literal>-1</literal>(表示没有自动恢复)。</para>
     </section>
     <section>
         <title>会话重新连接</title>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/clusters.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/clusters.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/clusters.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!-- ============================================================================= -->
 <!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
 <!--                                                                               -->
@@ -17,7 +16,6 @@
 <!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
 <!-- permitted by applicable law.                                                  -->
 <!-- ============================================================================= -->
-
 <chapter id="clusters">
     <title>集群</title>    
     <section>
@@ -65,10 +63,11 @@
             <para>让我们来看一个<literal>hornetq-configuration.xml</literal>文件中广播组的例子:</para>
             <programlisting>&lt;broadcast-groups>
    &lt;broadcast-group name="my-broadcast-group">
+      &lt;local-bind-address>172.16.9.3&lt;/local-bind-address>
       &lt;local-bind-port>54321&lt;/local-bind-port>
       &lt;group-address>231.7.7.7&lt;/group-address>
       &lt;group-port>9876&lt;/group-port>
-      &lt;broadcast-period>1000&lt;/broadcast-period>
+      &lt;broadcast-period>2000&lt;/broadcast-period>
       &lt;connector-ref connector-name="netty-connector" 
         backup-connector="backup-connector"/>
    &lt;/broadcast-group>
@@ -86,7 +85,8 @@
                 </listitem>
                 <listitem>
                     <para><literal>local-bind-port</literal>。这个参数指定了套接字的本地绑定端口。通常情况下
-                        可以使用其默认值<literal>-1</literal>,表示使用随机的端口。</para>
+                        可以使用其默认值<literal>-1</literal>,表示使用随机的端口。这个参数总是和
+                        <literal>local-bind-address</literal>一起定义。</para>
                 </listitem>
                 <listitem>
                     <para><literal>group-address</literal>。这个参数指定的是广播地址。它是一个D类的IP地址,
@@ -131,6 +131,7 @@
                 在<literal>discovery-groups</literal>内定义。发现组可以定义多个。请看下面的例子:</para>
             <programlisting>&lt;discovery-groups>
    &lt;discovery-group name="my-discovery-group">
+      &lt;local-bind-address>172.16.9.7&lt;/local-bind-address>
       &lt;group-address>231.7.7.7&lt;/group-address>
       &lt;group-port>9876&lt;/group-port>
       &lt;refresh-timeout>10000&lt;/refresh-timeout>
@@ -142,6 +143,10 @@
                     <para><literal>name</literal>属性。每个发现组都必须有一个唯一的名字。</para>
                 </listitem>
                 <listitem>
+                    <para><literal>local-bind-address</literal>。如果你的主机有多个网络接口,你可能希望发现组只监听一个指定的
+                    网络接口。这个参数就可以用于这个目的。它是一个可选参数。</para>
+                </listitem>
+                <listitem>
                     <para><literal>group-address</literal>。需要监听的广播地址。它需要与广播组的
                         <literal>group-address</literal>一致才可以收到广播组的信息。这是一个必要参数。</para>
                 </listitem>
@@ -188,10 +193,10 @@
 Connection jmsConnection2 = jmsConnectionFactory.createConnection();</programlisting></para>
                 <para><literal>refresh-timeout</literal>参数可以直接在连接工厂上使用
                     <literal>setDiscoveryRefreshTimeout()</literal>方法设置。</literal></para>
-                <para>连接工厂还有一个方法<literal>setInitialWaitTimeout()</literal>。它可以设置连接工厂的
+                <para>连接工厂还有一个方法<literal>setDiscoveryInitialWaitTimeout()</literal>。它可以设置连接工厂的
                     初始等待时间。当一个连接工厂被创建后立即进行用于创建连接的话,连接工厂可能没有足够的时间来接收各
                     个服务器发出的广播信息,也就无法建立完整的服务器列表。有了这个参数,连接工厂会在首次创建连接时
-                    等待一定的时间,以接收广播。默认值是<literal>2000</literal>毫秒。</para>
+                    等待一定的时间,以接收广播。默认值是<literal>10000</literal>毫秒。</para>
             </section>
             <section>
                 <title>使用核心API的客户端的配置</title>
@@ -208,10 +213,10 @@
                 </para>
                 <para>方法<literal>setDiscoveryRefreshTimeout()</literal>可以用来直接设置参数
                     <literal>refresh-timeout</literal>。</para>
-                <para>会话工厂还有一个方法<literal>setInitialWaitTimeout()</literal>。它可以设置会话工厂的
+                <para>会话工厂还有一个方法<literal>setDiscoveryInitialWaitTimeout()</literal>。它可以设置会话工厂的
                     初始等待时间。当一个会话工厂被创建后立即进行用于创建连接的话,该会话工厂可能没有足够的时间来接收各
                     个服务器发出的广播信息,也就无法建立完整的服务器列表。有了这个参数,会话工厂会在首次创建连接时
-                    等待一定的时间,以接收广播。默认值是<literal>2000</literal>毫秒。</para>
+                    等待一定的时间,以接收广播。默认值是<literal>10000</literal>毫秒。</para>
             </section>
         </section>
     </section>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -28,7 +28,7 @@
 &lt;acceptors&gt;                
     &lt;acceptor name="netty"&gt;
         &lt;factory-class&gt;
-org.hornetq.integration.transports.netty.NettyAcceptorFactory
+org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
         &lt;/factory-class&gt;
         &lt;param key="port" value="5446"/&gt;
     &lt;/acceptor&gt;
@@ -46,7 +46,7 @@
             中定义的是键-值对(key-value)。这些参数用来配置某个传输实现。不同传输有不同的配置参数。</para>
         <para>像IP地址、端口号等都是传输配置参数的例子。</para>
     </section>
-    <section id="understanding.connectors">
+    <section id="configuring-transports.connectors">
         <title>连接器(Connectors)</title>
         <para>接收器定义的是如何在服务器端接收连接,而连接器则是定义客户端如何连接到服务器。</para>
         <para>以下是<literal>hornetq-configuration.xml</literal>文件中一个连接器配置的例子。</para>
@@ -54,7 +54,7 @@
 &lt;connectors&gt;
     &lt;connector name="netty"&gt;
         &lt;factory-class&gt;
-            org.hornetq.integration.transports.netty.NettyConnectorFactory
+            org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
         &lt;/factory-class&gt;
         &lt;param key="port" value="5446"/&gt;
     &lt;/connector&gt;
@@ -103,12 +103,12 @@
         <programlisting>
 Map&lt;String, Object&gt; connectionParams = new HashMap&lt;String, Object&gt;();
     
-connectionParams.put(org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME, 
+connectionParams.put(org.hornetq.core.remoting.impl.netty.TransportConstants.PORT_PROP_NAME, 
                     5446);
 
 TransportConfiguration transportConfiguration = 
     new TransportConfiguration(
-    "org.hornetq.integration.transports.netty.NettyConnectorFactory", 
+    "org.hornetq.core.remoting.impl.netty.NettyConnectorFactory", 
     connectionParams);
 
 ClientSessionFactory sessionFactory = HornetQClient.createClientSessionFactory(transportConfiguration);
@@ -122,11 +122,11 @@
         <programlisting>
 Map&lt;String, Object&gt; connectionParams = new HashMap&lt;String, Object&gt;();
 
-connectionParams.put(org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME, 5446);
+connectionParams.put(org.hornetq.core.remoting.impl.netty.TransportConstants.PORT_PROP_NAME, 5446);
 
 TransportConfiguration transportConfiguration = 
     new TransportConfiguration(
-    "org.hornetq.integration.transports.netty.NettyConnectorFactory", 
+    "org.hornetq.core.remoting.impl.netty.NettyConnectorFactory", 
     connectionParams);
 
 ConnectionFactory connectionFactory = HornetQJMSClient.createConnectionFactory(transportConfiguration);
@@ -151,7 +151,7 @@
             <para>如果你的应用是运行在不信任的网络上,你应该选择使用SSL或HTTPS。</para>
             <para>Netty TCP的所有连接都是从客户端发起的。服务器端不向客户端发起任何连接。在有防火墙的环境中,这种方式
                 是比较适合的。因为防火墙只允许单方向的连接。</para>
-            <para>在<literal>org.hornetq.integration.transports.netty.TransportConstants</literal>类中定义了所
+            <para>在<literal>org.hornetq.core.remoting.impl.netty.TransportConstants</literal>类中定义了所
                 有的配置参数的名称(key)。它们既用于配置接收器以用于配置连接器。下面列出的参数用以配置一个简单的Netty TCP:</para>
             <itemizedlist>
                 <listitem>
@@ -296,7 +296,7 @@
 
       &lt;acceptor name="netty-invm">
          &lt;factory-class>
-            org.hornetq.integration.transports.netty.NettyAcceptorFactory
+            org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
          &lt;/factory-class>
          &lt;param key="use-invm" value="true"/>
          &lt;param key="host" value="org.hornetq"/>
@@ -311,7 +311,7 @@
 
       &lt;connector name="netty-servlet">
          &lt;factory-class>
-            org.hornetq.integration.transports.netty.NettyConnectorFactory
+            org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
          &lt;/factory-class>
          &lt;param key="host" value="localhost"/>
          &lt;param key="port" value="8080"/>
@@ -332,7 +332,7 @@
             <para>在<literal>web.xml</literal>中定义的servlet的URL形式与在连接器配置文件中定义的
                 <literal>servlet-path</literal>值应该相匹配。</para>
             <para>servlet可以与SSL一起使用。只需要在连接器配置中加上下面的配置即可:<programlisting>    &lt;connector name="netty-servlet">
-         &lt;factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory&lt;/factory-class>
+         &lt;factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory&lt;/factory-class>
          &lt;param key="host" value="localhost"/>
          &lt;param key="port" value="8443"/>
          &lt;param key="use-servlet" value="true"/>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -313,6 +313,11 @@
             <para><literal>stomp</literal>例子展示了如何配置HornetQ来发送与接收Stomp消息。</para>
         </section>
         <section>
+            <title>Stomp与Web Sockets</title>
+            <para><literal>stomp-websockets</literal>例子给出了如何配置一个HornetQ服务器直接从Web浏览器
+                中(需要支持Web Socket)发送和接收Stomp消息。</para>
+        </section>
+        <section>
             <title>对称型集群</title>
             <para><literal>symmetric-cluster</literal>例子展示如何设置一个HornetQ的对称型集群。</para>
             <para>HornetQ的集群配置是非常灵活的。你可以根据需要设置不同的集群结构。最常用的就是对称型的集群了。这是在应用

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -197,14 +197,14 @@
                &lt;address-settings>
                   &lt;address-setting match="jms.queue.exampleQueue">            
                      &lt;max-size-bytes>100000&lt;/max-size-bytes>
-                     &lt;address-full-policy>DROP&lt;/address-full-policy>   
+                     &lt;address-full-policy>BLOCK&lt;/address-full-policy>   
                   &lt;/address-setting>
                &lt;/address-settings></programlisting>
             <para>上面的例子将JMS队列"exampleQueue"的最大内存值设为
                100000 字节并且阻塞发送者以防止消息量超过这个值。</para>
-            <para>注意必须设置 <literal>DROP</literal>的策略才能打开限定发送者窗口控制。</para>
+            <para>注意必须设置 <literal>BLOCK</literal>的策略才能打开限定发送者窗口控制。</para>
             <para>请注意默认的<literal>address-full-policy</literal> 是
-                  <literal>PAGE</literal>。请参阅分页转存(paging)的相关章节作进一步的了解。</para>
+                  <literal>PAGE</literal>。请参阅分页转存(<xref linkend="paging" />)的相关章节作进一步的了解。</para>
          </section>
       </section>
       <section>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -60,7 +60,7 @@
      &lt;!-- 这个连接器用于连接备份服务喝咖啡    -->
      &lt;!-- 备份服务器在主机"192.168.0.11"上,端口"5445" -->
      &lt;connector name="backup-connector">
-       &lt;factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory&lt;/factory-class>
+       &lt;factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory&lt;/factory-class>
        &lt;param key="host" value="192.168.0.11"/>
        &lt;param key="port" value="5445"/>
      &lt;/connector>
@@ -74,7 +74,7 @@
   
   &lt;acceptors>
      &lt;acceptor name="acceptor">
-        &lt;factory-class>org.hornetq.integration.transports.netty.NettyAcceptorFactory&lt;/factory-class>
+        &lt;factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory&lt;/factory-class>
         &lt;param key="host" value="192.168.0.11"/>
         &lt;param key="port" value="5445"/>
      &lt;/acceptor>
@@ -118,6 +118,10 @@
                     <programlisting>
                    &lt;shared-store>true&lt;shared-store>
                 </programlisting>
+                    <para>此外,备份服务器必须显式地指定:</para>
+                    <programlisting>
+                   &lt;backup>true&lt;/backup>
+                     </programlisting>
                     <para>另外,需要将主服务器和备份服务器的日志文件位置指向<emphasis>同一个共享位置</emphasis>。
                         (参见<xref linkend="configuring.message.journal"/>)</para>
                     <para>如果客户端使用JMS自动失效备援,主服务器除了要配置一个连接器以连接到备份服务器外,还要在
@@ -166,7 +170,7 @@
             <para>有时你需要在主服务器正常关机的情况下仍然进行失效备援。如果使用JMS,你需要将<literal
                     >HornetQConnectionFactory</literal>的<literal
                     >FailoverOnServerShutdown</literal>属性设为true,或者是在<literal
-                    >hornetq-jms.xml</literal>文件中进行相应的配置。如果使用的是核心接口,可以在创建
+                    >hornetq-jms.xml</literal>(参数为failover-on-server-shutdown)文件中进行相应的配置。如果使用的是核心接口,可以在创建
                     <literal>ClientSessionFactoryImpl</literal>实例时将上述同名属性设置为true。
                 这个属性的默认值是false。这表示如果主服务器是正常关机,<emphasis>客户端将不会进行失效备援</emphasis>。</para>
             <para>
@@ -178,6 +182,14 @@
                         设为true。</para>
                 </note>
             </para>
+            <para>默认情况下至少创建了一个与主服务器的连接后失效备援才会发生。换句话说,如果客户端每一次创建与
+                主服务器的连接失败,它会根据参数reconnection-attempts的设置进行连接重试,而不是进行失效备援。
+                如果重试次数超过的该参数的值,则连接失败。</para>
+            <para>在有些情况下,你可能希望在初始连接失败和情况下自动连接到备份服务器,那么你可以直接在
+                <literal>ClientSessionFactoryImpl</literal>或<literal
+                >HornetQConnectionFactory</literal>上设置<literal>FailoverOnInitialConnection</literal>
+                参数,或者在配置文件中设置<literal
+                >failover-on-initial-connection</literal>。默认的值是<literal>false</literal>。</para>
             <para>有关事务性及非事务性JMS会话的自动失效备援的例子,请参见
                     <xref linkend="examples.transaction-failover"/>及<xref
                     linkend="examples.non-transaction-failover"/>。</para>
@@ -222,7 +234,8 @@
                         >javax.jms.TransactionRolledBackException</literal>异常(如果是JMS),或者是一
                         个<literal>HornetQException</literal>的异常,错误代码为<literal
                         >HornetQException.TRANSACTION_ROLLED_BACK</literal>(如果是核心接口)。</para>
-                <para>客户端需要自行处理这些异常,进行必要的回滚处理。用户可以通过同一个会话重试该事务操作。</para>
+                <para>客户端需要自行处理这些异常,进行必要的回滚处理。注意这里不需要人工将会话进行回滚-此时它已经
+                      被回滚了。用户可以通过同一个会话重试该事务操作。</para>
                 <para>HornetQ发布包中包括了一个完整的例子来展示如何处理这种情况。参见
                      <xref linkend="examples.transaction-failover"/></para>
                 <para>如果是在提交过程中发生了失效备援,服务器将这个阻塞调用解除。这种情况下客户端很难确定在事故发生

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/interoperability.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/interoperability.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/interoperability.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -30,8 +30,7 @@
             其中的<literal>protocol</literal>参数值应设为<literal>stomp</literal>:</para>
 <programlisting>
 	&lt;acceptor name="stomp-acceptor">
-		&lt;factory-class>org.hornetq.integration.transports.netty.NettyAcceptorFactory&lt;/factory-class>
-		&lt;param key="protocol"  value="stomp"/>
+		&lt;factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory&lt;/factory-class>		&lt;param key="protocol"  value="stomp"/>
 		&lt;param key="port"  value="61613"/>
 	&lt;/acceptor>
 </programlisting>
@@ -43,20 +42,6 @@
               属性,它将被忽略)。</para>
           </section>
         </section>
-        <section id="stompconnect">
-          <title>StompConnect</title>
-          <para><ulink url="http://stomp.codehaus.org/StompConnect">StompConnect</ulink>是一个Stomp代理服务器,
-            它可以将Stomp协议转换为标准的JMS接口调用。因此,通过StompConnect的作用HornetQ可以作为一个Stomp代理,
-            与任何一个Stomp客户端通迅。这些客户端可以由C、C++、C#及.net等语言实现。</para>
-          <para>要运行StompConnect首先要启动HornetQ服务以及JNDI服务。</para>
-          <para>Stomp需要<literal>jndi.properties</literal>文件要在classpath中。该文件
-            应有如下类似的内容:</para>
-          <programlisting>java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
-java.naming.provider.url=jnp://localhost:1099
-java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces</programlisting>
-          <para>要确保该文件与StompConnect的jar包以及HornetQ的jar文件都在classpath中。最后,运行
-            <literal>java org.codehaus.stomp.jms.Main</literal>。</para>
-        </section>
         <section>
           <title>Stomp目标与HornetQ的地址和队列的映射</title>
           <para>Stomp客户端在消息发送和订阅中使用的是<emphasis>目标(destination)</emphasis>。目标名称是简单的字符串,对应的是服务
@@ -98,24 +83,53 @@
            </section>
 
            <section>
-             <title>使用Stomp通过JMS发送和接收Stomp消息</title>
-             <para>如果要通过JMS目标来传送Stomp消息,可以使用<literal>BytesMessage</literal>将Stomp的消息封装后进行传送。</para>
-             <para>如果Stomp消息中含有UTF-8字符串,则可以用以下代码将其读入到JMS的BytesMessage:</para>
-             <programlisting>
-BytesMessage message = (BytesMessage)consumer.receive();
-byte[] data = new byte[1024];
-int size = message.readBytes(data);
-String text = new String(data, 0, size, "UTF-8");
-             </programlisting>
-             <para>相反地,要将一个UTF-8字符串的消息发给Stomp客户端,可以作用以下代码:</para>
-             <programlisting>
-String text = ...
-BytesMessage message = session.createBytesMessage();
-message.writeBytes(text.getBytes("UTF-8"));
-producer.send(message);
-             </programlisting>
+             <title>使用JMS或核心接口发送和接收Stomp消息</title>
+             <para>Stomp基本上是一个基于文本的协议。为了使用更简单,我们的Stomp实现通过检查<literal>content-length</literal>的值
+               来决定如何将一个Stomp消息映射成一个JMS消息或核心消息。
+             </para>
+             <para>如果在Stomp消息中有<literal>content-length</literal>头,它将被映射为一个JMS的
+               <emphasis>TextMessage</emphasis>,或者是一个核心消息,其消息体的缓存是一个SimpleString。</para>
+             <para>如果Stomp消息中没有<literal>content-length</literal>,则它被映射为一个JMS的
+                   <emphasis>BytesMessage</emphasis>,或者是一个核心消息,其消息体缓存中是一个字节数组byte[]。</para>
+             <para>从一个JMS消息或核心消息映射为Stomp消息时遵从同样的逻辑。一个Stomp客户端可以通过检查
+                   <literal>content-length</literal>来决定消息体的类型(UTF-8字符串或字节)。</para>
           </section>
         </section>
+        <section id="stomp.websockets">
+         <title>通过Web Sockets使用Stomp</title>
+         <para>HornetQ还支持通过<ulink url="http://dev.w3.org/html5/websockets/">Web Sockets</ulink>使用Stomp。任何支持
+            Web Socket的浏览器中可以利用HornetQ来发送和接收Stomp消息。</para>
+         <para>要使用些功能,必须配置一个<literal>NettyAcceptor</literal>,并设置<literal>protocol</literal>
+            的值为<literal>stomp_ws</literal>:</para>
+         <programlisting>
+&lt;acceptor name="stomp-ws-acceptor">
+	&lt;factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory&lt;/factory-class>
+	&lt;param key="protocol" value="stomp_ws"/>
+	&lt;param key="port" value="61614"/>
+&lt;/acceptor>
+         </programlisting>
+         <para>使用上面配置,HornetQ在URL路径<literal>/stomp</literal>下端口<literal>61614</literal>接收Stomp连接。
+            浏览器然后就可以连接到<literal>ws://&lt;server&gt;:61614/stomp</literal>,使用Web Socket来发送和接收
+            Stomp消息了。</para>
+         <para>为了简化客户端的开发,在<ulink url="http://github.com/jmesnil/stomp-websocket">GitHub</ulink>
+            上提供了一个JavaScript库(参见<ulink url="http://jmesnil.net/stomp-websocket/doc/">文档</ulink>)。</para>
+         <para><literal>stomp-websockets</literal>例子给出一如何配置HornetQ服务器以使浏览器和Java应用程序通过一个JMS话题
+            进行消息的传递。</para>
+        </section>
+        <section id="stompconnect">
+          <title>StompConnect</title>
+          <para><ulink url="http://stomp.codehaus.org/StompConnect">StompConnect</ulink>是一个Stomp代理服务器,
+            它可以将Stomp协议转换为标准的JMS接口调用。因此,通过StompConnect的作用HornetQ可以作为一个Stomp代理,
+            与任何一个Stomp客户端通迅。这些客户端可以由C、C++、C#及.net等语言实现。</para>
+          <para>要运行StompConnect首先要启动HornetQ服务以及JNDI服务。</para>
+          <para>Stomp需要<literal>jndi.properties</literal>文件要在classpath中。该文件
+            应有如下类似的内容:</para>
+          <programlisting>java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.provider.url=jnp://localhost:1099
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces</programlisting>
+          <para>要确保该文件与StompConnect的jar包以及HornetQ的jar文件都在classpath中。最后,运行
+            <literal>java org.codehaus.stomp.jms.Main</literal>。</para>
+        </section>
     </section>
     <section>
         <title>REST</title>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/management.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/management.xml	2010-05-08 09:04:14 UTC (rev 9209)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/management.xml	2010-05-08 11:07:45 UTC (rev 9210)
@@ -429,8 +429,10 @@
 &lt;jmx-management-enabled&gt;false&lt;/jmx-management-enabled&gt;            
          </programlisting>
          <para>如果JMX功能是打开的,则使用<literal>jconsole</literal>可以管理本地的HornetQ。
-            出于安全考虑,默认情况下JMX远程连接是关闭的。参见<ulink url="http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#remote"
+         <note>
+           <para>出于安全考虑,默认情况下JMX远程连接是关闭的。参见<ulink url="http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#remote"
                >Java管理指南</ulink>来配置服务器的远程管理(系统变量必须在<literal>run.sh</literal>或<literal>run.bat</literal>中定义)。</para>
+         </note>
          <para>HornetQ默认使用JMX域名"org.hornetq"。如果要用一个MBeanServer管理多个HornetQ服务器,可以将每个HornetQ
             服务器配置成不同的JMX域。方法就是在<literal>hornetq-configuration.xml</literal>文件中设置<literal>jmx-domain</literal>:</para>
          <programlisting>
@@ -638,13 +640,16 @@
       <section>
          <title>JMS消息通知</title>
          <para>HornetQ还可以通过JMS消息的方式发送通知。</para>
-         <para>这种方式与核心消息通知相似,但是有一个重要的不同:JMS消息需要一个JMS的目标(通常是一个Topic):</para>
+         <para>这种方式与核心消息通知相似,但是有一个重要的不同:JMS消息需要一个JMS的目标(通常是一个Topic)。</para>
+         <para>要通过一个JMS目标来接收管理通知,必须将服务器的管理通知地址修改为以<literal>jms.queue</literal>开头(如果是一个
+            JMS队列)或者<literal>jms.topic</literal>(如果是一个话题):</para>
          <programlisting>
-   Topic notificationsTopic = HornetQJMSClient.createHornetQTopic("hornetq.notifications", "hornetq.notifications");
+            &lt;!-- 通知将从JMS话题 "notificationsTopic"上接收 --> 
+            &lt;management-notification-address&gt;jms.topic.notificationsTopic&lt;/management-notification-address&gt;
          </programlisting>
          <para>这个通知话题一旦被创建,就可以接收消息了(或者使用<literal>MessageListener</literal>):</para>
          <programlisting>
-   Topic notificationsTopic = HornetQJMSClient.createHornetQTopic("hornetq.notifications", "hornetq.notifications");
+   Topic notificationsTopic = HornetQJMSClient.createTopic("notificationsTopic");
 
    Session session = ...
    MessageConsumer notificationConsumer = session.createConsumer(notificationsTopic);
@@ -751,4 +756,47 @@
          <para>参见<xref linkend="examples.message-counters"/>。这个例子使用消息计数器来获得一个JMS队列的相关数据。</para>
       </section>
    </section>
+   <section>
+      <title>通过JBoss应用服务器的Admin Console来管理HornetQ的资源</title>
+      <para>通过JBoss应用服务器的Admin Console可以创建与配置HornetQ的各种资源。</para>
+      <para>Admin Console允许你创建各种目标(JMS话题与队列)和JMS的连接工厂。</para>
+      <para>登录admin console后你在左边的树中会看到JMS Manager节点。所有HornetQ的资源都属于这个节点。在它的下面有JMS Queues、
+         Topics以及Connection Factories。分别点击它们将会看到相应的资源。下面将解释如何创建并配置它们。</para>
+      <section>
+         <title>JMS队列</title>
+         <para>要创建一个新的JMS队列,点击JMS Queues将列出当前的队列。在右边的窗口中有一个“add a new resource“按钮,点击这个按钮
+            并选择默认(JMS 队列)模板。点击“continue“。填入相应的队列名称与JNDI名称。其它的参数值都给出了合理的默认值,通常情况下
+            不用改动它们。在底部可以配置安全角色,如果你不提供将使用默认的配置。当这个队列成功创建后这些配置将会显示出来。除了队列的名字
+            和JNDI名字外,其它参数都可以在contiguration标签页下进行修改。下面就对它们分别解释。</para>
+         <para>点击 configuration后你将看到如下显示:</para>
+         <para>
+            <graphic fileref="images/console1.png" align="center"/>
+        </para>
+         <para>name和JNDI name是不能改变的。如果你想改变它们,必须重新创建队列。其它选项是关于地址设置与安全设置。
+The default address settings are picked up from the servers configuration, if you change any of these
+         settings or create a queue via the console a new Address Settings enrty will be added. For a full explanation on
+         Address Settings see <xref linkend="queue-attributes.address-settings"/></para>
+         <para>To delete a queue simply click on the delete button beside the queue name in the main JMS Queues screen.
+         This will also delete any address settings or security settings previously created for the queues address</para>
+         <para>The last part of the configuration options are security roles. If non are provided on creation then the
+            servers default security settings will be shown. If these are changed or updated then new securty settings are
+         created for the address of this queue. For more information on securuty setting see <xref linkend="security"/> </para>
+         <para>It is also possible via the metrics tab to view statistics for this queue. This will show statistics such
+            as message count, consumer count etc.</para>
+         <para>Operations can be performed on a queue via the control tab. This will allow you to start and stop the queue,
+         list,move,expire and delete messages from the queue and other useful operations. To invoke an operation click on
+         the button for the operation you want, this will take you to a screen where you can parameters for the opertion can be set.
+         Once set clicking the ok button will invoke the operation, results appear at the bottom of the screen.</para>
+      </section>
+      <section>
+         <title>JMS Topics</title>
+         <para>Creating and configuring JMS Topics is almost identical to creating queues. The only difference is that the
+         configuration will be applied to the queue representing a subscription.</para>
+      </section>
+      <section>
+         <title>JMS Connection Factories</title>
+         <para>The format for creating connection factories is the same as for JMS Queues and topics apart frm the configuration
+         being different. For as list of all the connection factory settings see the configuration index </para>
+      </section>
+   </section>
 </chapter>



More information about the hornetq-commits mailing list