activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jbert...@apache.org
Subject [21/51] [partial] activemq-6 git commit: ACTIVEMQ6-1 - Initial HornetQ Donation Commit
Date Mon, 10 Nov 2014 16:32:32 GMT
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/using-jms.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/using-jms.xml b/docs/user-manual/zh/using-jms.xml
new file mode 100644
index 0000000..254a787
--- /dev/null
+++ b/docs/user-manual/zh/using-jms.xml
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="using-jms">
+    <title>使用JMS</title>
+    <para>很多用户喜欢使JMS,因此HornetQ提供了JMS服务。</para>
+    <para>JMS是一个普遍使用API标准,绝大多数的消息系统都提供JMS接口。如果你对JMS还不熟悉,建议你先参考一下
+          Sun的<ulink url="http://java.sun.com/products/jms/tutorial/1_3_1-fcs/doc/jms_tutorialTOC.html">
+            JMS 教程</ulink>。</para>
+    <para>HornetQ还提供了许多的JMS的示例程序(examples)。比如简单的JMS Queue和Topic的示例,就很适合初学者做为了
+          解HornetQ JMS的起点。<xref linkend="examples"/>对这些示例作了详细的说明。</para>
+    <para>下面我们将带领读者一步步地配置HornetQ的JMS服务,并创建一个简单的JMS程序。我们还将展示如何在没有JNDI的情况下
+          来使用HornetQ中的JMS。</para>
+    <section>
+        <title>一个简单的订购系统</title>
+        <para>本章我们将用一个简单的订购系统做为一个例子。尽管它十分简单,但是它能够很好地向大家展示JMS的设置和使用。</para>
+        <para>本例中有一个名为 <literal>OrderQueue</literal>JMS队列,还将有一个 <literal>MessageProducer</literal> 
+              用来向队列发送订购消息。发送到队列的消息由一个 <literal>MessageConsumer</literal> 来接收。</para>
+        <para>我们所用的队列是<literal>持久(durable)</literal>的队列,也就是说这个队列不受服务器故障的影响。当服务器
+              发生故障重新启动后,这个队列仍然存在。我们需要把这个队列事先部署好。办法就是将队列写到JMS的配置文件中。当服务启动
+              时将配置文件中的队列自动部署好。</para>
+    </section>
+    <section id="using-jms.server.configuration">
+        <title>JMS服务的配置</title>
+        <para><literal>hornetq-jms.xml</literal>文件包含了需要创建与部署的JMS Queue,Topic和ConnectionFactory
+            的实例。该文件必须要指定在classpath中。从这个文件中部署好的对象都可以用JNDI来找到。</para>
+        <para>JMS客户端可以利用JMS ConnectionFactory对象来创建与服务器的连接。ConnectionFactory中有关于服务器地址的
+              信息以及各种参数。通常使用这些参数的默认值即可。</para>
+        <para>这里我们将要在服务器端部署一个JMS队列和一个JMS ConnectionFactory (连接工厂)。当然完全可以部署多个JMS对象。
+              下面给出了具体的配置内容:</para>
+        <programlisting>
+&lt;configuration xmlns="urn:hornetq" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="urn:hornetq ../schemas/hornetq-jms.xsd "&gt;
+    
+    &lt;connection-factory name="ConnectionFactory"&gt;
+        &lt;connectors>
+           &lt;connector-ref connector-name="netty"/&gt;
+        &lt;/connectors>
+        &lt;entries&gt;
+            &lt;entry name="ConnectionFactory"/&gt;           
+        &lt;/entries&gt;
+    &lt;/connection-factory&gt;
+    
+    &lt;queue name="OrderQueue"&gt;
+        &lt;entry name="queues/OrderQueue"/&gt;
+    &lt;/queue&gt;
+    
+&lt;/configuration&gt; 
+        </programlisting>
+        <para>在本文件中我们部署了一个名为 <literal>ConnectionFactory</literal> 的一个连接工厂,并且将其绑定到
+              JNDI中。如果需要可以将一个连接工厂绑定为多个名称。只需要将绑定的名字加入到 <literal>entry</literal> 
+              中即可。</para>
+        <note>
+            <para>在JMS ConnectionFactory的配置中引用了一个名为 <literal>netty</literal>的<literal>connector</literal>。
+                它实际上指向的是HornetQ核心中部署的一个连接器(connector)。它的配置在HornetQ的核心配置文件
+                 <literal>hornetq-configuration.xml</literal> 中。它定义了采用何种传输与服务器连接。</para>
+        </note>
+    </section>
+    <section id="using-jms.configure.factory.types">
+        <title>连接工厂的类型</title>
+        <para>在JMS API文档中有几种不同类型的连接工厂供用户使用。HornetQ为用户提供了配置连接工厂类型的参数。用户可以通过
+              配置连接工厂的”signature"属性和"xa"参数来得到想要的类型。“singature"属性是字符串类型,它有三个可选值:
+              <emphasis>generic</emphasis>、<emphasis>queue</emphasis>和<emphasis>topic</emphasis>; 
+              <literal>xa</literal>是一个布尔型参数。下表给出了不同类型连接工厂对应的配置值:</para>
+        <table frame="topbot" id="using-jms.table.configure.factory.types">
+                <title>连接工厂类型的配置</title>
+                <tgroup cols="3">
+                    <colspec colname="signature" colnum="1"/>
+                    <colspec colname="xa" colnum="2"/>
+                    <colspec colname="cftype" colnum="3"/>
+                    <thead>
+                        <row>
+                            <entry>signature</entry>
+                            <entry>xa</entry>
+                            <entry>连接工厂的类型</entry>
+                        </row>
+                    </thead>
+                    <tbody>
+                        <row>
+                            <entry>generic (默认)</entry>
+                            <entry>false (默认)</entry>
+                            <entry>javax.jms.ConnectionFactory</entry>
+                        </row>
+                        <row>
+                            <entry>generic</entry>
+                            <entry>true</entry>
+                            <entry>javax.jms.XAConnectionFactory</entry>
+                        </row>
+                        <row>
+                            <entry>queue</entry>
+                            <entry>false</entry>
+                            <entry>javax.jms.QueueConnectionFactory</entry>
+                        </row>
+                        <row>
+                            <entry>queue</entry>
+                            <entry>true</entry>
+                            <entry>javax.jms.XAQueueConnectionFactory</entry>
+                        </row>
+                        <row>
+                            <entry>topic</entry>
+                            <entry>false</entry>
+                            <entry>javax.jms.TopicConnectionFactory</entry>
+                        </row>
+                        <row>
+                            <entry>topic</entry>
+                            <entry>true</entry>
+                            <entry>javax.jms.XATopicConnectionFactory</entry>
+                        </row>
+                    </tbody>
+                </tgroup>
+            </table>
+            <para>下面的例子配置了一个XAQueueConnectionFactory:</para>
+        <programlisting>
+&lt;configuration xmlns="urn:hornetq" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="urn:hornetq ../schemas/hornetq-jms.xsd "&gt;
+    
+    &lt;connection-factory name="ConnectionFactory" signature="queue"&gt;
+        &lt;xa>true&lt;/xa>
+        &lt;connectors>
+           &lt;connector-ref connector-name="netty"/&gt;
+        &lt;/connectors>
+        &lt;entries&gt;
+            &lt;entry name="ConnectionFactory"/&gt;           
+        &lt;/entries&gt;
+    &lt;/connection-factory&gt;
+&lt;/configuration&gt; 
+        </programlisting>
+    </section>
+    <section>
+        <title>JNDI的配置</title>
+        <para>当客户端使用JNDI时需要定义一些JNDI的参数。这些参数主要用来确定JNDI服务的地址。这些参数通常保存在
+            一个名为 <literal>jndi.properties</literal> 的文件中。这个文件需要在客户端的classpath中。或者你
+            可以在创建JNDI的InitialContext时将这些参数传进去。想了解全面的JNDI知识,可以参见 <ulink
+                url="http://java.sun.com/products/jndi/tutorial/TOC.html">Sun JNDI 教程</ulink>
+            。</para>
+        <para>要与JBoss的JNDI Server进行通迅,需要指定以下的JNDI参数:</para>
+        <programlisting>
+java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.provider.url=jnp://myhost:1099
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces                        
+        </programlisting>
+        <para>其中的 <literal>myhost</literal> 是 JNDI server的主机名或IP地址。 1099是端口号,根据不同的配置,
+            端口号也可能不同。</para>
+        <para>在默认的单独方式(standalone)配置中,JNDI服务端口等参数定义在<literal>hornetq-beans.xml</literal>
+              文件中的 <literal>JNDIServer</literal> bean下,如:</para>
+        <programlisting>
+&lt;bean name="JNDIServer" class="org.jnp.server.Main"&gt;
+    &lt;property name="namingInfo"&gt;
+        &lt;inject bean="Naming"/&gt;
+    &lt;/property&gt;
+    &lt;property name="port"&gt;1099&lt;/property&gt;
+    &lt;property name="bindAddress"&gt;localhost&lt;/property&gt;
+    &lt;property name="rmiPort"&gt;1098&lt;/property&gt;
+    &lt;property name="rmiBindAddress"&gt;localhost&lt;/property&gt;
+&lt;/bean&gt;                        
+        </programlisting>
+        <note>
+            <para>如果你的JNDI服务器与客户端不在同一台机器上,一定不要忘记将bindAddress改成相应的地址,
+                  千万不能用<literal>localhost</literal>!</para>
+        </note>
+        <note>
+            <para><emphasis>只有当HornetQ作为独立服务器运行时</emphasis>
+                  才可以配置JNDIServer bean。当HornetQ运行于JBoss应用服务器中时,由于JBOSS服务器已经提供了
+                  JNDI服务,所以就不需要再进行配置了。</para>
+        </note>
+    </section>
+    <section>
+        <title>程序代码</title>
+        <para>下面给出的例子中的代码:</para>
+        <para>首先我们创建一个JNDI的Initial Context:</para>
+        <programlisting>InitialContext ic = new InitialContext();</programlisting>
+        <para>下面我们查找 connection factory:</para>
+        <programlisting>ConnectionFactory cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");</programlisting>
+        <para>然后查找 Queue:</para>
+        <programlisting>Queue orderQueue = (Queue)ic.lookup("/queues/OrderQueue");</programlisting>
+        <para>接下来用拿到的ConnectionFactory建立JMS连接:</para>
+        <programlisting>Connection connection = cf.createConnection();</programlisting>
+        <para>再创建一个非事务的、AUTO_ACKNOWLEDGE方式的JMS Session:</para>
+        <programlisting>Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);</programlisting>
+        <para>创建一个 MessageProducer 以向队列发送订单消息:</para>
+        <programlisting>MessageProducer producer = session.createProducer(orderQueue);</programlisting>
+        <para>创建一个 MessageConsumer 以从队列中接收订单消息:</para>
+        <programlisting>MessageConsumer consumer = session.createConsumer(orderQueue);</programlisting>
+        <para>要启动连接,以使消息能传递给接收者:</para>
+        <programlisting>connection.start();</programlisting>
+        <para>发送一个简单的TextMessage:</para>
+        <programlisting>TextMessage message = session.createTextMessage("This is an order");
+producer.send(message);</programlisting>
+        <para>之后接收这个消息:</para>
+        <programlisting>TextMessage receivedMessage = (TextMessage)consumer.receive();
+System.out.println("Got order: " + receivedMessage.getText());
+        </programlisting>
+        <para>看起来就是这么简单。 在HornetQ有发布包中有很多各种各样的JMS例子供用户参考。</para>
+        <warning>
+            <para>请注意,JMS的连接(connection)、会话(session)、生产者(producer)和消费者(consumer)
+                  对象是可以<emphasis>重用</emphasis>的。</para>
+            <para>如果每发送或接收一个消息都要重新创建这些JMS对象,是不符合设计模式的要求的。这样做会造成应用程序
+                  的性能很差。这方面的内容在<xref linkend="perf-tuning"/>中将会进一步的讨论。</para>
+        </warning>
+    </section>
+    <section>
+        <title>不使用JNDI而直接创建JMS的对象</title>
+        <para>尽管采用JNDI对 JMS 的各种<emphasis>管理对象(Administered
+                Objects)</emphasis> (即JMS Queue, Topic and ConnectionFactory)是很常用的方法,但在有些
+            情况时JNDI不可用,或者你不需要用JNDI时,如何还能正常使用JMS呢?</para>
+        <para>HornetQ允许你不通过JNDI也能使用JMS。HornetQ支持直接创建JMS的各种对象而无需JNDI的存在。</para>
+        <para>在<xref linkend="examples"/>中包括有这样的例子供读者参考。</para>
+        <para>下面我们就将上述那个简单的例子重写,以抛开对JNDI的依赖:</para>
+        <para>我们通过HornetQJMSClient类来方便地创建JMS的ConnectionFactory。注意这里要提供各种连接参数和定义
+              所用的传输方式。有关连接器(connector)的信息参见<xref linkend="configuring-transports"
+            />。</para>
+        <programlisting>              
+TransportConfiguration transportConfiguration = 
+                     new TransportConfiguration(NettyConnectorFactory.class.getName());                
+ConnectionFactory cf = HornetQJMSClient.createConnectionFactory(transportConfiguration);
+        </programlisting>
+        <para>同样利用HornetQJMSClient类创建JMS Queue对象:</para>
+        <programlisting>Queue orderQueue = HornetQJMSClient.createQueue("OrderQueue");</programlisting>
+        <para>然后用连接工厂创建 JMS 连接:</para>
+        <programlisting>Connection connection = cf.createConnection();</programlisting>
+        <para>还有非事务的\AUTO_ACKNOWLEDGE方式的 JMS 会话(session):</para>
+        <programlisting>Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);</programlisting>
+        <para>以及用于发送消息的MessageProducer:</para>
+        <programlisting>MessageProducer producer = session.createProducer(orderQueue);</programlisting>
+        <para>和接收消息的 MessageConsumer:</para>
+        <programlisting>MessageConsumer consumer = session.createConsumer(orderQueue);</programlisting>
+        <para>启动连接:</para>
+        <programlisting>connection.start();</programlisting>
+        <para>创建一个简单的 TextMessage 并将其发送到队列:</para>
+        <programlisting>TextMessage message = session.createTextMessage("This is an order");
+producer.send(message);</programlisting>
+        <para>接收消息:</para>
+        <programlisting>TextMessage receivedMessage = (TextMessage)consumer.receive();
+System.out.println("Got order: " + receivedMessage.getText());
+        </programlisting>
+    </section>
+    <section id="using-jms.clientid">
+        <title>Client ID的设置</title>
+        <para>在建立持久的订阅(subscription)时,JMS客户需要有一个客户ID (client id)。我们可以通过配置
+            connection factory来定义它。(其中的 <literal>client-id</literal>项)。这样所有通过这个
+            connection factory来创建的连接都具有这个客户ID。</para>
+    </section>
+    <section id="using-jms.dupsokbatchsize">
+        <title>设置DUPS_OK的Batch Size </title>
+        <para>如果JMS的通知模式为<literal>DUPS_OK</literal>,我们可以配置接收者(consumer)以使得它以批为单位
+            发送通知,而不是一个一个地发通知。这样做可以节省很多带宽,效率高。配置的方法是设置connection factory下
+            的<literal>dups-ok-batch-size</literal>项。单位是字节(byte)。默认值是1024 * 1024 bytes = 1 MiB。</para>
+    </section>
+    <section id="using-jms.txbatchsize">
+        <title>设置事务(Transaction)的Batch Size</title>
+        <para>当在一个事务内接收消息时,可能通过配置使接收者采用批量的方式发送通知,而不是一个一个的发送。这样也可以节省带宽。
+            配置方法是设置connection factory下的<literal
+                >transaction-batch-size</literal>项。 单位是字节(byte)。默认值是1024 *
+            1024。</para>
+    </section>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/using-server.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/using-server.xml b/docs/user-manual/zh/using-server.xml
new file mode 100644
index 0000000..1264e30
--- /dev/null
+++ b/docs/user-manual/zh/using-server.xml
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="using-server">
+    <title>使用HornetQ服务</title>
+    <para>本章将介绍如何使用HornetQ服务。</para>
+    <para>其中的内容包括服务器的位置,如何启动和停止HornetQ服务器。本章还将解释HornetQ的目录结构,其中的文件及其用途。</para>
+    <para>本章中所提到的HornetQ服务器是指HornetQ默认配置的独立服务器,包含JMS服务和JNDI服务。</para>
+    <para>对于运行于JBoss应用服务器中的HornetQ,其基本结构是一样的,只是有一些小的差别。</para>
+    <section>
+        <title>服务的启动和停止</title>
+        <para>在HornetQ的安装目录下<literal>bin</literal>子目录中包含有一个unit/linux脚本run.sh和对应的Windows批处理文件run.bat。</para>
+        <para>如果你是在Unix/Linux环境,在bin目录下运行<literal>./run.sh</literal>。</para>
+        <para>如果是在Windows环境,则在bin目录下运行 <literal>run.bat</literal>。</para>
+        <para>这个脚本文件会设置classpath以及各种JVM参数,并启动JBoss Microcontainer。JBoss Microcontainer是一个轻量级的容器。
+              它被用来部署HornetQ的POJO对象。</para>
+        <para>要停止服务,运行其中的相应脚本:在Unix/Linux环境下,运行 <literal>stop.sh</literal>。
+              在Windows环境,运行 <literal>run.bat</literal>。</para>
+        <para>注意HornetQ需要在Java 6及以上版本才能正常运行。</para>
+        <para>启动和停止脚本在默认条件下读取<literal>config/stand-alone/non-clustered</literal>目录下的配置文件。
+              如果要指向其他目录,可以在命令行实现,例如: <literal>./run.sh ../config/stand-alone/clustered</literal>。
+              这一方法同样适用于Windows批处理文件。</para>
+    </section>
+    <section>
+        <title>服务器端JVM参数的设置</title>
+        <para>在启动脚本<literal>run.sh</literal>和<literal>run.bat</literal>中设置了一些JVM参数,
+              这些参数主要是调整Java 6的运行环境及拉圾回收的策略。我们建议采用并行拉圾回收的方法。
+              这种方法可以将拉圾回收所造成的延时进行平均分配,有效减少由于拉圾回收引起的长时间暂停的情况。</para>
+        <para>默认条件下HornetQ需要最大1GB的内存空间。通过<literal>-Xms</literal>和<literal>-Xmx</literal>可以调整Java程序内存的使用。</para>
+        <para>你可以向启动脚本中添加其它的参数或修改已有的参数,已满足你的需要。</para>
+    </section>
+    <section>
+        <title>服务器端的classpath</title>
+        <para>HornetQ在其classpath中寻找配置文件。</para>
+        <para>classpath被定义在<literal>run.sh</literal>和<literal>run.bat</literal>脚本中。在HornetQ的发布中,启动脚本将非集群的配置文件目录加进了classpath中。该目录包括了一组配置文件,可以让HornetQ以基本的非集群方式运行。它的具体位置是在HornetQ发布根目录下 config/stand-along/non-clustered/ 子目录。</para>
+        <para>在HornetQ的发布包中包括了一组标准的配置目录,它们是:</para>
+        <itemizedlist>
+            <listitem>
+                <para>非集群方式的独立服务器配置</para>
+            </listitem>
+            <listitem>
+                <para>集群方式的独立服务器配置</para>
+            </listitem>
+            <listitem>
+                <para>非集群方式运行于JBoss应用服务器</para>
+            </listitem>
+            <listitem>
+                <para>集群方式运行于JBoss应用服务器</para>
+            </listitem>
+        </itemizedlist>
+        <para>当然你可以创建自己定义的配置文件目录。要注意的是将你的目录加到classpath中以便HornetQ能正确找到并加载。</para>
+    </section>
+    <section id="using-server.library.path">
+        <title>Library Path</title>
+        <para>如果要在Linux上使用异步IO的日志(<link linkend="aio-journal">Asynchronous IO Journal</link>),
+              你需要在java选项中指定<literal>java.library.path</literal>。<literal>run.sh</literal>脚本可以自动完成这一步。</para>
+        <para>如果没有指定<literal>java.library.path</literal>,JVM将使用<literal>LD_LIBRARY_PATH</literal>环境变量。</para>
+    </section>
+    <section>
+        <title>系统变量</title>
+        <para>HornetQ命令行可以接受系统变量来配置日志(logging)。有关logging配置的具体信息参见<xref linkend="logging"/>。</para>
+    </section>
+    <section id="using-server.configuration">
+        <title>配置文件</title>
+        <para>配置文件的路径定义在 <literal>run.sh</literal> 和 <literal>run.bat</literal> 脚本中的classpath里。该路径下可以包含以下文件:</para>
+        <itemizedlist>
+            <listitem>
+                <para><literal>hornetq-beans.xml</literal> (如果是运行在JBoss应用服务器内,则为 <literal
+                        >hornetq-jboss-beans.xml</literal>)。这是JBoss Microcontainer的bean配置文件。其中定义了HornetQ的
+                    各种bean,以及它们之间的依赖关系。HornetQ的bean都是一些POJO。是JBoss Microcontainer保证了这些bean的正确装载和运行。</para>
+            </listitem>
+            <listitem>
+                <para><literal>hornetq-configuration.xml</literal>。这个是HornetQ的主要的配置文件。
+                    其中的所有参数在<xref linkend="configuration-index"/>中给出了解释. 在 <xref
+                        linkend="usingserver.mainconfig"/> 也有更多的相关信息。</para>
+            </listitem>
+            <listitem>
+                <para><literal>hornetq-queues.xml</literal>。这个文件里包含了预定义的queue以及它们的配置,包括安全设置。
+                    这是一个可选的文件,里面所有的内容都可以放在 <literal>hornetq-configuration.xml</literal>文件中。
+                    在默认的配置文件目录下并没有这个文件。HornetQ之所以提供这个文件是为了用户便于管理他们的queue。在classpath中
+                    允许包含多个 <literal>hornetq-queues.xml</literal> 文件。所有的这些文件都会被加载。</para>
+            </listitem>
+            <listitem>
+                <para><literal>hornetq-users.xml</literal>。用户信息文件。HornetQ本身实现了一个基本的
+                    安全管理器(security manager),它从这个文件内读取用户的安全信息,如用户名,密码和角色。
+                    想了解更多关于安全的信息,参见 <xref linkend="security"/>。</para>
+            </listitem>
+            <listitem>
+                <para><literal>hornetq-jms.xml</literal>。这个文件包含有JMS对象。HornetQ的默认配置中包含有JMS服务,
+                    它从这个文件中读取JMS Queue,Topic和ConnectionFactory并将它们部署到JNDI服务中。如果你不使用JMS,
+                    或者你不需要部署这些JMS对象,那么你就不需要这个文件。有关JMS的使用详见<xref linkend="using-jms"
+                    />。</para>
+            </listitem>
+            <listitem>
+                <para><literal>logging.properties</literal> 这个文件用于配置logging
+                    handlers。详见 <xref linkend="logging"/>。</para>
+            </listitem>
+            <listitem>
+                <para><literal>log4j.xml</literal>。 这是 Log4j handler的配置文件。</para>
+            </listitem>
+        </itemizedlist>
+        <note>
+            <para>如果在<literal>hornetq-configuration.xml</literal>文件中将<literal>file-deployment-enabled</literal> 参数
+                  定义为false,则HornetQ将不会加载其它的配置文件。这个参数的默认值是true。</para>
+        </note>
+        <para>所有配置文件中的参数都可以用系统变量来定义其值。以下用一个connector的配置来说明:</para>
+        <programlisting>&lt;connector name="netty">
+         &lt;factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory
+           &lt;/factory-class>
+         &lt;param key="host"  value="${hornetq.remoting.netty.host:localhost}" type="String"/>
+         &lt;param key="port"  value="${hornetq.remoting.netty.port:5445}" type="Integer"/>
+&lt;/connector></programlisting>
+        <para>在上面的配置中我们定义了两个系统变量 <literal
+                >hornetq.remoting.netty.host</literal> 和 <literal
+                >hornetq.remoting.netty.port</literal>。它们的值会被相应的系统变量的值(如果定义了的话)所替代。
+                如果没有定义这些系统变量,它们的默认值将分别为 localhost 及 5445。也可以不给出默认值,但如果这样就
+                <emphasis>必须</emphasis>要定义相应的系统变量。</para>
+    </section>
+    <section id="server.microcontainer.configuration">
+        <title>JBoss Microcontainer Beans 文件</title>
+        <para>HornetQ的POJO对象是由<ulink url="http://www.jboss.org/jbossmc/"> JBoss Microcontainer
+            </ulink>进行加载和运行的。JBoss Microcontainer是一个轻量级的加载工具。</para>
+        <note>
+            <para>如果是在JBoss应用服务器内运行,HornetQ同样需要一个bean的配置文件来将其部署到JBoss中。但是这与单独运行时的配置文件略有不同。
+                这是因为应用服务器内已经部署了一些服务,如安全服务等。所以在HornetQ中这些服务就不需要再部署了。</para>
+        </note>
+        <para>让我们看一个HornetQ作为单独服务器时的一个配置文件例子:</para>
+        <para>
+            <programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns="urn:jboss:bean-deployer:2.0"&gt;
+
+&lt;bean name="Naming" class="org.jnp.server.NamingBeanImpl"/&gt;
+
+&lt;!-- JNDI server. Disable this if you don't want JNDI --&gt;
+&lt;bean name="JNDIServer" class="org.jnp.server.Main"&gt;
+   &lt;property name="namingInfo"&gt;
+      &lt;inject bean="Naming"/&gt;
+   &lt;/property&gt;
+   &lt;property name="port"&gt;1099&lt;/property&gt;
+   &lt;property name="bindAddress"&gt;localhost&lt;/property&gt;
+   &lt;property name="rmiPort"&gt;1098&lt;/property&gt;
+   &lt;property name="rmiBindAddress"&gt;localhost&lt;/property&gt;
+&lt;/bean&gt;
+
+&lt;!-- MBean server --&gt;
+&lt;bean name="MBeanServer" class="javax.management.MBeanServer"&gt;
+   &lt;constructor factoryClass="java.lang.management.ManagementFactory"
+      factoryMethod="getPlatformMBeanServer"/&gt;
+&lt;/bean&gt; 
+
+&lt;!-- The core configuration --&gt;
+&lt;bean name="Configuration" class="org.hornetq.core.config.impl.FileConfiguration"&gt;
+&lt;/bean&gt;
+
+&lt;!-- The security manager --&gt;
+&lt;bean name="HornetQSecurityManager" 
+      class="org.hornetq.spi.core.security.HornetQSecurityManagerImpl"&gt;
+   &lt;start ignored="true"/&gt;
+   &lt;stop ignored="true"/&gt;
+&lt;/bean&gt;
+
+&lt;!-- The core server --&gt;
+&lt;bean name="HornetQServer" class="org.hornetq.core.server.impl.HornetQServerImpl"&gt;
+   &lt;start ignored="true"/&gt;
+   &lt;stop ignored="true"/&gt;  
+   &lt;constructor&gt;
+      &lt;parameter&gt;
+         &lt;inject bean="Configuration"/&gt;
+      &lt;/parameter&gt;
+      &lt;parameter&gt;
+         &lt;inject bean="MBeanServer"/&gt;
+      &lt;/parameter&gt;
+      &lt;parameter&gt;
+         &lt;inject bean="HornetQSecurityManager"/&gt;
+      &lt;/parameter&gt;        
+   &lt;/constructor&gt;         
+&lt;/bean&gt;
+
+&lt;!-- The JMS server --&gt;
+&lt;bean name="JMSServerManager" 
+      class="org.hornetq.jms.server.impl.JMSServerManagerImpl"&gt;
+   &lt;constructor&gt;         
+      &lt;parameter&gt;
+         &lt;inject bean="HornetQServer"/&gt;
+      &lt;/parameter&gt;         
+   &lt;/constructor&gt;
+&lt;/bean&gt;
+
+&lt;/deployment&gt;</programlisting>
+        </para>
+        <para>我们从上可以看出HornetQ的单独服务器(以及核心服务器)包括了一些POJO对象:</para>
+        <itemizedlist>
+            <listitem>
+                <para>JNDIServer</para>
+                <para>很多客户端需要JNDI来获取JMS的对象,因此我们提供了一个JNDI服务来满足它们。如果不需要JNDI,可以在配置
+                      文件中将它们注释掉。</para>
+            </listitem>
+            <listitem>
+                <para>MBeanServer</para>
+                <para>这个对象提供了JMX管理接口。它是一个MBean服务器,可管理的对象可以注册到这个服务器上。
+                      通常这就是一个JVM内部的默认的平台MBean服务器。如果不需要些服务,可以在配置文件中将其注释或删除。</para>
+            </listitem>
+            <listitem>
+                <para>Configuration</para>
+                <para>这是HornetQ的Configuration对象。默认时它是一个FileConfiguration对象。它可以从文件系统中读取
+                    配置信息。有些情况下(如嵌入式HornetQ)你可以将它定义为其它对象,以便用其它方法获得配置信息。</para>
+            </listitem>
+            <listitem>
+                <para>Security Manager. 可配置的安全管理器。默认的安全管理器使用 <literal>hornetq-users.xml</literal> 文件中的配置信息。
+                    它也可以配置为一个JAAS的安全管理器。当HornetQ运行于JBoss应用服务器中时,它还可以配置为JBoss的安全管理器,以达到更紧密的集成。
+                    如果不需要安全管理,你也可以将它删除。</para>
+            </listitem>
+            <listitem>
+                <para>HornetQServer</para>
+                <para>这是HornetQ的核心服务对象,几乎所有的核心功能都在这里。</para>
+            </listitem>
+            <listitem id="bean-jmsservermanager">
+                <para>JMSServerManager</para>
+                <para>这个对象将<literal>hornetq-jms.xml</literal>文件中定义的JMS的对象进行部署,比如JMS Queues, Topics
+                      以及ConnectionFactory。它还提供一套简单的管理接口以方便地对这些JMS对象进行管理。通常它只是将工作代理给
+                      核心服务器。如果你不需要在服务器端进行JMS对象的部署与管理,可以将它从配置中去掉。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section id="server.microkernel.configuration">
+        <title>JBoss AS4 MBean 服务</title>
+        <note>
+            <para>本节只讨论在JBoss AS 4上配置HornetQ。其与JBoss Microcontainer的配置很相似。</para>
+        </note>
+        <para>
+            <programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;server&gt;
+
+   &lt;mbean code="org.hornetq.service.HornetQFileConfigurationService"
+      name="org.hornetq:service=HornetQFileConfigurationService"&gt;
+   &lt;/mbean&gt;
+
+   &lt;mbean code="org.hornetq.service.JBossASSecurityManagerService"
+      name="org.hornetq:service=JBossASSecurityManagerService"&gt;
+   &lt;/mbean&gt;
+
+   &lt;mbean code="org.hornetq.service.HornetQStarterService" 
+      name="org.hornetq:service=HornetQStarterService"&gt;
+      &lt;!--let's let the JMS Server start us--&gt;
+         &lt;attribute name="Start"&gt;false&lt;/attribute&gt;
+
+      &lt;depends optional-attribute-name="SecurityManagerService"
+         proxy-type="attribute"&gt;org.hornetq:service=JBossASSecurityManagerService&lt;/depends&gt;
+      &lt;depends optional-attribute-name="ConfigurationService"
+         proxy-type="attribute"&gt;org.hornetq:service=HornetQFileConfigurationService&lt;/depends&gt;
+   &lt;/mbean&gt;
+
+   &lt;mbean code="org.hornetq.service.HornetQJMSStarterService"
+      name="org.hornetq:service=HornetQJMSStarterService"&gt;
+      &lt;depends optional-attribute-name="HornetQServer"
+         proxy-type="attribute"&gt;org.hornetq:service=HornetQStarterService&lt;/depends&gt;
+   &lt;/mbean&gt;
+   
+&lt;/server&gt;
+            </programlisting>
+        </para>
+        <para>这个jboss-service.xml包含在hornetq-service.sar文件中,它用来配置AS4中嵌入运行的HornetQ。
+              在这个配置文件中我们启动了以下几个服务:</para>
+        <itemizedlist>
+            <listitem>
+                <para>HornetQFileConfigurationService</para>
+                <para>这个MBean服务的任务是管理 <literal>FileConfiguration POJO</literal>的生命周期。</para>
+            </listitem>
+            <listitem>
+                <para>JBossASSecurityManagerService</para>
+                <para>这个MBean服务管理着 <literal>JBossASSecurityManager</literal> POJO的生命周期。</para>
+            </listitem>
+            <listitem>
+                <para>HornetQStarterService</para>
+                <para>这个MBean服务管理着<literal>HornetQServer</literal> POJO。它依赖于 JBossASSecurityManagerService 和
+                      HornetQFileConfigurationService 这两个MBean。</para>
+            </listitem>
+            <listitem>
+                <para>HornetQJMSStarterService</para>
+                <para>这个MBean服务管理着 <literal>JMSServerManagerImpl</literal> POJO对象。如果不需要JMS,可以去掉这个服务。</para>
+            </listitem>
+            <listitem>
+                <para>JMSServerManager</para>
+                <para>用于启动JMSServerManager。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section id="usingserver.mainconfig">
+        <title>主配置文件</title>
+        <para>HornetQ 核心服务的配置保存在 <literal>hornetq-configuration.xml</literal>文件中。
+         FileConfiguration bean 读取这个文件来对消息服务器进行配置。</para>
+        <para>HornetQ有很多的配置参数。采用默认的配置在绝大多数情况下可以很好的运行。事实上每一个参数都有默认的处理,因此一个只包含有一个空
+              的<literal>configuration</literal>的配置文件是一个有效的文件。对各个参数的解释贯穿于本手册。你还可参参照
+               <link linkend="configuration-index">这里</link>来查找你想看的参数。</para>
+    </section>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/wildcard-routing.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/wildcard-routing.xml b/docs/user-manual/zh/wildcard-routing.xml
new file mode 100644
index 0000000..1be8224
--- /dev/null
+++ b/docs/user-manual/zh/wildcard-routing.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+
+<chapter id="wildcard-routing">
+    <title>使用通配符实现消息路由</title>
+    <para>HornetQ支持使用带通配符的地址对消息路由。</para>
+    <para>例如,当创建一个队列时使用了地址<literal>queue.news.#</literal>,那么它就能接收
+          所有和这个地址通配符相配的每一个地址的消息。这样的地址如 <literal
+            >queue.news.europe</literal> 或 <literal>queue.news.usa</literal> 或 <literal
+            >queue.news.usa.sport</literal>等。这样一个消息接收者可以接收<literal>一组</literal>相关
+          的地址的消息,而不是只能指定一个具体的地址。</para>
+    <note>
+        <para>用JMS的术语来说,这个功能就是允许创建“话题组”(topic hierarchy)。</para>
+    </note>
+    <para>要使用本功能需要将<literal>wild-card-routing-enabled</literal>属性设置为<literal>true</literal>。
+        这个属性在 <literal>hornetq-configuration.xml</literal> 文件中。默认值是<literal>true</literal>。</para>
+    <para>关于通配符的语法参见<xref
+            linkend="wildcard-syntax" /> 章及 <xref
+            linkend="topic-hierarchy-example" />。</para>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/wildcard-syntax.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/wildcard-syntax.xml b/docs/user-manual/zh/wildcard-syntax.xml
new file mode 100644
index 0000000..e527d7a
--- /dev/null
+++ b/docs/user-manual/zh/wildcard-syntax.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+
+<chapter id="wildcard-syntax">
+    <title>了解 HornetQ 通配符的语法</title>
+    <para>HornetQ使用了一种专门的通配符语法来配置安全、地址及接收者(consumer)的创建。</para>
+    <para>这种语法与 <ulink url="http://www.amqp.org">AMQP</ulink>所用的语法相似。</para>
+    <para>一个HornetQ的通配符表达式是由一些由“<literal
+            >.</literal>”分隔的单词组成。</para>
+    <para>特殊字符“<literal>#</literal>”和“<literal>*</literal>”在表达式中可作为一个单词,它们代表
+        特殊的意义。</para>
+    <para>字符“<literal>#</literal>”表示“零或多个单词的任意排列”。</para>
+    <para>字符“<literal>*</literal>”表示“一个单词”。</para>
+    <para>因此,通配符表达式“news.europe.#”可以匹配“news.europe”、“news.europe.sport”、
+        “news.europe.politics”以及“news.europe.politics.regional”,但是与“news.usa”、
+        “news.usa.sport” 及 “entertainment”不相匹配。</para>
+    <para>通配符“news.*”与“news.europe”匹配,但不与“news.europe.sport”匹配。</para>
+    <para>通配符“news.*.sport”与“news.europe.sport”及“news.usa.sport”匹配,但与
+        “news.europe.politics”不匹配。</para>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/etc/IDEA-style.jar
----------------------------------------------------------------------
diff --git a/etc/IDEA-style.jar b/etc/IDEA-style.jar
new file mode 100644
index 0000000..06e3baa
Binary files /dev/null and b/etc/IDEA-style.jar differ

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/etc/checkstyle.xml
----------------------------------------------------------------------
diff --git a/etc/checkstyle.xml b/etc/checkstyle.xml
new file mode 100644
index 0000000..7a420f4
--- /dev/null
+++ b/etc/checkstyle.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+        "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+        "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+<!-- See http://checkstyle.sourceforge.net/availablechecks.html for documentation on available checks -->
+<module name="Checker">
+   <!-- Checks to see if a file contains a tab character. -->
+   <module name="FileTabCharacter">
+      <property name="eachLine" value="true"/>
+   </module>
+
+   <!-- Checks for trailing whitespace. -->
+   <module name="RegexpSingleline">
+      <!-- \s matches whitespace character, $ matches end of line. -->
+      <property name="format" value="\s+$"/>
+      <property name="message" value="Line has trailing spaces."/>
+   </module>
+
+   <module name="TreeWalker">
+
+      <!-- Checks for imports -->
+      <module name="AvoidStarImport"/>
+      <module name="RedundantImport"/>
+      <module name="UnusedImports"/>
+
+      <!-- Modifier Checks -->
+      <module name="ModifierOrder"/>
+      <module name="RedundantModifier"/>
+
+      <!-- Checks for common coding problems -->
+      <module name="EmptyStatement"/>
+      <!-- Checks that classes that override equals() also override hashCode(). -->
+      <module name="EqualsHashCode"/>
+      <!-- Checks for illegal instantiations where a factory method is preferred. -->
+      <module name="IllegalInstantiation"/>
+      <!-- Checks for redundant exceptions declared in throws clause such as duplicates, unchecked exceptions or subclasses of another declared exception. -->
+      <module name="RedundantThrows">
+         <property name="allowUnchecked" value="true"/>
+      </module>
+
+      <!-- Checks that long constants are defined with an upper ell. -->
+      <module name="UpperEll"/>
+      <!-- This check makes sure that all package annotations are in the package-info.java file. -->
+      <module name="PackageAnnotation"/>
+      <!-- Checks that if a class defines a covariant method equals, then it defines method equals(java.lang.Object). -->
+      <module name="CovariantEquals"/>
+      <!-- Checks the style of array type definitions. -->
+      <module name="ArrayTypeStyle"/>
+      <!-- Make sure left curly braces are on a new line. Note, this is not the recommendation from Sun. It is a legacy preference. -->
+      <module name="LeftCurly">
+         <property name="option" value="nl"/>
+      </module>
+      <!-- Make sure right curly braces are on a new line by itself. Note, this is not the recommendation from Sun. It is a legacy preference. -->
+      <module name="RightCurly">
+         <property name="option" value="alone"/>
+      </module>
+      <!-- Checks that there is no whitespace after certain tokens; e.g. "." and "!". -->
+      <module name="NoWhitespaceAfter"/>
+      <!-- Checks that there is no whitespace before certain tokens; e.g. "++" and ";". -->
+      <module name="NoWhitespaceBefore"/>
+      <!-- Checks that most tokens are surrounded by whitespace. RCURLY is omitted so we can do stuff like "new Thread(){...}.start()". -->
+      <module name="WhitespaceAround">
+         <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
+      </module>
+      <!-- Ensure there is no space between the identifier of a method definition, constructor definition, method call, or constructor invocation and the left parenthesis of the parameter list. -->
+      <module name="MethodParamPad"/>
+      <!-- Ensure proper indentation. -->
+      <module name="Indentation">
+         <property name="basicOffset" value="3"/>
+         <property name="caseIndent" value="3"/>
+         <property name="throwsIndent" value="3"/>
+      </module>
+   </module>
+</module>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/etc/findbugs-exclude.xml
----------------------------------------------------------------------
diff --git a/etc/findbugs-exclude.xml b/etc/findbugs-exclude.xml
new file mode 100644
index 0000000..f2be1b7
--- /dev/null
+++ b/etc/findbugs-exclude.xml
@@ -0,0 +1,148 @@
+<FindBugsFilter>
+
+  <Match>
+    <!-- Having str restored to null is fine for our purposes -->
+    <Class name="org.hornetq.api.core.SimpleString"/>
+    <Field name="str"/>
+    <Bug pattern="SE_TRANSIENT_FIELD_NOT_RESTORED"/>
+  </Match>
+
+  <Match>
+    <!-- The whole point of SimpleString is to expose this data without any performance penalty -->
+    <Class name="org.hornetq.api.core.SimpleString"/>
+    <method name="getData"/>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+
+  <!-- Ok to return mutable Object -->
+  <Match>
+    <Or>
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationStartSyncMessage" />
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationSyncFileMessage" />
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationLargeMessageWriteMessage" />
+    </Or>
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+  <!-- Ok to return mutable Object, here restricted to method getRecordData -->
+  <Match>
+    <Or>
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationAddMessage" />
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationAddTXMessage" />
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationDeleteTXMessage" />
+      <Class name="org.hornetq.core.protocol.core.impl.wireformat.ReplicationPrepareMessage" />
+    </Or>
+    <Method name="getRecordData" />
+    <Bug pattern="EI_EXPOSE_REP"/>
+  </Match>
+
+  <!-- Comparison is correct within its context -->
+  <Match>
+    <Class name="org.hornetq.ra.HornetQRaUtils"/>
+    <Or>
+      <Method name="compare" params="java.lang.Integer,java.lang.Integer" returns="boolean"/>
+      <Method name="compare" params="java.lang.Long,java.lang.Long" returns="boolean"/>
+      <Method name="compare" params="java.lang.Double,java.lang.Double" returns="boolean"/>
+    </Or>
+    <Bug pattern="RC_REF_COMPARISON"/>
+  </Match>
+
+  <!-- Comparison is correct within its context -->
+  <Match>
+    <Class name="org.hornetq.ra.Util"/>
+    <Method name="compare" params="java.lang.Boolean,java.lang.Boolean" returns="boolean"/>
+    <Bug pattern="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN"/>
+  </Match>
+
+  <!-- Comparison is correct within its context -->
+  <Match>
+    <Class name="org.hornetq.ra.Util"/>
+    <Method name="compare" params="java.lang.String,java.lang.String" returns="boolean"/>
+    <Bug pattern="ES_COMPARING_PARAMETER_STRING_WITH_EQ"/>
+  </Match>
+
+  <Match>
+    <!-- As per Java Messaging Specification 3.5.4:
+
+         "
+         Attempting to read a null value as a Java primitive type must be treated
+         as calling the primitive’s corresponding valueOf(String) conversion method
+         with a null value.
+         "
+
+         so methods are passed null arguments to trigger the exact same exceptions.
+    -->
+    <Class name="org.hornetq.utils.TypedProperties"/>
+    <Or>
+      <Method name="getFloatProperty"/>
+      <Method name="getDoubleProperty"/>
+      <Method name="getByteProperty"/>
+      <Method name="getIntProperty"/>
+      <Method name="getShortProperty"/>
+    </Or>
+    <Bug pattern="NP_NULL_PARAM_DEREF_NONVIRTUAL"/>
+  </Match>
+
+  <Match>
+    <!-- Code is meant to measure memory usage, so calling Garbage Collection is normal. -->
+    <Class name="org.hornetq.utils.MemorySize"/>
+    <bug pattern="DM_GC"/>
+  </Match>
+
+  <match>
+    <!-- Ignore naming convention violations in generated code -->
+    <class name="org.hornetq.core.filter.impl.FilterParser"/>
+    <bug pattern="NM_METHOD_NAMING_CONVENTION"/>
+  </match>
+
+  <Match>
+    <!-- field changes are always guarded by PagingStoreImpl.lock.writeLock().lock() -->
+    <Class name="org.hornetq.core.paging.impl.PagingStoreImpl"/>
+    <Field name="numberOfPages" />
+    <Bug pattern="VO_VOLATILE_INCREMENT"/>
+  </Match>
+
+  <Match>
+    <!-- File is generated by JavaCC -->
+    <Class name="org.hornetq.core.filter.impl.ParseException"/>
+    <bug pattern="SBSC_USE_STRINGBUFFER_CONCATENATION"/>
+  </Match>
+
+  <Match>
+    <!-- Generated by JavaCC: ignore naming convention violation -->
+    <Class name="~org\.hornetq\.core\.filter\.impl\.(FilterParser(|TokenManager|Constants)|TokenMgrError)"/>
+    <bug pattern="NM_METHOD_NAMING_CONVENTION,SF_SWITCH_NO_DEFAULT,MS_PKGPROTECT,URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD,MS_OOI_PKGPROTECT"/>
+  </Match>
+
+  <Match>
+    <!-- Files generated by JBoss Logging are ignored -->
+    <Class name="~org\.hornetq\..*\.HornetQ.*(Logger_\$logger|Bundle_\$bundle)"/>
+  </Match>
+
+  <!-- Ignore checks on return values, example File.delete(), on samples/examples -->
+  <Match>
+    <Class name="~org\.hornetq\.common\.example.*Example"/>
+    <bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
+  </Match>
+
+  <Match>
+    <Class name="org.hornetq.utils.json.JSONObject$Null"/>
+    <Bug pattern="EQ_UNUSUAL"/>
+  </Match>
+
+  <Match>
+    <Class name="org.hornetq.core.server.impl.HornetQServerImpl$SharedNothingLiveActivation"/>
+    <Method name="isNodeIdUsed"/>
+    <Bug pattern="RV_RETURN_VALUE_IGNORED"/>
+  </Match>
+
+  <!-- Examples often verify a null value and use the (null) variable in a sys-out statement -->
+  <Match>
+    <Or>
+      <Class name="org.hornetq.jms.example.TopicHierarchyExample"/>
+      <Class name="org.hornetq.jms.example.TransactionalExample"/>
+    </Or>
+    <Method name="runExample"/>
+    <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE"/>
+  </Match>
+
+</FindBugsFilter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/etc/license-header.txt
----------------------------------------------------------------------
diff --git a/etc/license-header.txt b/etc/license-header.txt
new file mode 100644
index 0000000..7af0bc0
--- /dev/null
+++ b/etc/license-header.txt
@@ -0,0 +1,11 @@
+Copyright ${copyrightYear} Red Hat, Inc.
+Red Hat licenses this file to you under the Apache License, version
+2.0 (the "License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied.  See the License for the specific language governing
+permissions and limitations under the License.
+

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/etc/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/etc/org.eclipse.jdt.core.prefs b/etc/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..eb99f0b
--- /dev/null
+++ b/etc/org.eclipse.jdt.core.prefs
@@ -0,0 +1,305 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=optimize out
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.processAnnotations=enabled
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=18
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=82
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=18
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=18
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=16
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=82
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=18
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=82
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=82
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=18
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=18
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=82
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=82
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=82
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=18
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=0
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=3
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=3
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=3
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=true
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=3
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true


Mime
View raw message