type=page
status=published
title=configure-jms-cluster
next=configure-lb-weight.html
prev=collect-log-files.html
~~~~~~

configure-jms-cluster
=====================

[[configure-jms-cluster-1]][[GSRFM00008]][[configure-jms-cluster]]

configure-jms-cluster
---------------------

Configures the Message Queue cluster providing JMS services to a
{productName} cluster

[[sthref79]]

=== Synopsis

[source]
----
asadmin [asadmin-options] configure-jms-cluster [--help]
[--clustertype={conventional|enhanced}]
[--configstoretype={masterbroker|shareddb}]
[--messagestoretype={file|jdbc}]
[--dbvendor database-vendor]
[--dbuser database-user]
[--dburl database-url]
[--property (name=value)[:name=value]*]
cluster-name
----

[[sthref80]]

=== Description

The `configure-jms-cluster` configures the Message Queue cluster
providing JMS services to a {productName} cluster.

This subcommand should be used before the {productName} cluster is
started for the first time. Otherwise, follow the instructions in
"link:../administration-guide/jms.html#GSADG00020[Administering the Java Message Service (JMS)]" in
GlassFish Server Open Source Edition Administration Guide.

This subcommand is supported in remote mode only. Remote `asadmin`
subcommands require a running domain administration server (DAS).

[[sthref81]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--clustertype`::
  The type of Message Queue cluster to configure. The value
  `conventional` specifies a conventional cluster, and the value
  `enhanced` specifies an enhanced, high-availability cluster. For
  information about these cluster types of Message Queue clusters, see
  "link:../../openmq/mq-tech-over/broker-clusters.html#GMTOV00028[Broker Clusters]"
  in Open Message Queue Technical Overview. +
  The default value is `conventional`. +
  If `enhanced` is specified, the `configstoretype` and
  `messagestoretype` options are ignored.
`--configstoretype`::
  The type of data store for configuration data in a conventional
  cluster. The value `masterbroker` specifies the use of a master broker
  to store and manage the configuration data. The value `shareddb`
  specifies the use of a shared database to store the configuration
  data. +
  The default value is `masterbroker`. +
  This option is ignored if `clustertype` is set to `enhanced`.
`--messagestoretype`::
  The type of data store for message data in brokers in a conventional
  cluster. The value `file` specifies a file store. The value `jdbc`
  specifies a JDBC store. +
  The default value is `file`. +
  This option is ignored if `clustertype` is set to `enhanced`.
`--dbvendor`::
`--dbuser`::
`--dburl`::
  The database vendor, user, and access url of the JDBC database to use
  in any of these situations:
+
--
  * When `clustertype` is set to `enhanced`
  * When `configstoretype` is set to `shareddb`
  * When `messagestoretype` is set to `jdbc`
--
  For information about supported vendors and the formats of access urls
  for each vendor, see "link:../../openmq/mq-admin-guide/persistence-services.html#GMADG00244[JDBC-Based Persistence]" in
  Open Message Queue Administration Guide.
+
[NOTE]
====
To specify the password of the JDBC database user, use the `--passwordfile` utility option
of the link:asadmin.html#asadmin-1m[`asadmin`(1M)] command after adding the entry
`AS_ADMIN_JMSDBPASSWORD` to the password file.
====

`--property`::
  A list of additional database-vendor-specific properties to configure
  the JDBC database for use by the Message Queue cluster. Specify
  properties as a colon (`:`) separated list of property names and
  values in the form:
+
[source]
----
prop1name=prop1value:prop2name=prop2value
----

[[sthref82]]

=== Operands

cluster-name::
  The name of the {productName} cluster for which the Message Queue
  cluster is to provide JMS services. +
  Because {productName} uses the cluster name to uniquely identify
  database tables the Message Queue cluster might require, the length of
  the name is restricted in the following situations:

  * If `clustertype` is set to `enhanced`, the name can be no longer
  than n–21 characters, where n is the maximum table name length allowed
  by the database.
  * If `configstoretype` is set to `shareddb`, the name can be no longer
  than n–19 characters, where n is the maximum table name length allowed
  by the database.

[[sthref83]]

=== Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref84]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]


