HornetQ was introduced in EAP5/AS5.  In that version of the server, HornetQ configuration metadata was spread over a set of XML files.

  • hornetq-configuration.xml
  • connection-factories-service.xml
  • destinations-service.xml
  • messaging-service.xml

 

In compliance with EAP6 and AS7's configuration model its metadata was moved into a "messaging" subsystem[1].  In this new design a 1:1 mapping between old XML and the new could not be maintained.

 

The attached zip file contains Windup rules that will assist migration of your HornetQ configuration data.  The rules check for the old style config files and run the contents through an XSLT transformation whose output can be cut and pasted into the server messaging subsystem.

 

You need a buildable copy of Windup[2].  Unzip the attached zip file in its base directory.  Build Windup and run as directed  here

 

 

Here is the metadata mapping between the old and new systems.

 

HornetQ config filesMessaging subsystem
<configuration> tag<hornetq-server>   ;replaces that tag
configuration.clusteredhornetq-server.clustered    ;Deprecated. .. is considered clustered if it has at least one cluster-connection.
dose not existhornetq-server.security-domain   ; only in subsystem
configuration.password-codecdoes not exist
configuration.mask-passworddoes not exist
configuration.log-delegate-factory-class-namedoes not exist
configuration.paging-directoryhornetq-server.paging-directory relative-to="" path=""  ; attrib additons or relative-to and path
configuration.bindings-directoryhornetq-server.bindings-directory relative-to="" path=""  ; attrib additons or relative-to and path
configuration.journal-directoryhornetq-server.journal-directory relative-to="" path=""  ; attrib additons or relative-to and path
configuration.large-messages-directoryhornetq-server.large-messages-directory relative-to="" path=""  ; attrib additons or relative-to and path

There is a major difference in the connector XML.  All connector def use a single template

      <connector name="##REQUIRED##" >
           <factory-class>##STRING##</factory-class>
           <param key="##REQUIRED##"   value="##REQUIRED##"/>
      </connector>

This XML has 3 different templates depending on the connector type.

 

<netty-connector name="##REQUIRED##"

                         socket-binding="##REQUIRED##">
          <param key="##REQUIRED##" value="##REQUIRED##"/>
</netty-connector>


<in-vm-connector  name="##REQUIRED##"

                           server-id="##OPTIONAL##">
           <param key="##REQUIRED##" value="##REQUIRED##"/>
</in-vm-connector>


<connector name="##REQUIRED##"

                 socket-binding="##OPTIONAL##">
            <param key="##REQUIRED##" value="##REQUIRED##"/>
            <factory-class>##STRING##</factory-class>
</connector>

There is a major difference in the acceptor XML.  All acceptor def use a single template

 

<acceptor name="##OPTIONAL##" >
        <factory-class>##STRING##</factory-class>
         <param key="##REQUIRED##" value="##REQUIRED##"/>
</acceptor>

This XML has 3 different templates depending on the acceptor type.

 

<netty-acceptor name="##OPTIONAL##" socket-binding="##REQUIRED##">
            <param key="##REQUIRED##" value="##REQUIRED##"/>
</netty-acceptor>


<in-vm-acceptor name="##OPTIONAL##"  server-id="##OPTIONAL##">
            <param key="##REQUIRED##" value="##REQUIRED##"/>
</in-vm-acceptor>


<acceptor name="##OPTIONAL##"  server-id="##OPTIONAL##">
            <factory-class>##STRING##</factory-class>
</acceptor>

 

broadcast-group.jgroups-file

broadcast-group.jgroups-stack  ; does this replace jgroups-file?

 

broadcast-group.socket-binding


broadcast-group.local-bind-address  ; Deprecated. use socket-binding instead

broadcast-group.local-bind-port  ; Deprecated. use socket-binding instead

broadcast-group.group-address  ; Deprecated. use socket-binding instead

broadcast-group.group-port  ; Deprecated. use socket-binding instead

discovery-group.jgroups-file

discovery-group.jgroups-stack  ; does this replace jgroups-file?

 

discovery-group.socket-binding


discovery-group.local-bind-address  ; Deprecated. use socket-binding instead

discovery-group.local-bind-port  ; Deprecated. use socket-binding instead

discovery-group.group-address  ; Deprecated. use socket-binding instead

discovery-group.group-port  ; Deprecated. use socket-binding instead

bridges.failover-on-server-shutdown  ; Deprecated. ignored
bridges.reconnect-attempts-same-nodedoes not exist
address-settings.address-setting.expiry-delaynot supported
address-settings.address-setting.redelivery-delay-multipliernot supported
address-settings.address-setting.max-redelivery-delaynot supported
address-settings.address-setting.max-delivery-attemptsnot supported
address-settings.address-setting.address-full-policy  ; an ENUM defines legal valuesENUM value 'FAIL' is not offered.
configuration is the tagjms-connection-factories    ;the tag being used.
<connection-factory name=""  "signature="">

<connection-factory name=""  "signature="">   ; attribute removed

 

jms-connection-factories.connection-factory.factory-type  ; new in subsystem.  It is an ENUM.  Does it replace attribute signature?

configuration.jmx-domaindoes not exist
connection-factory.xadoes not exist
connection-factory.failover-on-server-shutdownDeprecated. and ignored
jms-connection-factories.connection-factory.group-id
jms-connection-factories.pooled-connection-factory
hornetq-server.jms-destinations
jms-bridge

 

 

 

Resources

[1] $SERVER_HOME/docs/schema/jboss-as-messaging_1_3.xsd.

[2] http://windup.jboss.org