type=page
status=published
title=list-persistence-types
next=list-protocol-filters.html
prev=list-password-aliases.html
~~~~~~
list-persistence-types
======================

[[list-persistence-types-1]][[GSRFM00191]][[list-persistence-types]]

list-persistence-types
----------------------

lists registered persistence types for HTTP sessions and SFSB instances

[[sthref1743]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] list-persistence-types [--help] 
--type={web|ejb}
----

[[sthref1744]]

Description

The `list-persistence-types` subcommand lists registered persistence
types for HTTP sessions and stateful session bean (SFSB) instances. The
built-in persistence types are `memory`, `file`, and `replicated`. The
`memory` type does not apply to SFSB instances.

Other persistence types can be added using the `StrategyBuilder` class.
For more information, see the link:../add-on-component-development-guide/toc.html#GSACG[GlassFish Server Open Source
Edition Add-On Component Development Guide].

To set the persistence type for HTTP sessions, use the `set` subcommand
to set the `persistence-type` attribute. For example:

[source,oac_no_warn]
----
asadmin> set c1-config.availability-service.web-container-availability.persistence-type=file
----

To set the persistence type for SFSB instances without availability
enabled, use the `set` subcommand to set the `sfsb-persistence-type`
attribute. For example:

[source,oac_no_warn]
----
asadmin> set c1-config.availability-service.ejb-container-availability.sfsb-persistence-type=file
----

To set the persistence type for SFSB instances with availability
enabled, use the `set` subcommand to set the `sfsb-ha-persistence-type`
attribute. For example:

[source,oac_no_warn]
----
asadmin> set 
c1-config.availability-service.ejb-container-availability.sfsb-ha-persistence-type=replicated
----

This subcommand is supported in remote mode only.

[[sthref1745]]

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.
`--type`::
  Specifies the type of sessions for which persistence types are listed.
  Allowed values are as follows: +
  * `web` — Lists persistence types for HTTP sessions.
  * `ejb` — Lists persistence types for SFSB instances.

[[sthref1746]]

Examples

[[GSRFM701]][[sthref1747]]

Example 1   Listing Persistence Types for HTTP Sessions

This example lists persistence types for HTTP sessions.

[source,oac_no_warn]
----
asadmin> list-persistence-types --type=web
memory
file
replicated

Command list-persistence-types executed successfully.
----

[[sthref1748]]

Exit Status

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

[[sthref1749]]

See Also

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

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

link:../add-on-component-development-guide/toc.html#GSACG[GlassFish Server Open Source Edition Add-On Component
Development Guide]


