http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/en/using-jms.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/using-jms.xml b/docs/user-manual/en/using-jms.xml new file mode 100644 index 0000000..aaecf62 --- /dev/null +++ b/docs/user-manual/en/using-jms.xml @@ -0,0 +1,313 @@ +<?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. --> +<!-- ============================================================================= --> + +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_User_Manual.ent"> +%BOOK_ENTITIES; +]> +<chapter id="using-jms"> + <title>Using JMS</title> + <para>Although HornetQ provides a JMS agnostic messaging API, many users will be more + comfortable using JMS.</para> + <para>JMS is a very popular API standard for messaging, and most messaging systems provide a JMS + API. If you are completely new to JMS we suggest you follow the<ulink + url="http://docs.oracle.com/javaee/1.3/jms/tutorial"> Sun + JMS tutorial</ulink> - a full JMS tutorial is out of scope for this guide.</para> + <para>HornetQ also ships with a wide range of examples, many of which demonstrate JMS API usage. + A good place to start would be to play around with the simple JMS Queue and Topic example, + but we also provide examples for many other parts of the JMS API. A full description of the + examples is available in <xref linkend="examples"/>.</para> + <para>In this section we'll go through the main steps in configuring the server for JMS and + creating a simple JMS program. We'll also show how to configure and use JNDI, and also how + to use JMS with HornetQ without using any JNDI.</para> + <section> + <title>A simple ordering system</title> + <para>For this chapter we're going to use a very simple ordering system as our example. It is + a somewhat contrived example because of its extreme simplicity, but it serves to + demonstrate the very basics of setting up and using JMS.</para> + <para>We will have a single JMS Queue called <literal>OrderQueue</literal>, and we will have + a single <literal>MessageProducer</literal> sending an order message to the queue and a + single <literal>MessageConsumer</literal> consuming the order message from the + queue.</para> + <para>The queue will be a <literal>durable</literal> queue, i.e. it will survive a server + restart or crash. We also want to pre-deploy the queue, i.e. specify the queue in the + server JMS configuration so it is created automatically without us having to explicitly + create it from the client.</para> + </section> + <section id="using-jms.server.configuration"> + <title>JMS Server Configuration</title> + <para>The file <literal>hornetq-jms.xml</literal> on the server classpath contains any JMS + Queue, Topic and ConnectionFactory instances that we wish to create and make available + to lookup via the JNDI.</para> + <para>A JMS ConnectionFactory object is used by the client to make connections to the + server. It knows the location of the server it is connecting to, as well as many other + configuration parameters. In most cases the defaults will be acceptable.</para> + <para>We'll deploy a single JMS Queue and a single JMS Connection Factory instance on the + server for this example but there are no limits to the number of Queues, Topics and + Connection Factory instances you can deploy from the file. Here's our + configuration:</para> + <programlisting> +<configuration xmlns="urn:hornetq" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:hornetq ../schemas/hornetq-jms.xsd "> + + <connection-factory name="ConnectionFactory"> + <connectors> + <connector-ref connector-name="netty"/> + </connectors> + <entries> + <entry name="ConnectionFactory"/> + </entries> + </connection-factory> + + <queue name="OrderQueue"> + <entry name="queues/OrderQueue"/> + </queue> +</configuration></programlisting> + <para>We deploy one ConnectionFactory called <literal>ConnectionFactory</literal> and bind + it in just one place in JNDI as given by the <literal>entry</literal> element. + ConnectionFactory instances can be bound in many places in JNDI if you require. </para> + <note> + <para>The JMS connection factory references a <literal>connector</literal> called + <literal>netty</literal>. This is a reference to a connector object deployed in + the main core configuration file <literal>hornetq-configuration.xml</literal> which + defines the transport and parameters used to actually connect to the server.</para> + </note> + </section> + <section id="using-jms.configure.factory.types"> + <title>Connection Factory Types</title> + <para>The JMS API doc provides several connection factories for applications. HornetQ JMS users + can choose to configure the types for their connection factories. Each connection factory + has a <literal>signature</literal> attribute and a <literal>xa</literal> parameter, the + combination of which determines the type of the factory. Attribute <literal>signature</literal> + has three possible string values, i.e. <emphasis>generic</emphasis>, + <emphasis>queue</emphasis> and <emphasis>topic</emphasis>; <literal>xa</literal> is a boolean + type parameter. The following table gives their configuration values for different + connection factory interfaces.</para> + <table frame="topbot" id="using-jms.table.configure.factory.types"> + <title>Configuration for Connection Factory Types</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>Connection Factory Type</entry> + </row> + </thead> + <tbody> + <row> + <entry>generic (default)</entry> + <entry>false (default)</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>As an example, the following configures an XAQueueConnectionFactory:</para> + <programlisting> +<configuration xmlns="urn:hornetq" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:hornetq ../schemas/hornetq-jms.xsd "> + + <connection-factory name="ConnectionFactory" signature="queue"> + <xa>true</xa> + <connectors> + <connector-ref connector-name="netty"/> + </connectors> + <entries> + <entry name="ConnectionFactory"/> + </entries> + </connection-factory> +</configuration></programlisting> + + </section> + <section> + <title>JNDI configuration</title> + <para>When using JNDI from the client side you need to specify a set of JNDI properties + which tell the JNDI client where to locate the JNDI server, amongst other things. These + are often specified in a file called <literal>jndi.properties</literal> on the client + classpath, or you can specify them directly when creating the JNDI initial context. A + full JNDI tutorial is outside the scope of this document, please see the <ulink + url="http://docs.oracle.com/javase/jndi/tutorial">Sun JNDI tutorial</ulink> + for more information on how to use JNDI.</para> + <para>For talking to the JBoss JNDI Server, the jndi properties will look something like + this:</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>Where <literal>myhost</literal> is the hostname or IP address of the JNDI server. 1099 + is the port used by the JNDI server and may vary depending on how you have configured + your JNDI server.</para> + <para>In the default standalone configuration, JNDI server ports are configured in the file + <literal>hornetq-beans.xml</literal> by setting properties on the <literal + >JNDIServer</literal> bean:</para> + <programlisting> +<bean name="StandaloneServer" class="org.hornetq.jms.server.impl.StandaloneNamingServer"> + <constructor> + <parameter> + <inject bean="HornetQServer"/> + </parameter> + </constructor> + <property name="port">${jnp.port:1099}</property> + <property name="bindAddress">${jnp.host:localhost}</property> + <property name="rmiPort">${jnp.rmiPort:1098}</property> + <property name="rmiBindAddress">${jnp.host:localhost}</property> +</bean></programlisting> + <note> + <para>If you want your JNDI server to be available to non local clients make sure you + change its bind address to something other than <literal + >localhost</literal>!</para> + </note> + <note> + <para>The JNDIServer bean must be defined <emphasis>only when HornetQ is running in + stand-alone mode</emphasis>. When HornetQ is integrated to JBoss Application + Server, JBoss AS will provide a ready-to-use JNDI server without any additional + configuration.</para> + </note> + </section> + <section> + <title>The code</title> + <para>Here's the code for the example:</para> + <para>First we'll create a JNDI initial context from which to lookup our JMS objects:</para> + <programlisting>InitialContext ic = new InitialContext();</programlisting> + <para>Now we'll look up the connection factory:</para> + <programlisting>ConnectionFactory cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");</programlisting> + <para>And look up the Queue:</para> + <programlisting>Queue orderQueue = (Queue)ic.lookup("/queues/OrderQueue");</programlisting> + <para>Next we create a JMS connection using the connection factory:</para> + <programlisting>Connection connection = cf.createConnection();</programlisting> + <para>And we create a non transacted JMS Session, with AUTO_ACKNOWLEDGE acknowledge + mode:</para> + <programlisting>Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);</programlisting> + <para>We create a MessageProducer that will send orders to the queue:</para> + <programlisting>MessageProducer producer = session.createProducer(orderQueue);</programlisting> + <para>And we create a MessageConsumer which will consume orders from the queue:</para> + <programlisting>MessageConsumer consumer = session.createConsumer(orderQueue);</programlisting> + <para>We make sure we start the connection, or delivery won't occur on it:</para> + <programlisting>connection.start();</programlisting> + <para>We create a simple TextMessage and send it:</para> + <programlisting>TextMessage message = session.createTextMessage("This is an order"); +producer.send(message);</programlisting> + <para>And we consume the message:</para> + <programlisting>TextMessage receivedMessage = (TextMessage)consumer.receive(); +System.out.println("Got order: " + receivedMessage.getText());</programlisting> + <para>It is as simple as that. For a wide range of working JMS examples please see the + examples directory in the distribution.</para> + <warning> + <para>Please note that JMS connections, sessions, producers and consumers are + <emphasis>designed to be re-used</emphasis>.</para> + <para>It is an anti-pattern to create new connections, sessions, producers and consumers + for each message you produce or consume. If you do this, your application will + perform very poorly. This is discussed further in the section on performance tuning + <xref linkend="perf-tuning"/>.</para> + </warning> + </section> + <section> + <title>Directly instantiating JMS Resources without using JNDI</title> + <para>Although it is a very common JMS usage pattern to lookup JMS <emphasis>Administered + Objects</emphasis> (that's JMS Queue, Topic and ConnectionFactory instances) from + JNDI, in some cases a JNDI server is not available and you still want to use JMS, or you + just think "Why do I need JNDI? Why can't I just instantiate these objects + directly?"</para> + <para>With HornetQ you can do exactly that. HornetQ supports the direct instantiation of JMS + Queue, Topic and ConnectionFactory instances, so you don't have to use JNDI at + all.</para> + <para>For a full working example of direct instantiation please see the JMS examples in + <xref linkend="examples"/>.</para> + <para>Here's our simple example, rewritten to not use JNDI at all:</para> + <para>We create the JMS ConnectionFactory object via the HornetQJMSClient Utility class, + note we need to provide connection parameters and specify which transport we are using, + for more information on connectors please see <xref linkend="configuring-transports" + />.</para> + <programlisting> +TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName()); +ConnectionFactory cf = HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF,transportConfiguration);</programlisting> + <para>We also create the JMS Queue object via the HornetQJMSClient Utility class:</para> + <programlisting>Queue orderQueue = HornetQJMSClient.createQueue("OrderQueue");</programlisting> + <para>Next we create a JMS connection using the connection factory:</para> + <programlisting>Connection connection = cf.createConnection();</programlisting> + <para>And we create a non transacted JMS Session, with AUTO_ACKNOWLEDGE acknowledge + mode:</para> + <programlisting>Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);</programlisting> + <para>We create a MessageProducer that will send orders to the queue:</para> + <programlisting>MessageProducer producer = session.createProducer(orderQueue);</programlisting> + <para>And we create a MessageConsumer which will consume orders from the queue:</para> + <programlisting>MessageConsumer consumer = session.createConsumer(orderQueue);</programlisting> + <para>We make sure we start the connection, or delivery won't occur on it:</para> + <programlisting>connection.start();</programlisting> + <para>We create a simple TextMessage and send it:</para> + <programlisting>TextMessage message = session.createTextMessage("This is an order"); +producer.send(message);</programlisting> + <para>And we consume the message:</para> + <programlisting>TextMessage receivedMessage = (TextMessage)consumer.receive(); +System.out.println("Got order: " + receivedMessage.getText());</programlisting> + </section> + <section id="using-jms.clientid"> + <title>Setting The Client ID</title> + <para>This represents the client id for a JMS client and is needed for creating durable + subscriptions. It is possible to configure this on the connection factory and can be set + via the <literal>client-id</literal> element. Any connection created by this connection + factory will have this set as its client id.</para> + </section> + <section id="using-jms.dupsokbatchsize"> + <title>Setting The Batch Size for DUPS_OK </title> + <para>When the JMS acknowledge mode is set to <literal>DUPS_OK</literal> it is possible to + configure the consumer so that it sends acknowledgements in batches rather that one at a + time, saving valuable bandwidth. This can be configured via the connection factory via + the <literal>dups-ok-batch-size</literal> element and is set in bytes. The default is + 1024 * 1024 bytes = 1 MiB.</para> + </section> + <section id="using-jms.txbatchsize"> + <title>Setting The Transaction Batch Size</title> + <para>When receiving messages in a transaction it is possible to configure the consumer to + send acknowledgements in batches rather than individually saving valuable bandwidth. + This can be configured on the connection factory via the <literal + >transaction-batch-size</literal> element and is set in bytes. The default is 1024 * + 1024.</para> + </section> +</chapter>
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/en/using-server.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/using-server.xml b/docs/user-manual/en/using-server.xml new file mode 100644 index 0000000..c5f1265 --- /dev/null +++ b/docs/user-manual/en/using-server.xml @@ -0,0 +1,385 @@ +<?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. --> +<!-- ============================================================================= --> + +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_User_Manual.ent"> +%BOOK_ENTITIES; +]> +<chapter id="using-server"> + <title>Using the Server</title> + <para>This chapter will familiarise you with how to use the HornetQ server.</para> + <para>We'll show where it is, how to start and stop it, and we'll describe the directory layout + and what all the files are and what they do.</para> + <para>For the remainder of this chapter when we talk about the HornetQ server we mean the + HornetQ standalone server, in its default configuration with a JMS Service and JNDI service + enabled.</para> + <para>When running embedded in JBoss Application Server the layout may be slightly different but + by-and-large will be the same.</para> + <section> + <title>Starting and Stopping the standalone server</title> + <para>In the distribution you will find a directory called <literal>bin</literal>.</para> + <para><literal>cd</literal> into that directory and you will find a Unix/Linux script called + <literal>run.sh</literal> and a windows batch file called <literal + >run.bat</literal></para> + <para>To run on Unix/Linux type <literal>./run.sh</literal></para> + <para>To run on Windows type <literal>run.bat</literal></para> + <para>These scripts are very simple and basically just set-up the classpath and some JVM + parameters and start the JBoss Microcontainer. The Microcontainer is a light weight + container used to deploy the HornetQ POJO's</para> + <para>To stop the server you will also find a Unix/Linux script <literal>stop.sh</literal> and + a windows batch file <literal>stop.bat</literal></para> + <para>To run on Unix/Linux type <literal>./stop.sh</literal></para> + <para>To run on Windows type <literal>stop.bat</literal></para> + <para>Please note that HornetQ requires a Java 6 or later runtime to run.</para> + <para>Both the run and the stop scripts use the config under <literal + >config/stand-alone/non-clustered</literal> by default. The configuration can be + changed by running <literal>./run.sh ../config/stand-alone/clustered</literal> or + another config of your choosing. This is the same for the stop script and the windows + bat files.</para> + </section> + <section> + <title>Server JVM settings</title> + <para>The run scripts <literal>run.sh</literal> and <literal>run.bat</literal> set some JVM + settings for tuning running on Java 6 and choosing the garbage collection policy. We + recommend using a parallel garbage collection algorithm to smooth out latency and + minimise large GC pauses.</para> + <para>By default HornetQ runs in a maximum of 1GiB of RAM. To increase the memory settings + change the <literal>-Xms</literal> and <literal>-Xmx</literal> memory settings as you + would for any Java program.</para> + <para>If you wish to add any more JVM arguments or tune the existing ones, the run scripts + are the place to do it.</para> + </section> + <section> + <title>Server classpath</title> + <para>HornetQ looks for its configuration files on the Java classpath.</para> + <para>The scripts <literal>run.sh</literal> and <literal>run.bat</literal> specify the + classpath when calling Java to run the server.</para> + <para>In the distribution, the run scripts will add the non clustered configuration + directory to the classpath. This is a directory which contains a set of configuration + files for running the HornetQ server in a basic non-clustered configuration. In the + distribution this directory is <literal>config/stand-alone/non-clustered/</literal> from + the root of the distribution.</para> + <para>The distribution contains several standard configuration sets for running:</para> + <itemizedlist> + <listitem> + <para>Non clustered stand-alone.</para> + </listitem> + <listitem> + <para>Clustered stand-alone</para> + </listitem> + <listitem> + <para>Non clustered in JBoss Application Server</para> + </listitem> + <listitem> + <para>Clustered in JBoss Application Server</para> + </listitem> + </itemizedlist> + <para>You can of course create your own configuration and specify any configuration + directory when running the run script.</para> + <para>Just make sure the directory is on the classpath and HornetQ will search there when + starting up.</para> + </section> + <section id="using-server.library.path"> + <title>Library Path</title> + <para>If you're using the <link linkend="aio-journal">Asynchronous IO Journal</link> on + Linux, you need to specify <literal>java.library.path</literal> as a property on your + Java options. This is done automatically in the <literal>run.sh</literal> script.</para> + <para>If you don't specify <literal>java.library.path</literal> at your Java options then + the JVM will use the environment variable <literal>LD_LIBRARY_PATH</literal>.</para> + </section> + <section> + <title>System properties</title> + <para>HornetQ can take a system property on the command line for configuring logging.</para> + <para>For more information on configuring logging, please see <xref linkend="logging" + />.</para> + </section> + <section id="using-server.configuration"> + <title>Configuration files</title> + <para>The configuration directory is specified on the classpath in the run scripts <literal + >run.sh</literal> and <literal>run.bat</literal> This directory can contain the + following files.</para> + <itemizedlist> + <listitem> + <para><literal>hornetq-beans.xml</literal> (or <literal + >hornetq-jboss-beans.xml</literal> if you're running inside JBoss + Application Server). This is the JBoss Microcontainer beans file which defines + what beans the Microcontainer should create and what dependencies to enforce + between them. Remember that HornetQ is just a set of POJOs. In the stand-alone + server, it's the JBoss Microcontainer which instantiates these POJOs and + enforces dependencies between them and other beans. </para> + </listitem> + <listitem> + <para><literal>hornetq-configuration.xml</literal>. This is the main HornetQ + configuration file. All the parameters in this file are described in <xref + linkend="configuration-index"/>. Please see <xref + linkend="usingserver.mainconfig"/> for more information on this file.</para> + </listitem> + <listitem> + <para><literal>hornetq-queues.xml</literal>. This file contains predefined queues, + queue settings and security settings. The file is optional - all this + configuration can also live in <literal>hornetq-configuration.xml</literal>. In + fact, the default configuration sets do not have a <literal + >hornetq-queues.xml</literal> file. The purpose of allowing queues to be + configured in these files is to allow you to manage your queue configuration + over many files instead of being forced to maintain it in a single file. There + can be many <literal>hornetq-queues.xml</literal> files on the classpath. All + will be loaded if found.</para> + </listitem> + <listitem> + <para><literal>hornetq-users.xml</literal> HornetQ ships with a basic security + manager implementation which obtains user credentials from the <literal + >hornetq-users.xml</literal> file. This file contains user, password and + role information. For more information on security, please see <xref + linkend="security"/>.</para> + </listitem> + <listitem> + <para><literal>hornetq-jms.xml</literal> The distro configuration by default + includes a server side JMS service which mainly deploys JMS Queues, Topics and + ConnectionFactorys from this file into JNDI. If you're not using JMS, or you + don't need to deploy JMS objects on the server side, then you don't need this + file. For more information on using JMS, please see <xref linkend="using-jms" + />.</para> + </listitem> + <listitem> + <para><literal>logging.properties</literal> This is used to configure the logging + handlers used by the Java logger. For more information on configuring logging, + please see <xref linkend="logging"/>.</para> + </listitem> + </itemizedlist> + <note> + <para>The property <literal>file-deployment-enabled</literal> in the <literal + >hornetq-configuration.xml</literal> configuration when set to false means that + the other configuration files are not loaded. This is true by default.</para> + </note> + <para>It is also possible to use system property substitution in all the configuration + files. by replacing a value with the name of a system property. Here is an example of + this with a connector configuration:</para> + <programlisting> +<connector name="netty"> + <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class> + <param key="host" value="${hornetq.remoting.netty.host:localhost}"/> + <param key="port" value="${hornetq.remoting.netty.port:5445}"/> +</connector></programlisting> + <para>Here you can see we have replaced 2 values with system properties <literal + >hornetq.remoting.netty.host</literal> and <literal + >hornetq.remoting.netty.port</literal>. These values will be replaced by the value + found in the system property if there is one, if not they default back to localhost or + 5445 respectively. It is also possible to not supply a default. i.e. <literal + >${hornetq.remoting.netty.host}</literal>, however the system property + <emphasis>must</emphasis> be supplied in that case.</para> + </section> + <section id="server.microcontainer.configuration"> + <title>JBoss Microcontainer Beans File</title> + <para>The stand-alone server is basically a set of POJOs which are instantiated by the light + weight<ulink url="http://www.jboss.org/jbossmc/"> JBoss Microcontainer + </ulink>engine.</para> + <note> + <para>A beans file is also needed when the server is deployed in the JBoss Application + Server but this will deploy a slightly different set of objects since the + Application Server will already have things like security etc deployed.</para> + </note> + <para>Let's take a look at an example beans file from the stand-alone server:</para> + <para> + <programlisting> +<?xml version="1.0" encoding="UTF-8"?> + +<deployment xmlns="urn:jboss:bean-deployer:2.0"> + + <!-- MBean server --> + <bean name="MBeanServer" class="javax.management.MBeanServer"> + <constructor factoryClass="java.lang.management.ManagementFactory" + factoryMethod="getPlatformMBeanServer"/> + </bean> + + <!-- The core configuration --> + <bean name="Configuration" class="org.hornetq.core.config.impl.FileConfiguration"> + </bean> + + <!-- The security manager --> + <bean name="HornetQSecurityManager" class="org.hornetq.spi.core.security.HornetQSecurityManagerImpl"> + <start ignored="true"/> + <stop ignored="true"/> + </bean> + + <!-- The core server --> + <bean name="HornetQServer" class="org.hornetq.core.server.impl.HornetQServerImpl"> + <constructor> + <parameter> + <inject bean="Configuration"/> + </parameter> + <parameter> + <inject bean="MBeanServer"/> + </parameter> + <parameter> + <inject bean="HornetQSecurityManager"/> + </parameter> + </constructor> + <start ignored="true"/> + <stop ignored="true"/> + </bean> + + <!-- The Stand alone server that controls the jndi server--> + <bean name="StandaloneServer" class="org.hornetq.jms.server.impl.StandaloneNamingServer"> + <constructor> + <parameter> + <inject bean="HornetQServer"/> + </parameter> + </constructor> + <property name="port">${jnp.port:1099}</property> + <property name="bindAddress">${jnp.host:localhost}</property> + <property name="rmiPort">${jnp.rmiPort:1098}</property> + <property name="rmiBindAddress">${jnp.host:localhost}</property> + </bean> + + <!-- The JMS server --> + <bean name="JMSServerManager" class="org.hornetq.jms.server.impl.JMSServerManagerImpl"> + <constructor> + <parameter> + <inject bean="HornetQServer"/> + </parameter> + </constructor> + </bean> + + +</deployment></programlisting> + </para> + <para>We can see that, as well as the core HornetQ server, the stand-alone server + instantiates various different POJOs, let's look at them in turn:</para> + <itemizedlist> + <listitem> + <para>MBeanServer</para> + <para>In order to provide a JMX management interface a JMS MBean server is necessary + in which to register the management objects. Normally this is just the default + platform MBean server available in the JVM instance. If you don't want to + provide a JMX management interface this can be commented out or removed.</para> + </listitem> + <listitem> + <para>Configuration</para> + <para>The HornetQ server is configured with a Configuration object. In the default + stand-alone set-up it uses a FileConfiguration object which knows to read + configuration information from the file system. In different configurations such + as embedded you might want to provide configuration information from somewhere + else.</para> + </listitem> + <listitem> + <para>Security Manager. The security manager used by the messaging server is + pluggable. The default one used just reads user-role information from the + <literal>hornetq-users.xml</literal> file on disk. However it can be + replaced by a JAAS security manager, or when running inside JBoss Application + Server it can be configured to use the JBoss AS security manager for tight + integration with JBoss AS security. If you've disabled security altogether you + can remove this too.</para> + </listitem> + <listitem> + <para>HornetQServer</para> + <para>This is the core server. It's where 99% of the magic happens</para> + </listitem> + <listitem> + <para>StandaloneServer</para> + <para>Many clients like to look up JMS Objects from JNDI so we provide a JNDI server + for them to do that. This class is a wrapper around the JBoss naming server. + If you don't need JNDI this can be commented out or removed.</para> + </listitem> + <listitem id="bean-jmsservermanager"> + <para>JMSServerManager</para> + <para>This deploys any JMS Objects such as JMS Queues, Topics and ConnectionFactory + instances from <literal>hornetq-jms.xml</literal> files on the disk. It also + provides a simple management API for manipulating JMS Objects. On the whole it + just translates and delegates its work to the core server. If you don't need to + deploy JMS Queues, Topics and ConnectionFactorys from server side configuration + and don't require the JMS management interface this can be disabled.</para> + </listitem> + </itemizedlist> + </section> + <section id="server.microkernel.configuration"> + <title>JBoss AS4 MBean Service.</title> + <note> + <para>The section is only to configure HornetQ on JBoss AS4. The service functionality is + similar to Microcontainer Beans</para> + </note> + <para> + <programlisting> +<?xml version="1.0" encoding="UTF-8"?> +<server> + <mbean code="org.hornetq.service.HornetQFileConfigurationService" + name="org.hornetq:service=HornetQFileConfigurationService"> + </mbean> + + <mbean code="org.hornetq.service.JBossASSecurityManagerService" + name="org.hornetq:service=JBossASSecurityManagerService"> + </mbean> + + <mbean code="org.hornetq.service.HornetQStarterService" + name="org.hornetq:service=HornetQStarterService"> + <!--let's let the JMS Server start us--> + <attribute name="Start">false</attribute> + + <depends optional-attribute-name="SecurityManagerService" + proxy-type="attribute">org.hornetq:service=JBossASSecurityManagerService</depends> + <depends optional-attribute-name="ConfigurationService" + proxy-type="attribute">org.hornetq:service=HornetQFileConfigurationService</depends> + </mbean> + + <mbean code="org.hornetq.service.HornetQJMSStarterService" + name="org.hornetq:service=HornetQJMSStarterService"> + <depends optional-attribute-name="HornetQServer" + proxy-type="attribute">org.hornetq:service=HornetQStarterService</depends> + </mbean> +</server></programlisting> + </para> + <para>This jboss-service.xml configuration file is included inside the hornetq-service.sar + on AS4 with embedded HornetQ. As you can see, on this configuration file we are starting + various services:</para> + <itemizedlist> + <listitem> + <para>HornetQFileConfigurationService</para> + <para>This is an MBean Service that takes care of the life cycle of the <literal>FileConfiguration POJO</literal></para> + </listitem> + <listitem> + <para>JBossASSecurityManagerService</para> + <para>This is an MBean Service that takes care of the lifecycle of the <literal>JBossASSecurityManager</literal> POJO</para> + </listitem> + <listitem> + <para>HornetQStarterService</para> + <para>This is an MBean Service that controls the main <literal>HornetQServer</literal> POJO. + this has a dependency on JBossASSecurityManagerService and HornetQFileConfigurationService MBeans</para> + </listitem> + <listitem> + <para>HornetQJMSStarterService</para> + <para>This is an MBean Service that controls the <literal>JMSServerManagerImpl</literal> POJO. + If you aren't using jms this can be removed.</para> + </listitem> + <listitem> + <para>JMSServerManager</para> + <para>Has the responsibility to start the JMSServerManager and the same behaviour that JMSServerManager Bean</para> + </listitem> + </itemizedlist> + </section> + <section id="usingserver.mainconfig"> + <title>The main configuration file.</title> + <para>The configuration for the HornetQ core server is contained in <literal + >hornetq-configuration.xml</literal>. This is what the FileConfiguration bean uses + to configure the messaging server.</para> + <para>There are many attributes which you can configure HornetQ. In most cases the defaults + will do fine, in fact every attribute can be defaulted which means a file with a single + empty <literal>configuration</literal> element is a valid configuration file. The + different configuration will be explained throughout the manual or you can refer to the + configuration reference <link linkend="configuration-index">here</link>.</para> + </section> +</chapter> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/en/vertx-integration.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/vertx-integration.xml b/docs/user-manual/en/vertx-integration.xml new file mode 100644 index 0000000..71bb110 --- /dev/null +++ b/docs/user-manual/en/vertx-integration.xml @@ -0,0 +1,115 @@ +<?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. --> +<!-- ============================================================================= --> + +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ + <!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_User_Manual.ent"> + %BOOK_ENTITIES; + ]> +<chapter id="vertx-integration"> + <title>Vert.x Integration</title> + <para><ulink url="http://vertx.io/">Vert.x</ulink> is a lightweight, high performance application platform for the + JVM that's designed for modern mobile, web, and enterprise applications. Vert.x provides a distributed event bus that + allows messages to be sent across vert.x instances and clients. You can now redirect and persist any vert.x messages + to HornetQ and route those messages to a specified vertx address by configuring HornetQ vertx incoming and outgoing + vertx connector services. + </para> + + <section> + <title>Configuring a Vertx Incoming Connector Service</title> + <para>Vertx Incoming Connector services receive messages from vertx event bus and route them to a HornetQ queue. + Such a service can be configured as follows:</para> + <programlisting> + <connector-service name="vertx-incoming-connector"> + <factory-class>org.hornetq.integration.vertx.VertxIncomingConnectorServiceFactory</factory-class> + <param key="host" value="127.0.0.1"/> + <param key="port" value="0"/> + <param key="queue" value="jms.queue.vertxQueue"/> + <param key="vertx-address" value="vertx.in.eventaddress"/> + </connector-service> + </programlisting> + <para>Shown are the required params for the connector service:</para> + <itemizedlist> + <listitem> + <para><literal>queue</literal>. The name of the HornetQ queue to send message to.</para> + </listitem> + </itemizedlist> + <para>As well as these required paramaters there are the following optional parameters</para> + <itemizedlist> + <listitem> + <para><literal>host</literal>. The host name on which the vertx target container is running. Default is localhost.</para> + </listitem> + <listitem> + <para><literal>port</literal>. The port number to which the target vertx listens. Default is zero.</para> + </listitem> + <listitem> + <para><literal>quorum-size</literal>. The quorum size of the target vertx instance.</para> + </listitem> + <listitem> + <para><literal>ha-group</literal>. The name of the ha-group of target vertx instance. Default is <literal>hornetq</literal>.</para> + </listitem> + <listitem> + <para><literal>vertx-address</literal>. The vertx address to listen to. default is org.hornetq.</para> + </listitem> + </itemizedlist> + </section> + + <section> + <title>Configuring a Vertx Outgoing Connector Service</title> + <para>Vertx Outgoing Connector services fetch vertx messages from a HornetQ queue and put them to vertx event bus. + Such a service can be configured as follows:</para> + <programlisting> + <connector-service name="vertx-outgoing-connector"> + <factory-class>org.hornetq.integration.vertx.VertxOutgoingConnectorServiceFactory</factory-class> + <param key="host" value="127.0.0.1"/> + <param key="port" value="0"/> + <param key="queue" value="jms.queue.vertxQueue"/> + <param key="vertx-address" value="vertx.out.eventaddress"/> + <param key="publish" value="true"/> + </connector-service> + </programlisting> + <para>Shown are the required params for the connector service:</para> + <itemizedlist> + <listitem> + <para><literal>queue</literal>. The name of the HornetQ queue to fetch message from.</para> + </listitem> + </itemizedlist> + <para>As well as these required paramaters there are the following optional parameters</para> + <itemizedlist> + <listitem> + <para><literal>host</literal>. The host name on which the vertx target container is running. Default is localhost.</para> + </listitem> + <listitem> + <para><literal>port</literal>. The port number to which the target vertx listens. Default is zero.</para> + </listitem> + <listitem> + <para><literal>quorum-size</literal>. The quorum size of the target vertx instance.</para> + </listitem> + <listitem> + <para><literal>ha-group</literal>. The name of the ha-group of target vertx instance. Default is <literal>hornetq</literal>.</para> + </listitem> + <listitem> + <para><literal>vertx-address</literal>. The vertx address to put messages to. default is org.hornetq.</para> + </listitem> + <listitem> + <para><literal>publish</literal>. How messages is sent to vertx event bus. "true" means using publish style. + "false" means using send style. Default is false.</para> + </listitem> + </itemizedlist> + </section> +</chapter> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/en/wildcard-routing.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/wildcard-routing.xml b/docs/user-manual/en/wildcard-routing.xml new file mode 100644 index 0000000..44f0f75 --- /dev/null +++ b/docs/user-manual/en/wildcard-routing.xml @@ -0,0 +1,43 @@ +<?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. --> +<!-- ============================================================================= --> + +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_User_Manual.ent"> +%BOOK_ENTITIES; +]> + +<chapter id="wildcard-routing"> + <title>Routing Messages With Wild Cards</title> + <para>HornetQ allows the routing of messages via wildcard addresses.</para> + <para>If a queue is created with an address of say <literal>queue.news.#</literal> then it + will receive any messages sent to addresses that match this, for instance <literal + >queue.news.europe</literal> or <literal>queue.news.usa</literal> or <literal + >queue.news.usa.sport</literal>. If you create a consumer on this queue, this allows a consumer to consume messages which are + sent to a <emphasis>hierarchy</emphasis> of addresses.</para> + <note> + <para>In JMS terminology this allows "topic hierarchies" to be created.</para> + </note> + <para>To enable this functionality set the property <literal>wild-card-routing-enabled</literal> + in the <literal>hornetq-configuration.xml</literal> file to <literal>true</literal>. This is + <literal>true</literal> by default.</para> + <para>For more information on the wild card syntax take a look at <xref + linkend="wildcard-syntax" /> chapter, also see <xref + linkend="topic-hierarchy-example" />.</para> +</chapter> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/en/wildcard-syntax.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/en/wildcard-syntax.xml b/docs/user-manual/en/wildcard-syntax.xml new file mode 100644 index 0000000..b121eb5 --- /dev/null +++ b/docs/user-manual/en/wildcard-syntax.xml @@ -0,0 +1,44 @@ +<?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. --> +<!-- ============================================================================= --> + +<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_User_Manual.ent"> +%BOOK_ENTITIES; +]> + +<chapter id="wildcard-syntax"> + <title>Understanding the HornetQ Wildcard Syntax</title> + <para>HornetQ uses a specific syntax for representing wildcards in security settings, + address settings and when creating consumers.</para> + <para>The syntax is similar to that used by <ulink url="http://www.amqp.org">AMQP</ulink>.</para> + <para>A HornetQ wildcard expression contains words delimited by the character '<literal + >.</literal>' (full stop).</para> + <para>The special characters '<literal>#</literal>' and '<literal>*</literal>' also have special + meaning and can take the place of a word.</para> + <para>The character '<literal>#</literal>' means 'match any sequence of zero or more + words'.</para> + <para>The character '<literal>*</literal>' means 'match a single word'.</para> + <para>So the wildcard 'news.europe.#' would match 'news.europe', 'news.europe.sport', + 'news.europe.politics', and 'news.europe.politics.regional' but would not match 'news.usa', + 'news.usa.sport' nor 'entertainment'.</para> + <para>The wildcard 'news.*' would match 'news.europe', but not 'news.europe.sport'.</para> + <para>The wildcard 'news.*.sport' would match 'news.europe.sport' and also 'news.usa.sport', but + not 'news.europe.politics'.</para> +</chapter> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/pom.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/pom.xml b/docs/user-manual/pom.xml new file mode 100644 index 0000000..549f648 --- /dev/null +++ b/docs/user-manual/pom.xml @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright 2009 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. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hornetq.docs</groupId> + <artifactId>hornetq-docs</artifactId> + <version>2.5.0-SNAPSHOT</version> + </parent> + + <groupId>org.hornetq.docs</groupId> + <artifactId>user-manual</artifactId> + <version>1.0</version> + <packaging>jdocbook</packaging> + <name>user-manual</name> + + <properties> + <translation>en</translation> + <docname>HornetQ_User_Manual</docname> + <bookname>HornetQ User Manual</bookname> + </properties> + + <repositories> + <repository> + <id>jboss-public-repository-group</id> + <name>JBoss Public Maven Repository Group</name> + <url>https://repository.jboss.org/nexus/content/groups/public/</url> + <layout>default</layout> + <releases> + <enabled>true</enabled> + <updatePolicy>never</updatePolicy> + </releases> + <snapshots> + <enabled>true</enabled> + <updatePolicy>never</updatePolicy> + </snapshots> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>jboss-public-repository-group</id> + <name>JBoss Public Maven Repository Group</name> + <url>https://repository.jboss.org/nexus/content/groups/public/</url> + <layout>default</layout> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + <!--pluginRepository> + <id>jboss-snapshot-repository-group</id> + <name>JBoss Snapshot Maven Repository Group</name> + <url>https://repository.jboss.org/nexus/content/groups/snapshot/</url> + <layout>default</layout> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository--> + </pluginRepositories> + + <profiles> + <!-- mvn compile --> + <profile> + <id>all</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.3.5</version> + <extensions>true</extensions> + <configuration> + <formats> + <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${docname}.pdf</finalName> + </format> + <format> + <formatName>html</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + <format> + <formatName>html_single</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + </formats> + </configuration> + </plugin> + </plugins> + </build> + </profile> + + <!-- mvn compile -Phtml --> + <profile> + <id>html</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <configuration> + <formats> + <format> + <formatName>html</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + </formats> + </configuration> + </plugin> + </plugins> + </build> + </profile> + + <!-- mvn compile -Phtml-single --> + <profile> + <id>html-single</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + </plugin> + </plugins> + </build> + </profile> + + <!-- mvn compile -Ppdf --> + <profile> + <id>pdf</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <configuration> + <formats> + <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${docname}.pdf</finalName> + </format> + </formats> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> + + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <dependencies> + <dependency> + <groupId>org.jboss.pressgang</groupId> + <artifactId>pressgang-xslt</artifactId> + <version>2.0.2</version> + </dependency> + <dependency> + <groupId>org.jboss</groupId> + <artifactId>jbossorg-jdocbook-style</artifactId> + <version>1.1.1</version> + <type>jdocbook-style</type> + </dependency> + </dependencies> + <configuration> + <sourceDirectory>${project.basedir}</sourceDirectory> + <sourceDocumentName>${docname}.xml</sourceDocumentName> + <masterTranslation>en</masterTranslation> + <imageResource> + <directory>${project.basedir}/en</directory> + <includes> + <include>images/*.png</include> + <include>images/*.jpg</include> + </includes> + </imageResource> + <formats> + <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${pdf.name}</finalName> + </format> + <format> + <formatName>html</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + <format> + <formatName>html_single</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + </formats> + <options> + <xincludeSupported>true</xincludeSupported> + <xmlTransformerType>saxon</xmlTransformerType> + <docbookVersion>1.72.0</docbookVersion> + <localeSeparator>-</localeSeparator> + <applyStandardInjectionValues>false</applyStandardInjectionValues> + <transformerParameters> + <property> + <name>javax.xml.parsers.DocumentBuilderFactory</name> + <value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value> + </property> + <property> + <name>javax.xml.parsers.SAXParserFactory</name> + <value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value> + </property> + </transformerParameters> + </options> + </configuration> + </plugin> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>xml-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>transform</goal> + </goals> + </execution> + </executions> + <configuration> + <transformerFactory>net.sf.saxon.TransformerFactoryImpl</transformerFactory> + <transformationSets> + <transformationSet> + <dir>../../hornetq-server/src/main/resources/schema</dir> + <stylesheet>./src/main/resources/schemaToTable.xsl</stylesheet> + <includes> + <include>hornetq-configuration.xsd</include> + </includes> + <fileMappers> + <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper"> + <targetExtension>.xml</targetExtension> + </fileMapper> + </fileMappers> + </transformationSet> + <transformationSet> + <dir>../../hornetq-jms-server/src/main/resources/schema</dir> + <stylesheet>./src/main/resources/schemaToTable.xsl</stylesheet> + <includes> + <include>hornetq-jms.xsd</include> + </includes> + <fileMappers> + <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper"> + <targetExtension>.xml</targetExtension> + </fileMapper> + </fileMappers> + </transformationSet> + </transformationSets> + </configuration> + <dependencies> + <dependency> + <groupId>net.sf.saxon</groupId> + <artifactId>saxon</artifactId> + <version>8.7</version> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + + <!--<build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <dependencies> + <dependency> + <groupId>org.jboss.pressgang</groupId> + <artifactId>pressgang-xslt</artifactId> + <version>1.2.0</version> + </dependency> + <dependency> + <groupId>org.jboss</groupId> + <artifactId>jbossorg-jdocbook-style</artifactId> + <version>1.1.1</version> + <type>jdocbook-style</type> + </dependency> + </dependencies> + <configuration> + <sourceDocumentName>${docname}.xml</sourceDocumentName> + <sourceDirectory>.</sourceDirectory> + <imageResource> + <directory>${translation}</directory> + <includes> + <include>images/*</include> + </includes> + </imageResource> + <options> + <xincludeSupported>true</xincludeSupported> + <xmlTransformerType>saxon</xmlTransformerType> + <transformerParameters> + <property> + <name>javax.xml.parsers.DocumentBuilderFactory</name> + <value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value> + </property> + <property> + <name>javax.xml.parsers.SAXParserFactory</name> + <value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value> + </property> + </transformerParameters> + </options> + </configuration> + </plugin> + </plugins> + </build>--> +</project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/publican.cfg ---------------------------------------------------------------------- diff --git a/docs/user-manual/publican.cfg b/docs/user-manual/publican.cfg new file mode 100644 index 0000000..821b348 --- /dev/null +++ b/docs/user-manual/publican.cfg @@ -0,0 +1,7 @@ +# Config::Simple 4.59 +# Tue Mar 29 06:11:07 2011 + +xml_lang: en +type: Book +brand: common +