type=page
status=published
title=configuration
next=domain.html
prev=application.html
~~~~~~

configuration
=============

[[configuration-5asc]][[GSRFM00266]][[configuration]]

configuration
-------------

The data set that determines how \{product---name} operates

[[sthref2394]]

=== Description

The configuration of \{product---name} is the data set that determines
how it operates. Parts of this configuration determine the operation of
specific parts of \{product---name}, such as the following:

* Services, such as the transaction service
* Resources, such as databases
* Deployed applications or modules, such as web applications
* Clusters and server instances

The term configuration is also used to describe a part of the overall
configuration, such as the transaction service configuration or the
configuration of a database. In clustered environments, clusters or
server instances can share configurations.

Examples of configuration data are port numbers, flags that enable or
disable processes, application names, and so on. Most of these data
points are name/value pairs, either hard-coded attributes or more
flexibly defined properties.

The hierarchical structure of the configuration is explained in the
dotted names page. You can view and change most of the \{product---name}
configuration using either the Administration Console or the `asadmin`
utility and its subcommands. To list the structure of all or part of the
configuration, use the `list` subcommand. To view the value of one or
more attributes or properties, use the `get` subcommand. To change the
value of an attribute or property, use the `set` subcommand.

[[sthref2395]]

=== See Also

link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
link:set.html#set-1[`set`(1)]

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

link:dotted-names.html#dotted-names-5asc[`dotted-names`(5ASC)]

"link:../administration-guide/overview.html#GSADG00527[Configuration Tasks]" in GlassFish Server Open Source
Edition Administration Guide


