type=page
status=published
title=Elements of the GlassFish Server Deployment Descriptors
prev=dd-files.html
~~~~~~
Elements of the GlassFish Server Deployment Descriptors
=======================================================

[[GSDPG00007]][[beaqi]]


[[c-elements-of-the-glassfish-server-deployment-descriptors]]
C Elements of the GlassFish Server Deployment Descriptors
---------------------------------------------------------

This appendix describes the elements of the GlassFish Server Open Source
Editiondeployment descriptors.

[[beaqs]][[GSDPG00085]][[activation-config]]

`activation-config`
~~~~~~~~~~~~~~~~~~~

Specifies an activation configuration, which includes the runtime
configuration properties of the message-driven bean in its operational
environment. For example, this can include information about the name of
a physical JMS destination. Matches and overrides the
`activation-config` element in the `ejb-jar.xml` file.

[[fvyoe]][[GSDPG00335]][[superelements]]

Superelements
^^^^^^^^^^^^^

link:#beaus[`mdb-resource-adapter`] (`glassfish-ejb-jar.xml`)

[[fvynj]][[GSDPG00336]][[subelements]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `activation-config`
element.

[[GSDPG838]][[sthref9]][[fvynw]]


Table C-1 `activation-config` subelements

[width="100%",cols="32%,12%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Specifies a text description of the activation
configuration.

a|
link:#beaqt[`activation-config-property`]


 |one or more |Specifies an activation configuration property.
|=======================================================================


[[beaqt]][[GSDPG00086]][[activation-config-property]]

`activation-config-property`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the name and value of an activation configuration property.

[[fvyne]][[GSDPG00337]][[superelements-1]]

Superelements
^^^^^^^^^^^^^

link:#beaqs[`activation-config`] (`glassfish-ejb-jar.xml`)

[[fvyns]][[GSDPG00338]][[subelements-1]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`activation-config-property` element.

[[GSDPG839]][[sthref10]][[fvynv]]


Table C-2 `activation-config-property` subelements

[width="100%",cols="39%,10%,51%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaqu[`activation-config-property-name`]


 |only one |Specifies the name of an activation configuration property.
a|
link:#beaqv[`activation-config-property-value`]


 |only one |Specifies the value of an activation configuration property.
|=======================================================================


[[beaqu]][[GSDPG00087]][[activation-config-property-name]]

`activation-config-property-name`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the name of an activation configuration property.

[[fvynm]][[GSDPG00339]][[superelements-2]]

Superelements
^^^^^^^^^^^^^

link:#beaqt[`activation-config-property`] (`glassfish-ejb-jar.xml`)

[[fvyok]][[GSDPG00340]][[subelements-2]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaqv]][[GSDPG00088]][[activation-config-property-value]]

`activation-config-property-value`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the value of an activation configuration property.

[[fvyou]][[GSDPG00341]][[superelements-3]]

Superelements
^^^^^^^^^^^^^

link:#beaqt[`activation-config-property`] (`glassfish-ejb-jar.xml`)

[[fvyoz]][[GSDPG00342]][[subelements-3]]

Subelements
^^^^^^^^^^^

none - contains data

[[giyhw]][[GSDPG00089]][[admin-object-resource]]

`admin-object-resource`
~~~~~~~~~~~~~~~~~~~~~~~

Defines an administered object for an inbound resource adapter.

[[GSDPG840]][[sthref11]]


[[superelements-4]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG841]][[sthref12]]


[[subelements-4]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the
`admin-object-resource` element.

[[GSDPG842]][[sthref13]][[sthref14]]


Table C-3 `admin-object-resource` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG843]][[sthref15]]


[[attributes]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `admin-object-resource`
element.

[[GSDPG844]][[sthref16]][[sthref17]]


Table C-4 `admin-object-resource` Attributes

[width="172%",cols="9%,46%,45%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`jndi-name` |none |Specifies the JNDI name for the resource.

|`res-type` |none |Specifies the fully qualified type of the resource.

|`res-adapter` |none |Specifies the name of the inbound resource
adapter.

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`enabled` |`true` |(optional) Determines whether this resource is
enabled at runtime.
|=======================================================================


[[GSDPG845]][[sthref18]]


[[properties]]
Properties
^^^^^^^^^^

Properties of the `admin-object-resource` element are the names of
setter methods of the class referenced by the `adminobject-class` of the
`ra.xml` file. Some of the property names can be specified in the
`adminobjectType` element.

[[beaqw]][[GSDPG00090]][[as-context]]

`as-context`
~~~~~~~~~~~~

Specifies the authentication mechanism used to authenticate the client.

[[fvyos]][[GSDPG00343]][[superelements-5]]

Superelements
^^^^^^^^^^^^^

link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)

[[fvyom]][[GSDPG00344]][[subelements-5]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `as-context` element.

[[GSDPG846]][[sthref19]][[fvyov]]


Table C-5 `as-context` Subelements

[width="100%",cols="14%,10%,76%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaqx[`auth-method`]


 |only one |Specifies the authentication method. The only supported
value is `USERNAME_PASSWORD`.

a|
link:#beawi[`realm`]


 |only one |Specifies the realm in which the user is authenticated.

a|
link:#beawq[`required`]


 |only one |Specifies whether the authentication method specified in the
`auth-method` element must be used for client authentication.
|=======================================================================


[[gjizj]][[GSDPG00091]][[archive-name]]

`archive-name`
~~~~~~~~~~~~~~

Specifies the name of the archive file. The value of the `archive-name`
element is used to derive the default application name when
`display-name` is not present in the `application.xml` file. The default
application name is the `archive-name` value minus the file extension.
For example, if `archive-name` is `foo.ear`, the default application
name is `foo`.

[[gjizb]][[GSDPG00345]][[superelements-6]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`)

[[gjizg]][[GSDPG00346]][[subelements-6]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaqx]][[GSDPG00092]][[auth-method]]

`auth-method`
~~~~~~~~~~~~~

Specifies the authentication method.

If the parent element is link:#beaqw[`as-context`], the only supported
value is `USERNAME_PASSWORD`.

If the parent element is link:#beauk[`login-config`], specifies the
authentication mechanism for the web service endpoint. As a prerequisite
to gaining access to any web resources protected by an authorization
constraint, a user must be authenticated using the configured mechanism.

[[fvyow]][[GSDPG00347]][[superelements-7]]

Superelements
^^^^^^^^^^^^^

link:#beauk[`login-config`] (`glassfish-web.xml`),
link:#beaqw[`as-context`] (`glassfish-ejb-jar.xml`)

[[fvyop]][[GSDPG00348]][[subelements-7]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaqy]][[GSDPG00093]][[auth-realm]]

`auth-realm`
~~~~~~~~~~~~

JAAS is available on the ACC. Defines the optional configuration for a
JAAS authentication realm. Authentication realms require
provider-specific properties, which vary depending on what a particular
implementation needs. For more information about how to define realms,
see "link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open
Source Edition Application Development Guide.

[[fvyot]][[GSDPG00349]][[superelements-8]]

Superelements
^^^^^^^^^^^^^

link:#bearr[`client-container`] (`sun-acc.xml`)

[[fvyor]][[GSDPG00350]][[subelements-8]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `auth-realm` element.

[[GSDPG847]][[sthref20]][[fvyol]]


Table C-6 `auth-realm` subelement

[width="100%",cols="36%,14%,50%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyoy]][[GSDPG00351]][[attributes-1]]

`Attributes`
^^^^^^^^^^^^

The following table describes attributes for the `auth-realm` element.

[[GSDPG848]][[sthref21]][[fvypa]]


Table C-7 `auth-realm` attributes

[width="100%",cols="18%,13%,69%",options="header",]
|======================================================================
|Attribute |Default |Description
|`name` |none |Defines the name of this realm.
|`classname` |none |Defines the Java class which implements this realm.
|======================================================================


[[fvyox]][[GSDPG00352]][[example]]

Example
^^^^^^^

Here is an example of the default file realm:

[source,oac_no_warn]
----
<auth-realm name="file"
   classname="com.sun.enterprise.security.auth.realm.file.FileRealm">
   <property name="file" value="domain-dir/config/keyfile"/>
   <property name="jaas-context" value="fileRealm"/>
</auth-realm>
----

Which properties an `auth-realm` element uses depends on the value of
the `auth-realm` element's `name` attribute. The file realm uses `file`
and `jaas-context` properties. Other realms use different properties.
See "link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open
Source Edition Application Development Guide.

[[giyjv]][[GSDPG00094]][[backend-principal]]

`backend-principal`
~~~~~~~~~~~~~~~~~~~

Specifies the user name and password required by the Enterprise
Information System (EIS).

[[GSDPG849]][[sthref22]]


[[superelements-9]]
Superelements
^^^^^^^^^^^^^

link:#giyhy[`security-map`] (`glassfish-resources.xml`)

[[GSDPG850]][[sthref23]]


[[subelements-9]]
Subelements
^^^^^^^^^^^

none

[[GSDPG851]][[sthref24]]


[[attributes-2]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `backend-principal`
element.

[[GSDPG852]][[sthref25]][[sthref26]]


Table C-8 `backend-principal` Attributes

[width="100%",cols="26%,17%,57%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`user-name` |none |Specifies the user name required by the EIS.

|`password` |none |(optional) Specifies the password required by the
EIS, if any.
|=======================================================================


[[beara]][[GSDPG00095]][[bean-cache]]

`bean-cache`
~~~~~~~~~~~~

Specifies the entity bean cache properties. Used for entity beans and
stateful session beans.

[[fvyoq]][[GSDPG00353]][[superelements-10]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyon]][[GSDPG00354]][[subelements-10]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `bean-cache` element.

[[GSDPG853]][[sthref27]][[fvypb]]


Table C-9 `bean-cache` Subelements

[width="100%",cols="35%,11%,54%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beauo[`max-cache-size`]


 |zero or one |Specifies the maximum number of beans allowable in cache.

a|
link:#beatp[`is-cache-overflow-allowed`]


 |zero or one |Deprecated.

a|
link:#bearg[`cache-idle-timeout-in-seconds`]


 |zero or one |Specifies the maximum time that a stateful session bean
or entity bean is allowed to be idle in cache before being passivated.
Default value is 10 minutes (600 seconds).

a|
link:#beawl[`removal-timeout-in-seconds`]


 |zero or one |Specifies the amount of time a bean remains before being
removed. If `removal-timeout-in-seconds` is less than `idle-timeout`,
the bean is removed without being passivated.

a|
link:#beaws[`resize-quantity`]


 |zero or one |Specifies the number of beans to be created if the pool
is empty (subject to the `max-pool-size` limit). Values are from 0 to
MAX_INTEGER.

a|
link:#beayp[`victim-selection-policy`]


 |zero or one |Specifies the algorithm that must be used by the
container to pick victims. Applies only to stateful session beans.
|=======================================================================


[[fvyoo]][[GSDPG00355]][[example-1]]

Example
^^^^^^^

[source,oac_no_warn]
----
<bean-cache>
   <max-cache-size>100</max-cache-size>
   <cache-resize-quantity>10</cache-resize-quantity>
   <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
   <victim-selection-policy>LRU</victim-selection-policy>
      <cache-idle-timeout-in-seconds>600</cache-idle-timeout-in-seconds>
   <removal-timeout-in-seconds>5400</removal-timeout-in-seconds>
</bean-cache>
----

[[bearb]][[GSDPG00096]][[bean-pool]]

`bean-pool`
~~~~~~~~~~~

Specifies the pool properties of stateless session beans, entity beans,
and message-driven bean.

[[fvypc]][[GSDPG00356]][[superelements-11]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvypd]][[GSDPG00357]][[subelements-11]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `bean-pool` element.

[[GSDPG854]][[sthref28]][[fvypg]]


Table C-10 `bean-pool` Subelements

[width="100%",cols="34%,11%,55%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxt[`steady-pool-size`]


 |zero or one |Specifies the initial and minimum number of beans
maintained in the pool. Default is 32.

a|
link:#beaws[`resize-quantity`]


 |zero or one |Specifies the number of beans to be created if the pool
is empty (subject to the `max-pool-size` limit). Values are from 0 to
MAX_INTEGER.

a|
link:#beaup[`max-pool-size`]


 |zero or one |Specifies the maximum number of beans in the pool. Values
are from 0 to MAX_INTEGER. Default is to the EJB container value or 60.

a|
link:#beauq[`max-wait-time-in-millis`]


 |zero or one |Deprecated.

a|
link:#beavr[`pool-idle-timeout-in-seconds`]


 |zero or one |Specifies the maximum time that a bean is allowed to be
idle in the pool. After this time, the bean is removed. This is a hint
to the server. Default time is 600 seconds (10 minutes).
|=======================================================================


[[fvypf]][[GSDPG00358]][[example-2]]

Example
^^^^^^^

[source,oac_no_warn]
----
<bean-pool>
   <steady-pool-size>10</steady-pool-size>
   <resize-quantity>10</resize-quantity>
   <max-pool-size>100</max-pool-size>
   <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
</bean-pool>
----

[[beard]][[GSDPG00097]][[cache]]

`cache`
~~~~~~~

Configures caching for web application components.

[[fvype]][[GSDPG00359]][[superelements-12]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvypl]][[GSDPG00360]][[subelements-12]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cache` element.

[[GSDPG855]][[sthref29]][[fvyrd]]


Table C-11 `cache` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beare[`cache-helper`]


 |zero or more |Specifies a custom class that implements the CacheHelper
interface.

a|
link:#beasm[`default-helper`]


 |zero or one |Allows you to change the properties of the default,
built-in link:#beare[`cache-helper`] class.

a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a cache property, which has a name and a
value.

a|
link:#bearh[`cache-mapping`]


 |zero or more |Maps a URL pattern or a servlet name to its cacheability
constraints.
|=======================================================================


[[fvypj]][[GSDPG00361]][[attributes-3]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `cache` element.

[[GSDPG856]][[sthref30]][[fvyrt]]


Table C-12 `cache` Attributes

[width="172%",cols="14%,46%,40%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`max-entries` |`4096` |(optional) Specifies the maximum number of
entries the cache can contain. Must be a positive integer.

|`timeout-in-seconds` |`30` |(optional) Specifies the maximum amount of
time in seconds that an entry can remain in the cache after it is
created or refreshed. Can be overridden by a link:#beayg[`timeout`]
element.

|`enabled` |`true` |(optional) Determines whether servlet and JSP
caching is enabled.
|=======================================================================


[[fvypx]][[GSDPG00362]][[properties-1]]

Properties
^^^^^^^^^^

The following table describes properties for the `cache` element.

[[GSDPG857]][[sthref31]][[fvyqr]]


Table C-13 `cache` Properties

[width="100%",cols="24%,23%,53%",options="header",]
|=======================================================================
|Property |Default |Description
|`cacheClassName` |`com.sun.appserv.web.cache.LruCache` |Specifies the
fully qualified name of the class that implements the cache
functionality. See link:#fvyrn[Cache Class Names] for possible values.

|`MultiLRUSegmentSize` |`4096` |Specifies the number of entries in a
segment of the cache table that should have its own LRU (least recently
used) list. Applicable only if `cacheClassName` is set to
`com.sun.appserv.web.cache.MultiLruCache`.

|`MaxSize` |unlimited; `Long.MAX_VALUE` |Specifies an upper bound on the
cache memory size in bytes (KB or MB units). Example values are `32 KB`
or `2 MB`. Applicable only if `cacheClassName` is set to
`com.sun.appserv.web.cache.BoundedMultiLruCache`.
|=======================================================================


[[fvyrn]][[GSDPG00363]][[cache-class-names]]

Cache Class Names
^^^^^^^^^^^^^^^^^

The following table lists possible values of the `cacheClassName`
property.

[[GSDPG858]][[sthref32]][[fvyph]]


Table C-14 `cacheClassName` Values

[width="100%",cols="31%,69%",options="header",]
|=======================================================================
|Value |Description
|`com.sun.appserv.web.cache.LruCache` |A bounded cache with an LRU
(least recently used) cache replacement policy.

|`com.sun.appserv.web.cache.BaseCache` |An unbounded cache suitable if
the maximum number of entries is known.

|`com.sun.appserv.web.cache.MultiLruCache` |A cache suitable for a large
number of entries (>4096). Uses the `MultiLRUSegmentSize` property.

|`com.sun.appserv.web.cache.BoundedMultiLruCache` |A cache suitable for
limiting the cache size by memory rather than number of entries. Uses
the `MaxSize` property.
|=======================================================================


[[beare]][[GSDPG00098]][[cache-helper]]

`cache-helper`
~~~~~~~~~~~~~~

Specifies a class that implements the
com.sun.appserv.web.cache.CacheHelper interface.

[[fvyqy]][[GSDPG00364]][[superelements-13]]

Superelements
^^^^^^^^^^^^^

link:#beard[`cache`] (`glassfish-web.xml`)

[[fvyru]][[GSDPG00365]][[subelements-13]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cache-helper`
element.

[[GSDPG859]][[sthref33]][[fvyql]]


Table C-15 `cache-helper` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyqu]][[GSDPG00366]][[attributes-4]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `cache-helper` element.

[[GSDPG860]][[sthref34]][[fvyrp]]


Table C-16 `cache-helper` Attributes

[width="181%",cols="8%,49%,43%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |`default` |Specifies a unique name for the helper class, which
is referenced in the link:#bearh[`cache-mapping`] element.

|`class-name` |none |Specifies the fully qualified class name of the
cache helper, which must implement the com.sun.appserv.web.CacheHelper
interface.
|=======================================================================


[[bearf]][[GSDPG00099]][[cache-helper-ref]]

`cache-helper-ref`
~~~~~~~~~~~~~~~~~~

Specifies the `name` of the link:#beare[`cache-helper`] used by the
parent link:#bearh[`cache-mapping`] element.

[[fvypq]][[GSDPG00367]][[superelements-14]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvyqs]][[GSDPG00368]][[subelements-14]]

Subelements
^^^^^^^^^^^

none - contains data

[[bearg]][[GSDPG00100]][[cache-idle-timeout-in-seconds]]

`cache-idle-timeout-in-seconds`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the maximum time that a bean can remain idle in the cache.
After this amount of time, the container can passivate this bean. A
value of `0` specifies that beans never become candidates for
passivation. Default is 600.

Applies to stateful session beans and entity beans.

[[fvyqc]][[GSDPG00369]][[superelements-15]]

Superelements
^^^^^^^^^^^^^

link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)

[[fvyqo]][[GSDPG00370]][[subelements-15]]

Subelements
^^^^^^^^^^^

none - contains data

[[bearh]][[GSDPG00101]][[cache-mapping]]

`cache-mapping`
~~~~~~~~~~~~~~~

Maps a URL pattern or a servlet name to its cacheability constraints.

[[fvyqi]][[GSDPG00371]][[superelements-16]]

Superelements
^^^^^^^^^^^^^

link:#beard[`cache`] (`glassfish-web.xml`)

[[fvyqn]][[GSDPG00372]][[subelements-16]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cache-mapping`
element.

[[GSDPG861]][[sthref35]][[fvypt]]


Table C-17 `cache-mapping` Subelements

[width="100%",cols="20%,30%,50%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxo[`servlet-name`]


 |requires one `servlet-name` or `url-pattern` |Contains the name of a
servlet.

a|
link:#beayl[`url-pattern`]


 |requires one `servlet-name` or `url-pattern` |Contains a servlet URL
pattern for which caching is enabled.

a|
link:#bearf[`cache-helper-ref`]


 |required if `dispatcher`, `timeout`, `refresh-field`, `http-method`,
`key-field`, and `constraint-field` are not used |Contains the `name` of
the link:#beare[`cache-helper`] used by the parent `cache-mapping`
element.

a|
link:#beasp[`dispatcher`]


 |zero or one if `cache-helper-ref` is not used |Contains a
comma-separated list of `RequestDispatcher` methods for which caching is
enabled.

a|
link:#beayg[`timeout`]


 |zero or one if `cache-helper-ref` is not used |Contains the
link:#bearh[`cache-mapping`] specific maximum amount of time in seconds
that an entry can remain in the cache after it is created or refreshed.

a|
link:#beawj[`refresh-field`]


 |zero or one if `cache-helper-ref` is not used |Specifies a field that
gives the application component a programmatic way to refresh a cached
entry.

a|
link:#beatk[`http-method`]


 |zero or more if `cache-helper-ref` is not used |Contains an HTTP
method that is eligible for caching.

a|
link:#beatz[`key-field`]


 |zero or more if `cache-helper-ref` is not used |Specifies a component
of the key used to look up and extract cache entries.

a|
link:#bease[`constraint-field`]


 |zero or more if `cache-helper-ref` is not used |Specifies a
cacheability constraint for the given `url-pattern` or `servlet-name`.
|=======================================================================


[[beari]][[GSDPG00102]][[call-property]]

`call-property`
~~~~~~~~~~~~~~~

Specifies JAX-RPC property values that can be set on a
`javax.xml.rpc.Call` object before it is returned to the web service
client. The property names can be any properties supported by the
JAX-RPC `Call` implementation.

[[fvyri]][[GSDPG00373]][[superelements-17]]

Superelements
^^^^^^^^^^^^^

link:#beavt[`port-info`], link:#beaxk[`service-ref`]
(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyqp]][[GSDPG00374]][[subelements-17]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `call-property`
element.

[[GSDPG862]][[sthref36]][[fvyrw]]


Table C-18 `call-property` subelements

[width="100%",cols="24%,12%,64%",options="header",]
|=============================================
|Element |Required |Description
a|
link:#beavf[`name`]


 |only one |Specifies the name of the entity.
a|
link:#beayo[`value`]


 |only one |Specifies the value of the entity.
|=============================================


[[bearj]][[GSDPG00103]][[caller-propagation]]

`caller-propagation`
~~~~~~~~~~~~~~~~~~~~

Specifies whether the target accepts propagated caller identities. The
values are `NONE`, `SUPPORTED`, or `REQUIRED`.

[[fvyqj]][[GSDPG00375]][[superelements-18]]

Superelements
^^^^^^^^^^^^^

link:#beaxb[`sas-context`] (`glassfish-ejb-jar.xml`)

[[fvyrb]][[GSDPG00376]][[subelements-18]]

Subelements
^^^^^^^^^^^

none - contains data

[[beark]][[GSDPG00104]][[cert-db]]

`cert-db`
~~~~~~~~~

Not implemented. Included for backward compatibility only. Attribute
values are ignored.

[[fvyqa]][[GSDPG00377]][[superelements-19]]

Superelements
^^^^^^^^^^^^^

link:#beaxf[`security`] (`sun-acc.xml`)

[[fvyre]][[GSDPG00378]][[subelements-19]]

Subelements
^^^^^^^^^^^

none

[[fvyrr]][[GSDPG00379]][[attributes-5]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `cert-db` element.

[[GSDPG863]][[sthref37]][[fvypo]]


Table C-19 `cert-db` attributes

[width="100%",cols="14%,11%,75%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`path` |none |Specifies the absolute path of the certificate database.

|`password` |none |Specifies the password to access the certificate
database.
|=======================================================================


[[bearl]][[GSDPG00105]][[check-all-at-commit]]

`check-all-at-commit`
~~~~~~~~~~~~~~~~~~~~~

This element is not implemented. Do not use.

[[fvyrj]][[GSDPG00380]][[superelements-20]]

Superelements
^^^^^^^^^^^^^

link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)

[[bearm]][[GSDPG00106]][[check-modified-at-commit]]

`check-modified-at-commit`
~~~~~~~~~~~~~~~~~~~~~~~~~~

Checks concurrent modification of fields in modified beans at commit
time.

[[fvyqf]][[GSDPG00381]][[superelements-21]]

Superelements
^^^^^^^^^^^^^

link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)

[[fvyqz]][[GSDPG00382]][[subelements-20]]

Subelements
^^^^^^^^^^^

none - element is present or absent

[[bearn]][[GSDPG00107]][[check-version-of-accessed-instances]]

`check-version-of-accessed-instances`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Checks the version column of the modified beans.

Version consistency allows the bean state to be cached between
transactions instead of read from a database. The bean state is verified
by primary key and version column values. This occurs during a custom
query (for dirty instances only) or commit (for both clean and dirty
instances).

The version column must be a numeric type, and must be in the primary
table. You must provide appropriate update triggers for this column.

[[fvyqt]][[GSDPG00383]][[superelements-22]]

Superelements
^^^^^^^^^^^^^

link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)

[[fvypp]][[GSDPG00384]][[subelements-21]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`check-version-of-accessed-instances` element.

[[GSDPG864]][[sthref38]][[fvyrq]]


Table C-20 `check-version-of-accessed-instances` Subelements

[width="100%",cols="33%,11%,56%",options="header",]
|====================================================
|Element |Required |Description
a|
link:#bearz[`column-name`]


 |only one |Specifies the name of the version column.
|====================================================


[[bearo]][[GSDPG00108]][[checkpoint-at-end-of-method]]

`checkpoint-at-end-of-method`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies that the stateful session bean state is checkpointed, or
persisted, after the specified methods are executed. The
`availability-enabled` attribute of the parent link:#beass[`ejb`]
element must be set to `true`.

[[fvypr]][[GSDPG00385]][[superelements-23]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyqe]][[GSDPG00386]][[subelements-22]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`checkpoint-at-end-of-method` element.

[[GSDPG865]][[sthref39]][[fvyqx]]


Table C-21 `checkpoint-at-end-of-method` Subelements

[width="100%",cols="25%,13%,62%",options="header",]
|======================================
|Element |Required |Description
a|
link:#beauz[`method`]


 |one or more |Specifies a bean method.
|======================================


[[bearp]][[GSDPG00109]][[checkpointed-methods]]

`checkpointed-methods`
~~~~~~~~~~~~~~~~~~~~~~

Deprecated. Supported for backward compatibility. Use
link:#bearo[`checkpoint-at-end-of-method`] instead.

[[fvyrk]][[GSDPG00387]][[superelements-24]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[bearq]][[GSDPG00110]][[class-loader]]

`class-loader`
~~~~~~~~~~~~~~

Configures the class loader for the web module.

[[fvyrv]][[GSDPG00388]][[superelements-25]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvyrh]][[GSDPG00389]][[subelements-23]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `class-loader`
element.

[[GSDPG866]][[sthref40]][[fvyqg]]


Table C-22 `class-loader` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyrl]][[GSDPG00390]][[attributes-6]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `class-loader` element.

[[GSDPG867]][[sthref41]][[fvyrs]]


Table C-23 `class-loader` Attributes

[width="172%",cols="17%,46%,37%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`extra-class-path` |null a|
(optional) Specifies a colon or semicolon separated list of additional
classpaths for this web module. Paths can be absolute or relative to the
web module's root, for example:

[source,oac_no_warn]
----
extra-class-path="WEB-INF/lib/extra/extra.jar"
----

|`delegate` |`true` a|
(optional) If `true`, the web module follows the standard class loader
delegation model and delegates to its parent class loader first before
looking in the local class loader. You must set this to `true` for a web
module that accesses EJB components or that acts as a web service client
or endpoint.

If `false`, the web module follows the delegation model specified in the
Servlet specification and looks in its class loader before looking in
the parent class loader. It's safe to set this to `false` only for a web
module that does not interact with any other modules.

For a number of packages, including `java.*` and `javax.*`, symbol
resolution is always delegated to the parent class loader regardless of
the delegate setting. This prevents applications from overriding core
Java runtime classes or changing the API versions of specifications that
are part of the Java EE platform.

|`dynamic-reload-``interval` | + |(optional) Not implemented. Included
for backward compatibility with previous Oracle Web Server versions.
|=======================================================================



[NOTE]
=======================================================================

If the `delegate` attribute is set to `false`, the class loader
delegation behavior complies with the Servlet 2.4 specification, section
9.7.2. If set to its default value of `true`, classes and resources
residing in container-wide library JAR files are loaded in preference to
classes and resources packaged within the WAR file.

Portable programs that use this element should not be packaged with any
classes or interfaces that are a part of the Java EE specification. The
behavior of a program that includes such classes or interfaces in its
WAR file is undefined.

=======================================================================


[[gcfko]][[GSDPG00391]][[properties-2]]

Properties
^^^^^^^^^^

The following table describes properties for the `class-loader` element.

[[GSDPG868]][[sthref42]][[gcfjs]]


Table C-24 `class-loader` Properties

[width="181%",cols="15%,49%,36%",options="header",]
|=======================================================================
|Property |Default |Description
|`ignoreHiddenJarFiles` |`false` |If `true`, specifies that all JAR and
ZIP files in the `WEB-INF/lib` directory that start with a period (`.`)
are ignored by the class loader.
|=======================================================================


[[bearr]][[GSDPG00111]][[client-container]]

`client-container`
~~~~~~~~~~~~~~~~~~

Defines the GlassFish Server specific configuration for the application
client container. This is the root element; there can only be one
`client-container` element in a `sun-acc.xml` file. See
link:dd-files.html#beaqp[The sun-acc.xml File].

[[fvypv]][[GSDPG00392]][[superelements-26]]

Superelements
^^^^^^^^^^^^^

none

[[fvypk]][[GSDPG00393]][[subelements-24]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `client-container`
element.

[[GSDPG869]][[sthref43]][[fvypm]]


Table C-25 `client-container` Subelements

[width="100%",cols="28%,12%,60%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaye[`target-server`]


 |one or more a|
Specifies the IIOP listener for the target server. Also specifies IIOP
endpoints used for load balancing. If the GlassFish Server instance on
which the application client is deployed participates in a cluster,
GlassFish Server finds all currently active IIOP endpoints in the
cluster automatically. However, a client should have at least two
endpoints specified for bootstrapping purposes, in case one of the
endpoints has failed.

A listener or endpoint is in the form host`:`port, where the host is an
IP address or host name, and the port specifies the port number.

a|
link:#beaqy[`auth-realm`]


 |zero or one |Specifies the optional configuration for JAAS
authentication realm.

a|
link:#bears[`client-credential`]


 |zero or one |Specifies the default client credential that is sent to
the server.

a|
link:#beauj[`log-service`]


 |zero or one |Specifies the default log file and the severity level of
the message.

a|
link:#beauy[`message-security-config`]


 |zero or more |Specifies configurations for message security providers.

a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|=======================================================================


[[fvyqq]][[GSDPG00394]][[attributes-7]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `client-container`
element.

[[GSDPG870]][[sthref44]][[fvyqb]]


Table C-26 `client-container` Attributes

[width="172%",cols="11%,46%,43%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`send-password` |`true` |If `true`, specifies that client
authentication credentials must be sent to the server. Without
authentication credentials, all access to protected EJB components
results in exceptions.
|=======================================================================


[[fvyrm]][[GSDPG00395]][[properties-3]]

Properties
^^^^^^^^^^

The following table describes properties for the `client-container`
element.

[[GSDPG871]][[sthref45]][[fvyqm]]


Table C-27 `client-container` Properties

[width="172%",cols="22%,46%,32%",options="header",]
|=======================================================================
|Property |Default |Description
|`com.sun.appserv.iiop.endpoints` |none |Specifies a comma-separated
list of one or more IIOP endpoints used for load balancing. An IIOP
endpoint is in the form host`:`port, where the host is an IP address or
host name, and the port specifies the port number. Deprecated. Use
link:#beaye[`target-server`] elements instead.
|=======================================================================


[[bears]][[GSDPG00112]][[client-credential]]

`client-credential`
~~~~~~~~~~~~~~~~~~~

Default client credentials that are sent to the server. If this element
is present, the credentials are automatically sent to the server,
without prompting the user for the user name and password on the client
side.

[[fvyqk]][[GSDPG00396]][[superelements-27]]

Superelements
^^^^^^^^^^^^^

link:#bearr[`client-container`] (`sun-acc.xml`)

[[fvyqd]][[GSDPG00397]][[subelements-25]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `client-credential`
element.

[[GSDPG872]][[sthref46]][[fvyro]]


Table C-28 `client-credential` subelement

[width="100%",cols="37%,14%,49%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyqv]][[GSDPG00398]][[attributes-8]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `client-credential`
element.

[[GSDPG873]][[sthref47]][[fvypi]]


Table C-29 `client-credential` attributes

[width="100%",cols="12%,14%,74%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`user-name` |none |The user name used to authenticate the Application
client container.

|`password` |none |The password used to authenticate the Application
client container.

|`realm` |default realm for the domain |(optional) The realm (specified
by name) where credentials are to be resolved.
|=======================================================================


[[beart]][[GSDPG00113]][[cmp]]

`cmp`
~~~~~

Describes runtime information for a CMP entity bean object for EJB 1.1
and EJB 2.1 beans.

[[fvyrg]][[GSDPG00399]][[superelements-28]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyqw]][[GSDPG00400]][[subelements-26]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cmp` element.

[[GSDPG874]][[sthref48]][[fvypw]]


Table C-30 `cmp` Subelements

[width="100%",cols="22%,11%,67%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaun[`mapping-properties`]


 |zero or one |This element is not implemented.

a|
link:#beatq[`is-one-one-cmp`]


 |zero or one |This element is not implemented.

a|
link:#beavk[`one-one-finders`]


 |zero or one |Describes the finders for CMP 1.1 beans.

a|
link:#beavu[`prefetch-disabled`]


 |zero or one |Disables prefetching of entity bean states for the
specified query methods.
|=======================================================================


[[bearu]][[GSDPG00114]][[cmp-field-mapping]]

`cmp-field-mapping`
~~~~~~~~~~~~~~~~~~~

The `cmp-field-mapping` element associates a field with one or more
columns to which it maps. The column can be from a bean's primary table
or any defined secondary table. If a field is mapped to multiple
columns, the column listed first in this element is used as a source for
getting the value from the database. The columns are updated in the
order they appear. There is one `cmp-field-mapping` element for each
`cmp-field` element defined in the `ejb-jar.xml` file.

[[fvypy]][[GSDPG00401]][[superelements-29]]

Superelements
^^^^^^^^^^^^^

link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)

[[fvyra]][[GSDPG00402]][[subelements-27]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cmp-field-mapping`
element.

[[GSDPG875]][[sthref49]][[fvyqh]]


Table C-31 `cmp-field-mapping` Subelements

[width="100%",cols="15%,12%,73%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beatd[`field-name`]


 |only one |Specifies the Java identifier of a field. This identifier
must match the value of the `field-name` subelement of the `cmp-field`
that is being mapped.

a|
link:#bearz[`column-name`]


 |one or more |Specifies the name of a column from the primary table, or
the qualified table name (TABLE.COLUMN) of a column from a secondary or
related table.

a|
link:#beawh[`read-only`]


 |zero or one |Specifies that a field is read-only.

a|
link:#beatc[`fetched-with`]


 |zero or one |Specifies the fetch group for this CMP field's mapping.
|=======================================================================


[[bearv]][[GSDPG00115]][[cmp-resource]]

`cmp-resource`
~~~~~~~~~~~~~~

Specifies the database to be used for storing CMP beans. For more
information about this element, see "link:../application-development-guide/container_managed-persistence.html#GSDVG00154[Configuring the
CMP Resource]" in GlassFish Server Open Source Edition Application
Development Guide.

[[fvypz]][[GSDPG00403]][[superelements-30]]

Superelements
^^^^^^^^^^^^^

link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)

[[fvyrf]][[GSDPG00404]][[subelements-28]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cmp-resource`
element.

[[GSDPG876]][[sthref50]][[fvyps]]


Table C-32 `cmp-resource` Subelements

[width="100%",cols="33%,12%,55%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beatw[`jndi-name`]


 |only one |Specifies the absolute `jndi-name` of a JDBC resource.

a|
link:#beasn[`default-resource-principal`]


 |zero or one |Specifies the default runtime bindings of a resource
reference.

a|
link:#beavy[`property` (with subelements)]


 |zero or more |Specifies a property name and value. Used to configure
`PersistenceManagerFactory` properties.

a|
link:#beasi[`create-tables-at-deploy`]


 |zero or one |If `true`, specifies that database tables are created for
beans that are automatically mapped by the EJB container.

a|
link:#beasq[`drop-tables-at-undeploy`]


 |zero or one |If `true`, specifies that database tables that were
automatically created when the bean(s) were last deployed are dropped
when the bean(s) are undeployed.

a|
link:#beask[`database-vendor-name`]


 |zero or one |Specifies the name of the database vendor for which
tables can be created.

a|
link:#beaxd[`schema-generator-properties`]


 |zero or one |Specifies field-specific type mappings and allows you to
set the `use-unique-table-names` property.
|=======================================================================


[[bearw]][[GSDPG00116]][[cmr-field-mapping]]

`cmr-field-mapping`
~~~~~~~~~~~~~~~~~~~

A container-managed relationship field has a name and one or more column
pairs that define the relationship. There is one `cmr-field-mapping`
element for each `cmr-field` element in the `ejb-jar.xml` file. A
relationship can also participate in a fetch group.

[[fvyrc]][[GSDPG00405]][[superelements-31]]

Superelements
^^^^^^^^^^^^^

link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)

[[fvypu]][[GSDPG00406]][[subelements-29]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cmr-field-mapping`
element.

[[GSDPG877]][[sthref51]][[fvypn]]


Table C-33 `cmr-field-mapping` Subelements

[width="100%",cols="18%,12%,70%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#bearx[`cmr-field-name`]


 |only one |Specifies the Java identifier of a field. Must match the
value of the `cmr-field-name` subelement of the `cmr-field` that is
being mapped.

a|
link:#beasa[`column-pair`]


 |one or more |Specifies the pair of columns that determine the
relationship between two database tables.

a|
link:#beatc[`fetched-with`]


 |zero or one |Specifies the fetch group for this CMR field's
relationship.
|=======================================================================


[[bearx]][[GSDPG00117]][[cmr-field-name]]

`cmr-field-name`
~~~~~~~~~~~~~~~~

Specifies the Java identifier of a field. Must match the value of the
`cmr-field-name` subelement of the `cmr-field` element in the
`ejb-jar.xml` file.

[[fvyrx]][[GSDPG00407]][[superelements-32]]

Superelements
^^^^^^^^^^^^^

link:#bearw[`cmr-field-mapping`] (`sun-cmp-mappings.xml`)

[[fvyry]][[GSDPG00408]][[subelements-30]]

Subelements
^^^^^^^^^^^

none - contains data

[[beary]][[GSDPG00118]][[cmt-timeout-in-seconds]]

`cmt-timeout-in-seconds`
~~~~~~~~~~~~~~~~~~~~~~~~

Overrides the Transaction Timeout setting of the Transaction Service for
an individual bean. The default value, `0`, specifies that the default
Transaction Service timeout is used. If positive, this value is used for
all methods in the bean that start a new container-managed transaction.
This value is not used if the bean joins a client transaction.

[[fvysf]][[GSDPG00409]][[superelements-33]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvysc]][[GSDPG00410]][[subelements-31]]

Subelements
^^^^^^^^^^^

none - contains data

[[bearz]][[GSDPG00119]][[column-name]]

`column-name`
~~~~~~~~~~~~~

Specifies the name of a column from the primary table, or the qualified
table name (TABLE.COLUMN) of a column from a secondary or related table.

[[fvyse]][[GSDPG00411]][[superelements-34]]

Superelements
^^^^^^^^^^^^^

link:#bearn[`check-version-of-accessed-instances`],
link:#bearu[`cmp-field-mapping`], link:#beasa[`column-pair`]
(`sun-cmp-mappings.xml`)

[[fvysb]][[GSDPG00412]][[subelements-32]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasa]][[GSDPG00120]][[column-pair]]

`column-pair`
~~~~~~~~~~~~~

Specifies the pair of columns that determine the relationship between
two database tables. Each `column-pair` must contain exactly two
`column-name` subelements, which specify the column's names. The first
`column-name` element names the table that this bean is mapped to, and
the second `column-name` names the column in the related table.

[[fvysa]][[GSDPG00413]][[superelements-35]]

Superelements
^^^^^^^^^^^^^

link:#bearw[`cmr-field-mapping`], link:#beaxe[`secondary-table`]
(`sun-cmp-mappings.xml`)

[[fvysg]][[GSDPG00414]][[subelements-33]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `column-pair` element.

[[GSDPG878]][[sthref52]][[fvysh]]


Table C-34 `column-pair` Subelements

[width="100%",cols="14%,10%,76%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#bearz[`column-name`]


 |two |Specifies the name of a column from the primary table, or the
qualified table name (TABLE.COLUMN) of a column from a secondary or
related table.
|=======================================================================


[[beasb]][[GSDPG00121]][[commit-option]]

`commit-option`
~~~~~~~~~~~~~~~

Specifies the commit option used on transaction completion. Valid values
for GlassFish Server are `B` or `C`. Default value is `B`. Applies to
entity beans.


[NOTE]
==================================================================

Commit option A is not supported for this GlassFish Server release.

==================================================================


[[fvyrz]][[GSDPG00415]][[superelements-36]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvysd]][[GSDPG00416]][[subelements-34]]

Subelements
^^^^^^^^^^^

none - contains data

[[gjjak]][[GSDPG00122]][[compatibility]]

`compatibility`
~~~~~~~~~~~~~~~

Specifies the GlassFish Server release with which to be backward
compatible in terms of JAR visibility requirements for applications. The
current allowed value is `v2`, which refers to GlassFish Server version
2 or GlassFish Server version 9.1 or 9.1.1. Starting in Java EE 6, the
Java EE specification imposes stricter requirements than Java EE 5 did
on which JAR files can be visible to various modules within an EAR file.
Setting this element to `v2` removes these Java EE 6 and later
restrictions.

[[gjjaf]][[GSDPG00417]][[superelements-37]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)

[[gjjag]][[GSDPG00418]][[subelements-35]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasc]][[GSDPG00123]][[confidentiality]]

`confidentiality`
~~~~~~~~~~~~~~~~~

Specifies if the target supports privacy-protected messages. The values
are `NONE`, `SUPPORTED`, or `REQUIRED`.

[[fvysi]][[GSDPG00419]][[superelements-38]]

Superelements
^^^^^^^^^^^^^

link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)

[[fvysk]][[GSDPG00420]][[subelements-36]]

Subelements
^^^^^^^^^^^

none - contains data

[[giygu]][[GSDPG00124]][[connector-connection-pool]]

`connector-connection-pool`
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Defines a connector connection pool.

[[GSDPG879]][[sthref53]]


[[superelements-39]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG880]][[sthref54]]


[[subelements-37]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the
`connector-connection-pool` element.

[[GSDPG881]][[sthref55]][[sthref56]]


Table C-35 `connector-connection-pool` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.

a|
link:#giyhy[`security-map`]


 |zero or more |Maps the principal received during servlet or EJB
authentication to the credentials accepted by the EIS.

a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|=======================================================================


[[GSDPG882]][[sthref57]]


[[attributes-9]]
Attributes
^^^^^^^^^^

The following table describes attributes for the
`connector-connection-pool` element. Changing the following attributes
requires a server restart or the redeployment or disabling and
re-enabling of applications that refer to the resource:
`resource-adapter-name`, `connection-definition-name`,
`transaction-support`, `associate-with-thread`,
`lazy-connection-association`, and `lazy-connection-enlistment`.

[[GSDPG883]][[sthref58]][[sthref59]]


Table C-36 `connector-connection-pool` Attributes

[width="172%",cols="25%,46%,29%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the name of the connection pool. A
link:#giyhv[`connector-resource`] element's `pool-name` attribute refers
to this `name`.

|`resource``-adapter``-name` |none |Specifies the name of the deployed
connector module or application. If no name is specified during
deployment, the name of the `.rar` file is used. If the resource adapter
is embedded in an application, then it is app_name`#`rar_name.

|`connection``-definition``-name` |none |Specifies a unique name,
identifying a resource adapter's `connection-definition` element in the
`ra.xml` file. This is usually the `connectionfactory-interface` of the
`connection-definition` element.

|`steady-pool``-size` |`8` |(optional) Specifies the initial and minimum
number of connections maintained in the pool.

|`max-pool-size` |`32` |(optional) Specifies the maximum number of
connections that can be created to satisfy client requests.

|`max-wait-time-in``-millis` |`60000` |(optional) Specifies the amount
of time, in milliseconds, that the caller is willing to wait for a
connection. If `0`, the caller is blocked indefinitely until a resource
is available or an error occurs.

|`pool-resize``-quantity` |`2` a|
(optional) Specifies the number of idle connections to be destroyed if
the existing number of connections is above the `steady-pool-size`
(subject to the `max-pool-size` limit).

This is enforced periodically at the `idle-timeout-in-seconds` interval.
An idle connection is one that has not been used for a period of
`idle-timeout-in-seconds`. When the pool size reaches
`steady-pool-size`, connection removal stops.

|`idle-timeout``-in-seconds` |`300` |(optional) Specifies the maximum
time that a connection can remain idle in the pool. After this amount of
time, the pool can close this connection.

|`fail-all-``connections` |`false` |(optional) If `true`, closes all
connections in the pool if a single validation check fails.

|`transaction``-support` |none a|
(optional) Specifies the transaction support for this connection pool.
Overrides the transaction support defined in the resource adapter in a
downward compatible way: supports a transaction level lower than or
equal to the resource adapter's, but not higher. Allowed values in
descending order are:

* `XATransaction` - Supports distributed transactions.
* `LocalTransaction` - Supports local transactions only.
* `NoTransaction` - No transaction support.

|`is-connection-``validation-``required` |`false` |(optional) Specifies
whether connections have to be validated before being given to the
application. If a resource's validation fails, it is destroyed, and a
new resource is created and returned.

|`validate-atmost-once-``period-in-seconds` |`0` |Specifies the time
interval within which a connection is validated at most once. Minimizes
the number of validation calls. A value of zero allows unlimited
validation calls.

|`connection-``leak-timeout-``in-seconds` |`0` |Detects potential
connection leaks by the application. A connection that is not returned
back to the pool by the application within the specified period is
assumed to be potentially leaking, and a stack trace of the caller is
logged. A zero value disables leak detection. A nonzero value enables
leak tracing.

|`connection-leak-``reclaim` |`false` |If `true`, the pool will reclaim
a connection after `connection-leak-timeout-in-seconds` occurs.

|`connection-creation-``retry-attempts` |`0` |Specifies the number of
attempts to create a new connection.

|`connection-creation-``retry-interval-``in-seconds` |`10` |Specifies
the time interval between attempts to create a connection when
`connection-creation-retry-attempts` is greater than `0`.

|`lazy-connection-``enlistment` |`false` |If `true`, a connection is not
enlisted in a transaction until it is used. If `false`, any connection
object available to a transaction is enlisted in the transaction.

|`lazy-connection-``association` |`false` |If `true`, a physical
connection is not associated with a logical connection until it is used.
If `false`, a physical connection is associated with a logical
connection even before it is used.

|`associate-with-thread` |`false` a|
If `true`, allows connections to be saved as `ThreadLocal` in the
calling thread. Connections get reclaimed only when the calling thread
dies or when the calling thread is not in use and the pool has run out
of connections. If `false`, the thread must obtain a connection from the
pool each time the thread requires a connection.

This attribute associates connections with a thread such that when the
same thread is in need of connections, it can reuse the connections
already associated with that thread. In this case, the overhead of
getting connections from the pool is avoided. However, when this value
is set to `true`, you should verify that the value of the
`max-pool-size` attribute is comparable to the `max-thread-pool-size`
attribute of the associated thread pool. If the `max-thread-pool-size`
value is much higher than the `max-pool-size` value, a lot of time is
spent associating connections with a new thread after dissociating them
from an older one. Use this attribute in cases where the thread pool
should reuse connections to avoid this overhead.

| | |

|`match-connections` |`true` |If `true`, enables connection matching.
You can set to `false` if connections are homogeneous.

|`max-connection-``usage-count` |`0` |Specifies the number of times a
connections is reused by the pool, after which it is closed. A zero
value disables this feature.

|`ping` |`false` |(optional) Specifies whether to ping the pool during
pool creation or reconfiguration to identify and warn of any erroneous
attribute values.

|`pooling` |`true` |(optional) If `false`, disables connection pooling.
|=======================================================================


[[GSDPG884]][[sthref60]]


[[properties-4]]
Properties
^^^^^^^^^^

Most properties of the `connector-connection-pool` element are the names
of setter methods of the `managedconnectionfactory-class` element in the
`ra.xml` file. Properties of the `connector-connection-pool` element
override the `ManagedConnectionFactory` JavaBean configuration settings.

All but the last four properties in the following table are
`connector-connection-pool` properties of `jmsra`, the resource adapter
used to communicate with the Open Message Queue software. For a complete
list of the available properties (called administered object attributes
in the Message Queue software), see the link:../../openmq/mq-admin-guide/toc.html#GMADG[Open Message Queue
Administration Guide].

Changes to `connector-connection-pool` properties require a server
restart.

[[GSDPG885]][[sthref61]][[sthref62]]


Table C-37 `connector-connection-pool` Properties

[width="100%",cols="26%,11%,63%",options="header",]
|=======================================================================
|Property |Default |Description
|`AddressList` |none |Specifies a list of host/port combinations of the
Message Queue software. For JMS resources of the Type
`jakarta.jms.TopicConnectionFactory` or
`jakarta.jms.QueueConnectionFactory`.

|`ClientId` |none a|
Specifies the JMS Client Identifier to be associated with a `Connection`
created using the `createTopicConnection` method of the
`TopicConnectionFactory` class. For JMS resources of the Type
`jakarta.jms.TopicConnectionFactory` .

Durable subscription names are unique and only valid within the scope of
a client identifier. To create or reactivate a durable subscriber, the
connection must have a valid client identifier. The JMS specification
ensures that client identifiers are unique and that a given client
identifier is allowed to be used by only one active connection at a
time.

|`UserName` |`guest` |Specifies the user name for connecting to the
Message Queue software. For JMS resources of the Type
`jakarta.jms.TopicConnectionFactory` or
`jakarta.jms.QueueConnectionFactory`.

|`Password` |`guest` |Specifies the password for connecting to the
Message Queue software. For JMS resources of the Type
`jakarta.jms.TopicConnectionFactory` or
`jakarta.jms.QueueConnectionFactory`.

|`ReconnectAttempts` |`6` |Specifies the number of attempts to connect
(or reconnect) for each address in the `imqAddressList` before the
client runtime moves on to try the next address in the list. A value of
`-1` indicates that the number of reconnect attempts is unlimited (the
client runtime attempts to connect to the first address until it
succeeds).

|`ReconnectInterval` |`30000` |Specifies the interval between reconnect
attempts in milliseconds. This applies to attempts on each address in
the `imqAddressList` and on successive addresses in the list. If too
short, this time interval does not give a broker time to recover. If too
long, the reconnect might represent an unacceptable delay.

|`ReconnectEnabled` |`false` |If `true`, specifies that the client
runtime attempts to reconnect to a message server (or the list of
addresses in `imqAddressList`) when a connection is lost.

|`AddressListBehavior` |`priority` |Specifies whether connection
attempts are in the order of addresses in the `imqAddressList` attribute
(`priority`) or in a random order (`random`). If many clients are
attempting a connection using the same connection factory, use a random
order to prevent them from all being connected to the same address.

|`AddressListIterations` |`-1` |Specifies the number of times the client
runtime iterates through the `imqAddressList` in an effort to establish
(or reestablish) a connection. A value of `-1` indicates that the number
of attempts is unlimited.
|=======================================================================



[NOTE]
=======================================================================

All JMS administered object resource properties that worked with version
7 of the GlassFish Server are supported for backward compatibility.

=======================================================================


[[giyhv]][[GSDPG00125]][[connector-resource]]

`connector-resource`
~~~~~~~~~~~~~~~~~~~~

Defines the connection factory object of a specific connection
definition in a connector (resource adapter).

[[GSDPG886]][[sthref63]]


[[superelements-40]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG887]][[sthref64]]


[[subelements-38]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `connector-resource`
element.

[[GSDPG888]][[sthref65]][[sthref66]]


Table C-38 `connector-resource` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG889]][[sthref67]]


[[attributes-10]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `connector-resource`
element.

[[GSDPG890]][[sthref68]][[sthref69]]


Table C-39 `connector-resource` Attributes

[width="172%",cols="9%,46%,45%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`jndi-name` |none |Specifies the JNDI name for the resource.

|`pool-name` |none |Specifies the `name` of the associated
link:#giygu[`connector-connection-pool`].

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`enabled` |`true` |(optional) Determines whether this resource is
enabled at runtime.
|=======================================================================


[[beasd]][[GSDPG00126]][[consistency]]

`consistency`
~~~~~~~~~~~~~

Specifies container behavior in guaranteeing transactional consistency
of the data in the bean.

[[fvysj]][[GSDPG00421]][[superelements-41]]

Superelements
^^^^^^^^^^^^^

link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)

[[fvysl]][[GSDPG00422]][[subelements-39]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `consistency` element.

[[GSDPG891]][[sthref70]][[fvysn]]


Table C-40 `consistency` Subelements

[width="100%",cols="31%,21%,48%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavi[`none`]


 |exactly one subelement is required |No consistency checking occurs.

a|
link:#bearm[`check-modified-at-commit`]


 |exactly one subelement is required |Checks concurrent modification of
fields in modified beans at commit time.

a|
link:#beauh[`lock-when-loaded`]


 |exactly one subelement is required |Obtains an exclusive lock when the
data is loaded.

a|
link:#bearl[`check-all-at-commit`]


 | + |This element is not implemented. Do not use.

a|
link:#beaui[`lock-when-modified`]


 | + |This element is not implemented. Do not use.

a|
link:#bearn[`check-version-of-accessed-instances`]


 |exactly one subelement is required |Checks the version column of the
modified beans.
|=======================================================================


[[bease]][[GSDPG00127]][[constraint-field]]

`constraint-field`
~~~~~~~~~~~~~~~~~~

Specifies a cacheability constraint for the given
link:#beayl[`url-pattern`] or link:#beaxo[`servlet-name`].

All `constraint-field` constraints must pass for a response to be
cached. If there are `value` constraints, at least one of them must
pass.

[[fvysm]][[GSDPG00423]][[superelements-42]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvyso]][[GSDPG00424]][[subelements-40]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `constraint-field`
element.

[[GSDPG892]][[sthref71]][[fvysp]]


Table C-41 `constraint-field` Subelements

[width="100%",cols="30%,13%,57%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beasf[`constraint-field-value`]


 |zero or more |Contains a value to be matched to the input parameter
value.
|=======================================================================


[[fvysq]][[GSDPG00425]][[attributes-11]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `constraint-field`
element.

[[GSDPG893]][[sthref72]][[fvysr]]


Table C-42 `constraint-field` Attributes

[width="100%",cols="18%,21%,61%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the input parameter name.

|`scope` |`request.parameter` |(optional) Specifies the scope from which
the input parameter is retrieved. Allowed values are
`context.attribute`, `request.header`, `request.parameter`,
`request.cookie`, `request.attribute`, and `session.attribute`.

|`cache-on-match` |`true` |(optional) If `true`, caches the response if
matching succeeds. Overrides the same attribute in a
link:#beasf[`constraint-field-value`] subelement.

|`cache-on-match``-failure` |`false` |(optional) If `true`, caches the
response if matching fails. Overrides the same attribute in a
link:#beasf[`constraint-field-value`] subelement.
|=======================================================================


[[beasf]][[GSDPG00128]][[constraint-field-value]]

`constraint-field-value`
~~~~~~~~~~~~~~~~~~~~~~~~

Specifies a value to be matched to the input parameter value. The
matching is case sensitive. For example:

[source,oac_no_warn]
----
<value match-expr="in-range">1-60</value>
----

[[fvyss]][[GSDPG00426]][[superelements-43]]

Superelements
^^^^^^^^^^^^^

link:#bease[`constraint-field`] (`glassfish-web.xml`)

[[fvyst]][[GSDPG00427]][[subelements-41]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvysu]][[GSDPG00428]][[attributes-12]]

Attributes
^^^^^^^^^^

The following table describes attributes for the
`constraint-field-value` element.

[[GSDPG894]][[sthref73]][[fvysv]]


Table C-43 `constraint-field-value` Attributes

[width="172%",cols="11%,46%,43%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`match-expr` |`equals` a|
(optional) Specifies the type of comparison performed with the value.
Allowed values are `equals`, `not-equals`, `greater`, `lesser`, and
`in-range`.

If `match-expr` is `greater` or `lesser`, the value must be a number. If
`match-expr` is `in-range`, the value must be of the form n1`-`n2, where
n1 and n2 are numbers.

|`cache-on-match` |`true` |(optional) If `true`, caches the response if
matching succeeds.

|`cache-on-match``-failure` |`false` |(optional) If `true`, caches the
response if matching fails.
|=======================================================================


[[beasg]][[GSDPG00129]][[context-root]]

`context-root`
~~~~~~~~~~~~~~

Contains the web context root for the application or web application
that was packaged as a WAR file. Overrides the corresponding element in
the `application.xml` or `web.xml` file.

If the parent element is `java-web-start-access`, this element contains
the context root for the Java Web Start enabled application client
module. If none is specified, a default is generated; see
link:#gauax[`java-web-start-access`].

If you are setting up load balancing, web module context roots must be
unique within a server instance. See the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server
Open Source Edition High Availability Administration Guide] for more
information about load balancing.

[[fvysx]][[GSDPG00429]][[superelements-44]]

Superelements
^^^^^^^^^^^^^

link:#beayr[`web`] (`glassfish-application.xml`),
link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#gauax[`java-web-start-access`]
(`glassfish-application-client.xml`)

[[fvysw]][[GSDPG00430]][[subelements-42]]

Subelements
^^^^^^^^^^^

none - contains data

[[beash]][[GSDPG00130]][[cookie-properties]]

`cookie-properties`
~~~~~~~~~~~~~~~~~~~

Specifies session cookie properties.


[NOTE]
=======================================================================

If cookie settings are defined declaratively in the `web.xml` file, the
cookie properties defined here take precedence. If cookie settings are
defined programmatically using `javax.servlet.SessionCookieConfig`
methods, those cookie settings take precedence over the cookie
properties defined here.

=======================================================================


[[fvysy]][[GSDPG00431]][[superelements-45]]

Superelements
^^^^^^^^^^^^^

link:#beaxp[`session-config`] (`glassfish-web.xml`)

[[fvysz]][[GSDPG00432]][[subelements-43]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `cookie-properties`
element.

[[GSDPG895]][[sthref74]][[fvytb]]


Table C-44 `cookie-properties` Subelements

[width="100%",cols="36%,14%,50%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyta]][[GSDPG00433]][[properties-5]]

Properties
^^^^^^^^^^

The following table describes properties for the `cookie-properties`
element.

[[GSDPG896]][[sthref75]][[fvyte]]


Table C-45 `cookie-properties` Properties

[width="100%",cols="24%,13%,63%",options="header",]
|=======================================================================
|Property |Default |Description
|`cookieName` |none |Specifies the cookie name.

|`cookiePath` |Context path at which the web module is installed.
|Specifies the pathname that is set when the cookie is created. The
browser sends the cookie if the pathname for the request contains this
pathname. If set to `/` (slash), the browser sends cookies to all URLs
served by GlassFish Server. You can set the path to a narrower mapping
to limit the request URLs to which the browser sends cookies.

|`cookieMaxAgeSeconds` |none |Specifies the expiration time (in seconds)
after which the browser expires the cookie. If this is unset, the cookie
doesn't expire.

|`cookieDomain` |(unset) |Specifies the domain for which the cookie is
valid.

|`cookieComment` |none |Specifies the comment that identifies the
session tracking cookie in the cookie file.

|`cookieSecure` |`dynamic` a|
Sets the `Secure` attribute of any `JSESSIONID` cookies associated with
the web application. Allowed values are as follows:

* `true` — Sets `Secure` to `true`.
* `false` — Sets `Secure` to `false`.
* `dynamic` — The `JSESSIONID` cookie inherits the `Secure` setting of
the request that initiated the session.

To set the `Secure` attribute of a `JSESSIONIDSSO` cookie, use the
`ssoCookieSecure` `virtual-server` property. For details, see
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

|`cookieHttpOnly` |none |Specifies that the cookie is marked HTTP only.
Allowed values are `true` or `false`.
|=======================================================================


[[beasi]][[GSDPG00131]][[create-tables-at-deploy]]

`create-tables-at-deploy`
~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies whether database tables are created for beans that are
automatically mapped by the EJB container. If `true`, creates tables in
the database. If `false` (the default if this element is not present),
does not create tables.

This element can be overridden during deployment. See
"link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in GlassFish Server Open
Source Edition Application Development Guide.

[[fvytc]][[GSDPG00434]][[superelements-46]]

Superelements
^^^^^^^^^^^^^

link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)

[[fvytd]][[GSDPG00435]][[subelements-44]]

Subelements
^^^^^^^^^^^

none - contains data

[[giyhr]][[GSDPG00132]][[custom-resource]]

`custom-resource`
~~~~~~~~~~~~~~~~~

Defines a custom resource, which specifies a custom server-wide resource
object factory. Such object factories implement the
javax.naming.spi.ObjectFactory interface.

[[GSDPG897]][[sthref76]]


[[superelements-47]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG898]][[sthref77]]


[[subelements-45]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `custom-resource`
element.

[[GSDPG899]][[sthref78]][[sthref79]]


Table C-46 `custom-resource` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG900]][[sthref80]]


[[attributes-13]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `custom-resource`
element.

[[GSDPG901]][[sthref81]][[sthref82]]


Table C-47 `custom-resource` Attributes

[width="172%",cols="11%,46%,43%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`jndi-name` |none |Specifies the JNDI name for the resource.

|`res-type` |none |Specifies the fully qualified type of the resource.

|`factory-class` |none |Specifies the fully qualified name of the
user-written factory class, which implements
javax.naming.spi.ObjectFactory.

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`enabled` |`true` |(optional) Determines whether this resource is
enabled at runtime.
|=======================================================================


[[beask]][[GSDPG00133]][[database-vendor-name]]

`database-vendor-name`
~~~~~~~~~~~~~~~~~~~~~~

Specifies the name of the database vendor for which tables can be
created. Allowed values are `javadb`, `db2`, `mssql`, `mysql`, `oracle`,
`postgresql`, `pointbase`, `derby` (also for CloudScape), and `sybase`,
case-insensitive.

If no value is specified, a connection is made to the resource specified
by the link:#beatw[`jndi-name`] subelement of the
link:#bearv[`cmp-resource`] element, and the database vendor name is
read. If the connection cannot be established, or if the value is not
recognized, SQL-92 compliance is presumed.

This element can be overridden during deployment. See
"link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in GlassFish Server Open
Source Edition Application Development Guide.

[[fvytf]][[GSDPG00436]][[superelements-48]]

Superelements
^^^^^^^^^^^^^

link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)

[[fvyti]][[GSDPG00437]][[subelements-46]]

Subelements
^^^^^^^^^^^

none - contains data

[[gaubj]][[GSDPG00134]][[debugging-enabled]]

`debugging-enabled`
~~~~~~~~~~~~~~~~~~~

Specifies whether the debugging servlet is enabled for this web service
endpoint. Allowed values are `true` (the default) and `false`.

[[gaubf]][[GSDPG00438]][[superelements-49]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[gaube]][[GSDPG00439]][[subelements-47]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasl]][[GSDPG00135]][[default]]

`default`
~~~~~~~~~

Specifies that a field belongs to the default hierarchical fetch group,
and enables prefetching for a CMR field. To disable prefetching for
specific query methods, use a link:#beavu[`prefetch-disabled`] element
in the `glassfish-ejb-jar.xml` file.

[[fvytg]][[GSDPG00440]][[superelements-50]]

Superelements
^^^^^^^^^^^^^

link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)

[[fvyth]][[GSDPG00441]][[subelements-48]]

Subelements
^^^^^^^^^^^

none - element is present or absent

[[beasm]][[GSDPG00136]][[default-helper]]

`default-helper`
~~~~~~~~~~~~~~~~

Passes property values to the built-in `default`
link:#beare[`cache-helper`] class.

[[fvytj]][[GSDPG00442]][[superelements-51]]

Superelements
^^^^^^^^^^^^^

link:#beard[`cache`] (`glassfish-web.xml`)

[[fvytk]][[GSDPG00443]][[subelements-49]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `default-helper`
element.

[[GSDPG902]][[sthref83]][[fvytm]]


Table C-48 `default-helper` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvytp]][[GSDPG00444]][[properties-6]]

Properties
^^^^^^^^^^

The following table describes properties for the `default-helper`
element.

[[GSDPG903]][[sthref84]][[fvyto]]


Table C-49 `default-helper` Properties

[width="100%",cols="30%,21%,49%",options="header",]
|=======================================================================
|Property |Default |Description
|`cacheKeyGeneratorAttrName` |Uses the built-in `default`
link:#beare[`cache-helper`] key generation, which concatenates the
servlet path with link:#beatz[`key-field`] values, if any. |The caching
engine looks in the `ServletContext` for an attribute with a name equal
to the value specified for this property to determine whether a
customized CacheKeyGenerator implementation is used. An application can
provide a customized key generator rather than using the `default`
helper. See "link:../application-development-guide/webapps.html#GSDVG00254[The CacheKeyGenerator Interface]" in
GlassFish Server Open Source Edition Application Development Guide.
|=======================================================================


[[beasn]][[GSDPG00137]][[default-resource-principal]]

`default-resource-principal`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the default principal (user) for the resource.

If this element is used in conjunction with a JMS Connection Factory
resource, the `name` and `password` subelements must be valid entries in
the Open Message Queue broker user repository. See
"link:../../openmq/mq-admin-guide/security-services.html#GMADG00040[Configuring and Managing Security Services]" in Open
Message Queue Administration Guide for details.

[[fvytl]][[GSDPG00445]][[superelements-52]]

Superelements
^^^^^^^^^^^^^

link:#beaww[`resource-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
link:#bearv[`cmp-resource`], link:#beaur[`mdb-connection-factory`]
(`glassfish-ejb-jar.xml`)

[[fvytn]][[GSDPG00446]][[subelements-50]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`default-resource-principal` element.

[[GSDPG904]][[sthref85]][[fvytr]]


Table C-50 `default-resource-principal` Subelements

[width="100%",cols="11%,10%,79%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavf[`name`]


 |only one |Specifies the default resource principal name used to sign
on to a resource manager.

a|
link:#beavp[`password`]


 |only one |Specifies password of the default resource principal.
|=======================================================================


[[beaso]][[GSDPG00138]][[description]]

`description`
~~~~~~~~~~~~~

Specifies a text description of the containing element.

[[fvytq]][[GSDPG00447]][[superelements-53]]

Superelements
^^^^^^^^^^^^^

link:#beavx[`property` (with attributes)], link:#gikqk[`valve`]
(`glassfish-web.xml`); link:#beaqs[`activation-config`],
link:#beauz[`method`] (`glassfish-ejb-jar.xml`);
link:#beaye[`target-server`] (`sun-acc.xml`);
link:#giyhw[`admin-object-resource`],
link:#giygu[`connector-connection-pool`],
link:#giyhv[`connector-resource`], link:#giyhr[`custom-resource`],
link:#giyin[`external-jndi-resource`],
link:#giyil[`jdbc-connection-pool`], link:#giyhm[`jdbc-resource`],
link:#giyik[`mail-resource`], link:#beavx[`property` (with attributes)],
link:#giyit[`resource-adapter-config`] (`glassfish-resources.xml`)

[[fvyts]][[GSDPG00448]][[subelements-51]]

Subelements
^^^^^^^^^^^

none - contains data

[[gkhtw]][[GSDPG00139]][[disable-nonportable-jndi-names]]

`disable-nonportable-jndi-names`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Because the EJB 3.1 specification defines portable EJB JNDI names, there
is less need for GlassFish Server specific JNDI names. By default,
GlassFish Server specific default JNDI names are applied automatically
for backward compatibility. To disable GlassFish Server specific JNDI
names for an EJB module, set the value of this element to `true`. The
default is `false`.

[[gkhum]][[GSDPG00449]][[superelements-54]]

Superelements
^^^^^^^^^^^^^

link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)

[[gkhug]][[GSDPG00450]][[subelements-52]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasp]][[GSDPG00140]][[dispatcher]]

`dispatcher`
~~~~~~~~~~~~

Specifies a comma-separated list of `RequestDispatcher` methods for
which caching is enabled on the target resource. Valid values are
`REQUEST`, `FORWARD`, `INCLUDE`, and `ERROR` . If this element is not
specified, the default is `REQUEST`. See SRV.6.2.5 of the Servlet 2.4
specification for more information.

[[fvytt]][[GSDPG00451]][[superelements-55]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvytv]][[GSDPG00452]][[subelements-53]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasq]][[GSDPG00141]][[drop-tables-at-undeploy]]

`drop-tables-at-undeploy`
~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies whether database tables that were automatically created when
the bean(s) were last deployed are dropped when the bean(s) are
undeployed. If `true`, drops tables from the database. If `false` (the
default if this element is not present), does not drop tables.

This element can be overridden during deployment. See
"link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options for CMP]" in GlassFish Server Open
Source Edition Application Development Guide.

[[fvytu]][[GSDPG00453]][[superelements-56]]

Superelements
^^^^^^^^^^^^^

link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)

[[fvytx]][[GSDPG00454]][[subelements-54]]

Subelements
^^^^^^^^^^^

none - contains data

[[beass]][[GSDPG00142]][[ejb]]

`ejb`
~~~~~

Defines runtime properties for a single enterprise bean within the
application. The subelements listed below apply to particular enterprise
beans as follows:

* All types of beans: `ejb-name`, `ejb-ref`, `resource-ref`,
`resource-env-ref`, `ior-security-config`, `gen-classes`, `jndi-name`,
`use-thread-pool-id`, `message-destination-ref`, `pass-by-reference`,
`service-ref`
* Stateless session beans: `bean-pool`, `webservice-endpoint`
* Stateful session beans: `bean-cache`, `webservice-endpoint`,
`checkpoint-at-end-of-method`
* Entity beans: `commit-option`, `bean-cache`, `bean-pool`, `cmp`,
`is-read-only-bean`, `refresh-period-in-seconds`,
`flush-at-end-of-method`
* Message-driven beans: `mdb-resource-adapter`,
`mdb-connection-factory`, `jms-durable-subscription-name`,
`jms-max-messages-load`, `bean-pool`

[[fvyty]][[GSDPG00455]][[superelements-57]]

Superelements
^^^^^^^^^^^^^

link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)

[[fvytw]][[GSDPG00456]][[subelements-55]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `ejb` element.

[[GSDPG905]][[sthref86]][[fvyuc]]


Table C-51 `ejb` Subelements

[width="100%",cols="35%,12%,53%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beast[`ejb-name`]


 |only one |Matches the `ejb-name` in the corresponding `ejb-jar.xml`
file.

a|
link:#beatw[`jndi-name`]


 |zero or more |Specifies the absolute `jndi-name`.

a|
link:#beasu[`ejb-ref`]


 |zero or more |Maps the absolute JNDI name to the `ejb-ref` element in
the corresponding Java EE XML file.

a|
link:#beaww[`resource-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
corresponding Java EE XML file.

a|
link:#beawu[`resource-env-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
the corresponding Java EE XML file.

a|
link:#beaxk[`service-ref`]


 |zero or more |Specifies runtime settings for a web service reference.

a|
link:#gauao[`message-destination-ref`]


 |zero or more |Specifies the name of a physical message destination.

a|
link:#beavo[`pass-by-reference`]


 |zero or one |Specifies the passing method used by an enterprise bean
calling a remote interface method in another bean that is colocated
within the same process.

a|
link:#beart[`cmp`]


 |zero or one |Specifies runtime information for a container-managed
persistence (CMP) entity bean for EJB 1.1 and EJB 2.1 beans.

a|
link:#beavv[`principal`]


 |zero or one |Specifies the principal (user) name in an enterprise bean
that has the `run-as` role specified.

a|
link:#beaur[`mdb-connection-factory`]


 |zero or one |Specifies the connection factory associated with a
message-driven bean.

a|
link:#beatu[`jms-durable-subscription-name`]


 |zero or one |Specifies the durable subscription associated with a
message-driven bean.

a|
link:#beatv[`jms-max-messages-load`]


 |zero or one |Specifies the maximum number of messages to load into a
Java Message Service session at one time for a message-driven bean to
serve. The default is 1.

a|
link:#beato[`ior-security-config`]


 |zero or one |Specifies the security information for the IOR.

a|
link:#beatr[`is-read-only-bean`]


 |zero or one |Specifies that this entity bean is read-only.

a|
link:#beawk[`refresh-period-in-seconds`]


 |zero or one |Specifies the rate at which a read-only-bean must be
refreshed from the data source.

a|
link:#beasb[`commit-option`]


 |zero or one |Has valid values of B or C. Default value is B.

a|
link:#beary[`cmt-timeout-in-seconds`]


 |zero or one |Overrides the Transaction Timeout setting of the
Transaction Service for an individual bean.

a|
link:#beaym[`use-thread-pool-id`]


 |zero or one |Specifies the thread pool from which threads are selected
for remote invocations of this bean.

a|
link:#beath[`gen-classes`]


 |zero or one |Specifies all the generated class names for a bean.

a|
link:#bearb[`bean-pool`]


 |zero or one |Specifies the bean pool properties. Used for stateless
session beans, entity beans, and message-driven beans.

a|
link:#beara[`bean-cache`]


 |zero or one |Specifies the bean cache properties. Used only for
stateful session beans and entity beans.

a|
link:#beaus[`mdb-resource-adapter`]


 |zero or one |Specifies runtime configuration information for a
message-driven bean.

a|
link:#beayv[`webservice-endpoint`]


 |zero or more |Specifies information about a web service endpoint.

a|
link:#beatf[`flush-at-end-of-method`]


 |zero or one |Specifies the methods that force a database flush after
execution. Used for entity beans.

a|
link:#bearp[`checkpointed-methods`]


 |zero or one |Deprecated. Supported for backward compatibility. Use
link:#bearo[`checkpoint-at-end-of-method`] instead.

a|
link:#bearo[`checkpoint-at-end-of-method`]


 |zero or one |Specifies that the stateful session bean state is
checkpointed, or persisted, after the specified methods are executed.
The `availability-enabled` attribute must be set to `true`.

a|
link:#gkkia[`per-request-load-balancing`]


 |zero or one |Specifies the per-request load balancing behavior of EJB
2.x and 3.x remote client invocations on a stateless session bean.
|=======================================================================


[[fvyuf]][[GSDPG00457]][[attributes-14]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `ejb` element.

[[GSDPG906]][[sthref87]][[fvyud]]


Table C-52 `ejb` Attributes

[width="181%",cols="16%,49%,35%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`availability-enabled` |`false` |(optional) If set to `true`, and if
availability is enabled in the EJB container, high-availability features
apply to this bean if it is a stateful session bean.
|=======================================================================


[[fvytz]][[GSDPG00458]][[example-3]]

Example
^^^^^^^

[source,oac_no_warn]
----
<ejb>
   <ejb-name>CustomerEJB</ejb-name>
   <jndi-name>customer</jndi-name>
   <resource-ref>
      <res-ref-name>jdbc/SimpleBank</res-ref-name>
      <jndi-name>jdbc/__default</jndi-name>
   </resource-ref>
   <is-read-only-bean>false</is-read-only-bean>
   <commit-option>B</commit-option>
   <bean-pool>
      <steady-pool-size>10</steady-pool-size>
      <resize-quantity>10</resize-quantity>
      <max-pool-size>100</max-pool-size>
      <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
   </bean-pool>
   <bean-cache>
      <max-cache-size>100</max-cache-size>
      <resize-quantity>10</resize-quantity>
      <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
      <victim-selection-policy>LRU</victim-selection-policy>
   </bean-cache>
</ejb>
----

[[beast]][[GSDPG00143]][[ejb-name]]

`ejb-name`
~~~~~~~~~~

In the `glassfish-ejb-jar.xml` file, matches the `ejb-name` in the
corresponding `ejb-jar.xml` file. The name must be unique among the
names of the enterprise beans in the same EJB JAR file.

There is no architected relationship between the `ejb-name` in the
deployment descriptor and the JNDI name that the deployer assigns to the
EJB component's home.

In the `sun-cmp-mappings.xml` file, specifies the `ejb-name` of the
entity bean in the `ejb-jar.xml` file to which the container-managed
persistence (CMP) bean corresponds.

[[fvyug]][[GSDPG00459]][[superelements-58]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`], link:#beauz[`method`] (`glassfish-ejb-jar.xml`);
link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)

[[fvyue]][[GSDPG00460]][[subelements-56]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasu]][[GSDPG00144]][[ejb-ref]]

`ejb-ref`
~~~~~~~~~

Maps the `ejb-ref-name` in the corresponding Java EE deployment
descriptor file `ejb-ref` entry to the absolute `jndi-name` of a
resource.

The `ejb-ref` element is used for the declaration of a reference to an
EJB's home. Applies to session beans or entity beans.

[[fvyub]][[GSDPG00461]][[superelements-59]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[fvyua]][[GSDPG00462]][[subelements-57]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `ejb-ref` element.

[[GSDPG907]][[sthref88]][[fvyui]]


Table C-53 `ejb-ref` Subelements

[width="100%",cols="26%,11%,63%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beasv[`ejb-ref-name`]


 |only one |Specifies the `ejb-ref-name` in the corresponding Java EE
deployment descriptor file `ejb-ref` entry.

a|
link:#beatw[`jndi-name`]


 |only one |Specifies the absolute `jndi-name` of a resource.
|=======================================================================


[[beasv]][[GSDPG00145]][[ejb-ref-name]]

`ejb-ref-name`
~~~~~~~~~~~~~~

Specifies the `ejb-ref-name` in the corresponding Java EE deployment
descriptor file `ejb-ref` entry.

[[fvyuh]][[GSDPG00463]][[superelements-60]]

Superelements
^^^^^^^^^^^^^

link:#beasu[`ejb-ref`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyuj]][[GSDPG00464]][[subelements-58]]

Subelements
^^^^^^^^^^^

none - contains data

[[gaubh]][[GSDPG00146]][[eligible]]

`eligible`
~~~~~~~~~~

Specifies whether the application client module is eligible to be Java
Web Start enabled. Allowed values are `true` (the default) and `false`.

[[gaubg]][[GSDPG00465]][[superelements-61]]

Superelements
^^^^^^^^^^^^^

link:#gauax[`java-web-start-access`]
(`glassfish-application-client.xml`)

[[gauaz]][[GSDPG00466]][[subelements-59]]

Subelements
^^^^^^^^^^^

none - contains data

[[beasw]][[GSDPG00147]][[endpoint-address-uri]]

`endpoint-address-uri`
~~~~~~~~~~~~~~~~~~~~~~

Specifies the relative path combined with the web server root to form
the fully qualified endpoint address for a web service endpoint. This is
a required element for EJB endpoints and an optional element for servlet
endpoints.

For servlet endpoints, this value is relative to the web application
context root. For EJB endpoints, the URI is relative to root of the web
server (the first portion of the URI is a context root). The context
root portion must not conflict with the context root of any web
application deployed to the same web server.

In all cases, this value must be a fixed pattern (no "`*`' allowed).

If the web service endpoint is a servlet that implements only a single
endpoint and has only one `url-pattern`, it is not necessary to set this
value, because the web container derives it from the `web.xml` file.

[[fvyul]][[GSDPG00467]][[superelements-62]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvyum]][[GSDPG00468]][[subelements-60]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvyuk]][[GSDPG00469]][[example-4]]

Example
^^^^^^^

If the web server is listening at `http://localhost:8080`, the following
`endpoint-address-uri`:

[source,oac_no_warn]
----
<endpoint-address-uri>StockQuoteService/StockQuotePort</endpoint-address-uri>
----

results in the following target endpoint address:

[source,oac_no_warn]
----
http://localhost:8080/StockQuoteService/StockQuotePort
----

[[beasx]][[GSDPG00148]][[enterprise-beans]]

`enterprise-beans`
~~~~~~~~~~~~~~~~~~

Specifies all the runtime properties for an EJB JAR file in the
application.

[[fvyun]][[GSDPG00470]][[superelements-63]]

Superelements
^^^^^^^^^^^^^

link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)

[[fvyuo]][[GSDPG00471]][[subelements-61]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `enterprise-beans`
element.

[[GSDPG908]][[sthref89]][[fvyut]]


Table C-54 `enterprise-beans` Subelements

[width="100%",cols="27%,12%,61%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavf[`name`]


 |zero or one |Specifies the name string.

a|
link:#beayk[`unique-id`]


 |zero or one |Specifies a unique system identifier. This data is
automatically generated and updated at deployment/redeployment. Do not
specify or edit this value.

a|
link:#beass[`ejb`]


 |zero or more |Defines runtime properties for a single enterprise bean
within the application.

a|
link:#beavq[`pm-descriptors`]


 |zero or one |Deprecated.

a|
link:#bearv[`cmp-resource`]


 |zero or one |Specifies the database to be used for storing
container-managed persistence (CMP) beans in an EJB JAR file.

a|
link:#beauu[`message-destination`]


 |zero or more |Specifies the name of a logical message destination.

a|
link:#beayt[`webservice-description`]


 |zero or more |Specifies a name and optional publish location for a web
service.

a|
link:#beavy[`property` (with subelements)]


 |zero or more |Specifies a property or a variable.
|=======================================================================


[[fvyux]][[GSDPG00472]][[example-5]]

Example
^^^^^^^

[source,oac_no_warn]
----
<enterprise-beans>
 <ejb>
     <ejb-name>CustomerEJB</ejb-name>
     <jndi-name>customer</jndi-name>
     <resource-ref>
         <res-ref-name>jdbc/SimpleBank</res-ref-name>
         <jndi-name>jdbc/__default</jndi-name>
     </resource-ref>
     <is-read-only-bean>false</is-read-only-bean>
     <commit-option>B</commit-option>
     <bean-pool>
         <steady-pool-size>10</steady-pool-size>
        <resize-quantity>10</resize-quantity>
         <max-pool-size>100</max-pool-size>
         <pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
     </bean-pool>
     <bean-cache>
         <max-cache-size>100</max-cache-size>
         <resize-quantity>10</resize-quantity>
         <removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
         <victim-selection-policy>LRU</victim-selection-policy>
     </bean-cache>
 </ejb>
</enterprise-beans>
----

[[beasy]][[GSDPG00149]][[entity-mapping]]

`entity-mapping`
~~~~~~~~~~~~~~~~

Specifies the mapping a bean to database columns.

[[fvyus]][[GSDPG00473]][[superelements-64]]

Superelements
^^^^^^^^^^^^^

link:#beaxy[`sun-cmp-mapping`] (`sun-cmp-mappings.xml`)

[[fvyur]][[GSDPG00474]][[subelements-62]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `entity-mapping`
element.

[[GSDPG909]][[sthref90]][[fvyuz]]


Table C-55 `entity-mapping` Subelements

[width="100%",cols="21%,12%,67%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beast[`ejb-name`]


 |only one |Specifies the name of the entity bean in the `ejb-jar.xml`
file to which the CMP bean corresponds.

a|
link:#beayd[`table-name`]


 |only one |Specifies the name of a database table. The table must be
present in the database schema file.

a|
link:#bearu[`cmp-field-mapping`]


 |one or more |Associates a field with one or more columns to which it
maps.

a|
link:#bearw[`cmr-field-mapping`]


 |zero or more |A container-managed relationship field has a name and
one or more column pairs that define the relationship.

a|
link:#beaxe[`secondary-table`]


 |zero or more |Describes the relationship between a bean's primary and
secondary table.

a|
link:#beasd[`consistency`]


 |zero or one |Specifies container behavior in guaranteeing
transactional consistency of the data in the bean.
|=======================================================================


[[beasz]][[GSDPG00150]][[establish-trust-in-client]]

`establish-trust-in-client`
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies if the target is capable of authenticating a client. The
values are `NONE`, `SUPPORTED`, or `REQUIRED`.

[[fvyuq]][[GSDPG00475]][[superelements-65]]

Superelements
^^^^^^^^^^^^^

link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)

[[fvyuy]][[GSDPG00476]][[subelements-63]]

Subelements
^^^^^^^^^^^

none - contains data

[[beata]][[GSDPG00151]][[establish-trust-in-target]]

`establish-trust-in-target`
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies if the target is capable of authenticating to a client. The
values are `NONE`, `SUPPORTED`, or `REQUIRED`.

[[fvyuu]][[GSDPG00477]][[superelements-66]]

Superelements
^^^^^^^^^^^^^

link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)

[[fvyuv]][[GSDPG00478]][[subelements-64]]

Subelements
^^^^^^^^^^^

none - contains data

[[giyin]][[GSDPG00152]][[external-jndi-resource]]

`external-jndi-resource`
~~~~~~~~~~~~~~~~~~~~~~~~

Defines a resource that resides in an external JNDI repository. For
example, a generic Java object could be stored in an LDAP server. An
external JNDI factory must implement the
javax.naming.spi.InitialContextFactory interface.

[[GSDPG910]][[sthref91]]


[[superelements-67]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG911]][[sthref92]]


[[subelements-65]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the
`external-jndi-resource` element.

[[GSDPG912]][[sthref93]][[sthref94]]


Table C-56 `external-jndi-resource` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG913]][[sthref95]]


[[attributes-15]]
Attributes
^^^^^^^^^^

The following table describes attributes for the
`external-jndi-resource` element.

[[GSDPG914]][[sthref96]][[sthref97]]


Table C-57 `external-jndi-resource` Attributes

[width="172%",cols="13%,46%,41%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`jndi-name` |none |Specifies the JNDI name for the resource.

|`jndi-lookup-name` |none |Specifies the JNDI lookup name for the
resource.

|`res-type` |none |Specifies the fully qualified type of the resource.

|`factory-class` |none a|
Specifies the fully qualified name of the factory class, which
implements javax.naming.spi.InitialContextFactory .

For more information about JNDI, see the link:../application-development-guide/toc.html#GSDVG[GlassFish Server
Open Source Edition Application Development Guide].

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`enabled` |`true` |(optional) Determines whether this resource is
enabled at runtime.
|=======================================================================


[[beatc]][[GSDPG00153]][[fetched-with]]

`fetched-with`
~~~~~~~~~~~~~~

Specifies the fetch group configuration for fields and relationships.
The `fetched-with` element has different allowed and default subelements
based on its parent element and the data types of the fields.

* If there is no `fetched-with` subelement of a
link:#bearu[`cmp-field-mapping`], and the data type is not BLOB, CLOB,
VARBINARY, LONGVARBINARY, or OTHER, `fetched-with` can have any valid
subelement. The default subelement is as follows: +
[source,oac_no_warn]
----
<fetched-with><default/></fetched-with>
----
* If there is no `fetched-with` subelement of a
link:#bearu[`cmp-field-mapping`], and the data type is BLOB, CLOB,
VARBINARY, LONGVARBINARY, or OTHER, `fetched-with` can have any valid
subelement except `<default/>`. The default subelement is as follows: +
[source,oac_no_warn]
----
<fetched-with><none/></fetched-with>
----
* If there is no `fetched-with` subelement of a
link:#bearw[`cmr-field-mapping`], `fetched-with` can have any valid
subelement. The default subelement is as follows: +
[source,oac_no_warn]
----
<fetched-with><none/></fetched-with>
----

Managed fields are multiple CMP or CMR fields that are mapped to the
same column. A managed field can have any `fetched-with` subelement
except `<default/>`. For additional information, see
"link:../application-development-guide/container_managed-persistence.html#GSDVG00306[Managed Fields]" in GlassFish Server Open Source
Edition Application Development Guide.

[[fvyuw]][[GSDPG00479]][[superelements-68]]

Superelements
^^^^^^^^^^^^^

link:#bearu[`cmp-field-mapping`], link:#bearw[`cmr-field-mapping`]
(`sun-cmp-mappings.xml`)

[[fvyup]][[GSDPG00480]][[subelements-66]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `fetched-with`
element.

[[GSDPG915]][[sthref98]][[fvzcz]]


Table C-58 `fetched-with` Subelements

[width="100%",cols="14%,21%,65%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beasl[`default`]


 |exactly one subelement is required |Specifies that a CMP field belongs
to the default hierarchical fetch group, which means it is fetched any
time the bean is loaded from a database. Enables prefetching of a CMR
field.

a|
link:#beaub[`level`]


 |exactly one subelement is required |Specifies the level number of a
hierarchical fetch group.

a|
link:#beavg[`named-group`]


 |exactly one subelement is required |Specifies the name of an
independent fetch group.

a|
link:#beavi[`none`]


 |exactly one subelement is required |Specifies that this field or
relationship is placed into its own individual fetch group, which means
it is loaded from a database the first time it is accessed in this
transaction.
|=======================================================================


[[beatd]][[GSDPG00154]][[field-name]]

`field-name`
~~~~~~~~~~~~

Specifies the Java identifier of a field. This identifier must match the
value of the `field-name` subelement of the `cmp-field` element in the
`ejb-jar.xml` file.

[[fvzcm]][[GSDPG00481]][[superelements-69]]

Superelements
^^^^^^^^^^^^^

link:#bearu[`cmp-field-mapping`] (`sun-cmp-mappings.xml`)

[[fvyxs]][[GSDPG00482]][[subelements-67]]

Subelements
^^^^^^^^^^^

none - contains data

[[beate]][[GSDPG00155]][[finder]]

`finder`
~~~~~~~~

Describes the finders for CMP 1.1 with a method name and query.

[[fvzao]][[GSDPG00483]][[superelements-70]]

Superelements
^^^^^^^^^^^^^

link:#beavk[`one-one-finders`] (`glassfish-ejb-jar.xml`)

[[fvzdc]][[GSDPG00484]][[subelements-68]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `finder` element.

[[GSDPG916]][[sthref99]][[fvyzu]]


Table C-59 `finder` Subelements

[width="100%",cols="31%,13%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavb[`method-name`]


 |only one |Specifies the method name for the finder.

a|
link:#beawe[`query-params`]


 |zero or one |Specifies the query parameters for the CMP 1.1 finder.

a|
link:#beawb[`query-filter`]


 |zero or one |Specifies the query filter for the CMP 1.1 finder.

a|
link:#beawf[`query-variables`]


 |zero or one |Specifies variables in query expression for the CMP 1.1
finder.

a|
link:#beawd[`query-ordering`]


 |zero or one |Specifies the query ordering for the CMP 1.1 finder.
|=======================================================================


[[beatf]][[GSDPG00156]][[flush-at-end-of-method]]

`flush-at-end-of-method`
~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the methods that force a database flush after execution.
Applicable to entity beans.

[[fvzcw]][[GSDPG00485]][[superelements-71]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyza]][[GSDPG00486]][[subelements-69]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`flush-at-end-of-method` element.

[[GSDPG917]][[sthref100]][[fvzba]]


Table C-60 `flush-at-end-of-method` Subelements

[width="100%",cols="26%,18%,56%",options="header",]
|======================================
|Element |Required |Description
a|
link:#beauz[`method`]


 |one or more |Specifies a bean method.
|======================================


[[beath]][[GSDPG00157]][[gen-classes]]

`gen-classes`
~~~~~~~~~~~~~

Specifies all the generated class names for a bean.


[NOTE]
=======================================================================

This value is automatically generated by the server at deployment or
redeployment time. Do not specify it or change it after deployment.

=======================================================================


[[fvyyh]][[GSDPG00487]][[superelements-72]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvzee]][[GSDPG00488]][[subelements-70]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `gen-classes` element.

[[GSDPG918]][[sthref101]][[fvzdo]]


Table C-61 `gen-classes` Subelements

[width="100%",cols="20%,11%,69%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beawn[`remote-impl`]


 |zero or one |Specifies the fully-qualified class name of the generated
`EJBObject` impl class.

a|
link:#beaud[`local-impl`]


 |zero or one |Specifies the fully-qualified class name of the generated
`EJBLocalObject` impl class.

a|
link:#beawm[`remote-home-impl`]


 |zero or one |Specifies the fully-qualified class name of the generated
`EJBHome` impl class.

a|
link:#beauc[`local-home-impl`]


 |zero or one |Specifies the fully-qualified class name of the generated
`EJBLocalHome` impl class.
|=======================================================================


[[beaxw]][[GSDPG00158]][[glassfish-application]]

`glassfish-application`
~~~~~~~~~~~~~~~~~~~~~~~

Defines the GlassFish Server specific configuration for an application.
This is the root element; there can only be one `glassfish-application`
element in a `glassfish-application.xml` file. See
link:dd-files.html#beaqk[The glassfish-application.xml File].

[[fvzhn]][[GSDPG00489]][[superelements-73]]

Superelements
^^^^^^^^^^^^^

none

[[fvzgn]][[GSDPG00490]][[subelements-71]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`glassfish-application` element.

[[GSDPG919]][[sthref102]][[fvzhl]]


Table C-62 `glassfish-application` Subelements

[width="100%",cols="28%,12%,60%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beayr[`web`]


 |zero or more |Specifies the application's web tier configuration.

a|
link:#beavo[`pass-by-reference`]


 |zero or one |Determines whether EJB modules use pass-by-value or
pass-by-reference semantics.

a|
link:#beayk[`unique-id`]


 |zero or one |Contains the unique ID for the application.

a|
link:#beaxg[`security-role-mapping`]


 |zero or more |Maps a role in the corresponding Java EE XML file to a
user or group.

a|
link:#beawi[`realm`]


 |zero or one |Specifies an authentication realm.

a|
link:#beasu[`ejb-ref`]


 |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
corresponding Java EE XML file.

a|
link:#beaww[`resource-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
corresponding Java EE XML file.

a|
link:#beawu[`resource-env-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
the corresponding Java EE XML file.

a|
link:#beaxk[`service-ref`]


 |zero or more |Specifies runtime settings for a web service reference.

a|
link:#gauao[`message-destination-ref`]


 |zero or more |Specifies the name of a physical message destination.

a|
link:#beauu[`message-destination`]


 |zero or more |Specifies the name of a logical message destination.

a|
link:#gjizj[`archive-name`]


 |zero or one |Specifies the name of the archive file.

a|
link:#gjjak[`compatibility`]


 |zero or one |Specifies the GlassFish Server release with which to be
backward compatible in terms of JAR visibility requirements for
applications.

a|
link:#gkhtr[`keep-state`]


 |zero or one |Retains web sessions, stateful session bean instances,
and persistently created EJB timers across redeployments.

a|
link:#gkkfd[`version-identifier`]


 |zero or one |Contains version information for an application.
|=======================================================================


[[beaxx]][[GSDPG00159]][[glassfish-application-client]]

`glassfish-application-client`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Defines the GlassFish Server specific configuration for an application
client. This is the root element; there can only be one
`glassfish-application-client` element in a
`glassfish-application-client.xml` file. See link:dd-files.html#beaqo[The
glassfish-application-client.xml file].

[[fvzgq]][[GSDPG00491]][[superelements-74]]

Superelements
^^^^^^^^^^^^^

none

[[fvzja]][[GSDPG00492]][[subelements-72]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`glassfish-application-client` element.

[[GSDPG920]][[sthref103]][[fvzjh]]


Table C-63 `glassfish-application-client` subelements

[width="100%",cols="28%,12%,60%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beasu[`ejb-ref`]


 |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
corresponding Java EE XML file.

a|
link:#beaww[`resource-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
corresponding Java EE XML file.

a|
link:#beawu[`resource-env-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
the corresponding Java EE XML file.

a|
link:#beaxk[`service-ref`]


 |zero or more |Specifies runtime settings for a web service reference.

a|
link:#gauao[`message-destination-ref`]


 |zero or more |Specifies the name of a physical message destination.

a|
link:#beauu[`message-destination`]


 |zero or more |Specifies the name of a logical message destination.

a|
link:#gauax[`java-web-start-access`]


 |zero or one |Specifies changes to default Java Web Start parameters.

a|
link:#gkkfd[`version-identifier`]


 |zero or one |Contains version information for an application client.
|=======================================================================


[[beaya]][[GSDPG00160]][[glassfish-ejb-jar]]

`glassfish-ejb-jar`
~~~~~~~~~~~~~~~~~~~

Defines the GlassFish Server specific configuration for an EJB JAR file.
This is the root element; there can only be one `glassfish-ejb-jar`
element in a `glassfish-ejb-jar.xml` file. See
link:dd-files.html#beaqm[The glassfish-ejb-jar.xml File].

[[fvzhw]][[GSDPG00493]][[superelements-75]]

Superelements
^^^^^^^^^^^^^

none

[[fvzfv]][[GSDPG00494]][[subelements-73]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `glassfish-ejb-jar`
element.

[[GSDPG921]][[sthref104]][[fvzfu]]


Table C-64 `glassfish-ejb-jar` Subelements

[width="100%",cols="36%,12%,52%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxg[`security-role-mapping`]


 |zero or more |Maps a role in the corresponding Java EE XML file to a
user or group.

a|
link:#beasx[`enterprise-beans`]


 |only one |Describes all the runtime properties for an EJB JAR file in
the application.

a|
link:#gjjak[`compatibility`]


 |zero or one |Specifies the GlassFish Server release with which to be
backward compatible in terms of JAR visibility requirements for
applications.

a|
link:#gkhtw[`disable-nonportable-jndi-names`]


 |zero or one |Disables GlassFish Server specific JNDI names.

a|
link:#gkhtr[`keep-state`]


 |zero or one |Retains stateful session bean instances and persistently
created EJB timers across redeployments.

a|
link:#gkkfd[`version-identifier`]


 |zero or one |Contains version information for an EJB module.
|=======================================================================


[[beayb]][[GSDPG00161]][[glassfish-web-app]]

`glassfish-web-app`
~~~~~~~~~~~~~~~~~~~

Defines GlassFish Server specific configuration for a web module. This
is the root element; there can only be one `glassfish-web-app` element
in a `glassfish-web.xml` file. See link:dd-files.html#beaql[The
glassfish-web.xml File].

[[fvzgj]][[GSDPG00495]][[superelements-76]]

Superelements
^^^^^^^^^^^^^

none

[[fvzhr]][[GSDPG00496]][[subelements-74]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `glassfish-web-app`
element.

[[GSDPG922]][[sthref105]][[fvzgf]]


Table C-65 `glassfish-web-app` Subelements

[width="100%",cols="28%,12%,60%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beasg[`context-root`]


 |zero or one |Contains the web context root for the web module.

a|
link:#beaxg[`security-role-mapping`]


 |zero or more |Maps roles to users or groups in the currently active
realm.

a|
link:#beaxm[`servlet`]


 |zero or more |Specifies a principal name for a servlet, which is used
for the `run-as` role defined in `web.xml`.

a|
link:#beatm[`idempotent-url-pattern`]


 |zero or more |Specifies a URL pattern for idempotent requests.

a|
link:#beaxp[`session-config`]


 |zero or one |Specifies session manager, session cookie, and other
session-related information.

a|
link:#beasu[`ejb-ref`]


 |zero or more |Maps the absolute JNDI name to the `ejb-ref` in the
corresponding Java EE XML file.

a|
link:#beaww[`resource-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-ref` in the
corresponding Java EE XML file.

a|
link:#beawu[`resource-env-ref`]


 |zero or more |Maps the absolute JNDI name to the `resource-env-ref` in
the corresponding Java EE XML file.

a|
link:#beaxk[`service-ref`]


 |zero or more |Specifies runtime settings for a web service reference.

a|
link:#gauao[`message-destination-ref`]


 |zero or more |Specifies the name of a physical message destination.

a|
link:#beard[`cache`]


 |zero or one |Configures caching for web application components.

a|
link:#bearq[`class-loader`]


 |zero or one |Specifies class loader configuration information.

a|
link:#beatx[`jsp-config`]


 |zero or one |Specifies JSP configuration information.

a|
link:#beaue[`locale-charset-info`]


 |zero or one |Deprecated. Use the `parameter-encoding` subelement of
`glassfish-web-app` instead.

a|
link:#beavn[`parameter-encoding`]


 |zero or one |Determines the default request character encoding and how
the web container decodes parameters from forms according to a hidden
field value.

a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.

a|
link:#gikqk[`valve`]


 |zero or more |Specifies a custom valve.

a|
link:#beauu[`message-destination`]


 |zero or more |Specifies the name of a logical message destination.

a|
link:#beayt[`webservice-description`]


 |zero or more |Specifies a name and optional publish location for a web
service.

a|
link:#gkhtr[`keep-state`]


 |zero or one |Retains web sessions across redeployments.

a|
link:#gkkfd[`version-identifier`]


 |zero or one |Contains version information for a web application.
|=======================================================================


[[fvzia]][[GSDPG00497]][[attributes-16]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `glassfish-web-app`
element.

[[GSDPG923]][[sthref106]][[fvzjf]]


Table C-66 `glassfish-web-app` Attributes

[width="172%",cols="17%,46%,37%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`error-url` |(blank) |(optional) Not implemented. Do not use.

|`httpservlet-``security-``provider` |none |(optional) Specifies the
`HttpServlet` message layer provider that the web container's servlet
`auth-constraint` processing calls.
|=======================================================================


[[fvzgt]][[GSDPG00498]][[properties-7]]

Properties
^^^^^^^^^^

The following table describes properties for the `glassfish-web-app`
element.

[[GSDPG924]][[sthref107]][[fvzim]]


Table C-67 `glassfish-web-app` Properties

[width="100%",cols="35%,23%,42%",options="header",]
|=======================================================================
|Property |Default |Description
|`allowLinking` |`false` a|
If `true`, resources in this web application that are symbolic links are
served. You can also define this property for a virtual server. Web
applications on the virtual server that do not define this property use
the virtual server's value. For details, see
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

Caution: Setting this property to `true` on Windows systems exposes JSP
source code.

|`alternatedocroot_n` |none a|
Specifies an alternate document root (docroot), where n is a positive
integer that allows specification of more than one. Alternate docroots
allow web applications to serve requests for certain resources from
outside their own docroot, based on whether those requests match one (or
more) of the URI patterns of the web application's alternate docroots.

If a request matches an alternate docroot's URI pattern, it is mapped to
the alternate docroot by appending the request URI (minus the web
application's context root) to the alternate docroot's physical location
(directory). If a request matches multiple URI patterns, the alternate
docroot is determined according to the following precedence order:

* Exact match
* Longest path match
* Extension match

For example, the following properties specify three alternate docroots.
The URI pattern of the first alternate docroot uses an exact match,
whereas the URI patterns of the second and third alternate docroots use
extension and longest path prefix matches, respectively.

[source,oac_no_warn]
----
<property name="alternatedocroot_1" 
   value="from=/my.jpg dir=/srv/images/jpg"/>
<property name="alternatedocroot_2" 
   value="from=*.jpg dir=/srv/images/jpg"/>
<property name="alternatedocroot_3" 
   value="from=/jpg/* dir=/src/images"/>
----

The `value` of each alternate docroot has two components: The first
component, `from`, specifies the alternate docroot's URI pattern, and
the second component, `dir`, specifies the alternate docroot's physical
location (directory). Spaces are allowed in the `dir` component.

You can set this property for all the web applications on a specific
virtual server. For details, see
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

|`valve_n` |none a|
This property is deprecated. Use the link:#gikqk[`valve`] subelement
instead.

Specifies a fully qualified class name of a custom valve, where n is a
positive integer that allows specification of more than one. The valve
class must implement the org.apache.catalina.Valve interface from Tomcat
or previous GlassFish Server releases, or the
org.glassfish.web.valve.GlassFishValve interface from the current
GlassFish Server release. For example:

[source,oac_no_warn]
----
<property name="valve_1" 
   value="org.glassfish.extension.Valve"/>
----

You can set this property for all the web applications on a specific
virtual server. For details, see
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

|`listener_n` |none a|
Specifies a fully qualified class name of a custom Catalina listener,
where n is a positive integer that allows specification of more than
one. The listener class must implement the
org.apache.catalina.ContainerListener,
org.apache.catalina.LifecycleListener, or
org.apache.catalina.InstanceListener interface. For example:

[source,oac_no_warn]
----
<property name="listener_1" 
   value="org.glassfish.extension.MyLifecycleListener"/>
----

You can set this property for all the web applications on a specific
virtual server. For details, see
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

|`crossContextAllowed` |`true` |If `true`, allows this web application
to access the contexts of other web applications using the
`ServletContext.``getContext()`method.

|`relativeRedirectAllowed` |`false` |If `true`, allows this web
application to send a relative URL to the client using
`HttpServletResponse.``sendRedirect()`, and instructs the web container
not to translate any relative URLs to fully qualified ones.

|`reuseSessionID` |`false` |If `true`, sessions generated for this web
application use the session ID specified in the request.

|`securePagesWithPragma` |`true` a|
Set this property to `false` to ensure that for this web application
file downloads using SSL work properly in Internet Explorer.

You can set this property for all the web applications on a specific
virtual server. For details, see
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

|`singleThreadedServletPoolSize` |`5` |Specifies the maximum number of
servlet instances allocated for each `SingleThreadModel` servlet in the
web application.

|`tempdir` a|
domain-dir`/generated/`app-name

or

domain-dir`/generated/`module-name

 |Specifies a temporary directory for use by this web module. This value
is used to construct the value of the `javax.servlet.context.``tempdir`
context attribute. Compiled JSP files are also placed in this directory.

|`useResponseCTForHeaders` |`false` |If `true`, response headers are
encoded using the response's charset instead of the default (UTF-8).
|=======================================================================


[[giygy]][[GSDPG00162]][[group-map]]

`group-map`
~~~~~~~~~~~

Maps an EIS group to a group defined in the GlassFish Server domain.

[[GSDPG925]][[sthref108]]


[[superelements-77]]
Superelements
^^^^^^^^^^^^^

link:#giyht[`work-security-map`] (`glassfish-resources.xml`)

[[giyid]][[GSDPG00499]][[subelements-75]]

Subelements
^^^^^^^^^^^

none

[[GSDPG926]][[sthref109]]


[[attributes-17]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `group-map` element.

[[GSDPG927]][[sthref110]][[sthref111]]


Table C-68 `group-map` Attributes

[width="181%",cols="13%,49%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`eis-group` |none |Specifies an EIS group.

|`mapped-group` |none |Specifies a group defined in the GlassFish Server
domain.
|=======================================================================


[[beati]][[GSDPG00163]][[group-name]]

`group-name`
~~~~~~~~~~~~

Specifies a group name in the current realm.

[[fvzak]][[GSDPG00500]][[superelements-78]]

Superelements
^^^^^^^^^^^^^

link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
`glassfish-web.xml`, `glassfish-ejb-jar.xml`)

[[fvywm]][[GSDPG00501]][[subelements-76]]

Subelements
^^^^^^^^^^^

none - contains data

[[beatk]][[GSDPG00502]][[http-method]]

`http-method`
^^^^^^^^^^^^^

Specifies an HTTP method that is eligible for caching. The default is
`GET`.

[[fvzbq]][[GSDPG00317]][[superelements-79]]

Superelements
+++++++++++++

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvyyj]][[GSDPG00318]][[subelements-77]]

Subelements
+++++++++++

none - contains data

[[beatm]][[GSDPG00164]][[idempotent-url-pattern]]

`idempotent-url-pattern`
~~~~~~~~~~~~~~~~~~~~~~~~

Specifies a URL pattern for idempotent requests.

[[fvzaj]][[GSDPG00503]][[superelements-80]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvzea]][[GSDPG00504]][[subelements-78]]

Subelements
^^^^^^^^^^^

none

[[fvyxx]][[GSDPG00505]][[attributes-18]]

Attributes
^^^^^^^^^^

The following table describes attributes for the
`idempotent-url-pattern` element.

[[GSDPG928]][[sthref112]][[fvzca]]


Table C-69 `idempotent-url-pattern` Attributes

[width="181%",cols="12%,49%,39%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`url-pattern` |none |Specifies a URL pattern, which can contain
wildcards. The URL pattern must conform to the mappings specified in
section SRV 11.2 of the Servlet 2.4 specification.

|`no-of-retries` |`-1` |(optional) Specifies the number of times the
load balancer retries an idempotent request. A value of `-1` indicates
infinite retries.
|=======================================================================


[[fvyxy]][[GSDPG00506]][[example-6]]

Example
^^^^^^^

The following example specifies that all requests for the URI
`sun-java/*` are idempotent.

[source,oac_no_warn]
----
<idempotent-url-pattern url-pattern="sun_java/*" no-of-retries="10"/>
----

[[beatn]][[GSDPG00165]][[integrity]]

`integrity`
~~~~~~~~~~~

Specifies if the target supports integrity-protected messages. The
values are `NONE`, `SUPPORTED`, or `REQUIRED`.

[[fvzdj]][[GSDPG00507]][[superelements-81]]

Superelements
^^^^^^^^^^^^^

link:#beayh[`transport-config`] (`glassfish-ejb-jar.xml`)

[[fvzdv]][[GSDPG00508]][[subelements-79]]

Subelements
^^^^^^^^^^^

none - contains data

[[beato]][[GSDPG00166]][[ior-security-config]]

`ior-security-config`
~~~~~~~~~~~~~~~~~~~~~

Specifies the security information for the interoperable object
reference (IOR).

[[fvzbe]][[GSDPG00509]][[superelements-82]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvzbv]][[GSDPG00510]][[subelements-80]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `ior-security-config`
element.

[[GSDPG929]][[sthref113]][[fvyyk]]


Table C-70 `ior-security-config` Subelements

[width="100%",cols="20%,11%,69%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beayh[`transport-config`]


 |zero or one |Specifies the security information for transport.

a|
link:#beaqw[`as-context`]


 |zero or one |Specifies the authentication mechanism used to
authenticate the client. If specified, it is `USERNAME_PASSWORD`.

a|
link:#beaxb[`sas-context`]


 |zero or one |Describes the sas-context fields.
|=======================================================================


[[beatp]][[GSDPG00167]][[is-cache-overflow-allowed]]

`is-cache-overflow-allowed`
~~~~~~~~~~~~~~~~~~~~~~~~~~~

This element is deprecated. Do not use.

[[fvzcu]][[GSDPG00511]][[superelements-83]]

Superelements
^^^^^^^^^^^^^

link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)

[[beatq]][[GSDPG00168]][[is-one-one-cmp]]

`is-one-one-cmp`
~~~~~~~~~~~~~~~~

This element is not used.

[[fvyww]][[GSDPG00512]][[superelements-84]]

Superelements
^^^^^^^^^^^^^

link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)

[[beatr]][[GSDPG00169]][[is-read-only-bean]]

`is-read-only-bean`
~~~~~~~~~~~~~~~~~~~

Specifies that this entity bean is a read-only bean if `true`. If this
element is absent, the default value of `false` is used.

[[fvzan]][[GSDPG00513]][[superelements-85]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyvx]][[GSDPG00514]][[subelements-81]]

Subelements
^^^^^^^^^^^

none - contains data

[[beatt]][[GSDPG00170]][[java-method]]

`java-method`
~~~~~~~~~~~~~

Specifies a method.

[[fvyyw]][[GSDPG00515]][[superelements-86]]

Superelements
^^^^^^^^^^^^^

link:#beaut[`message`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyvo]][[GSDPG00516]][[subelements-82]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `java-method` element.

[[GSDPG930]][[sthref114]][[fvzdu]]


Table C-71 `java-method` Subelements

[width="100%",cols="30%,14%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavb[`method-name`]


 |only one |Specifies a method name.

a|
link:#beavd[`method-params`]


 |zero or one |Specifies fully qualified Java type names of method
parameters.
|=======================================================================


[[gauax]][[GSDPG00171]][[java-web-start-access]]

`java-web-start-access`
~~~~~~~~~~~~~~~~~~~~~~~

Specifies changes to default Java Web Start parameters for an embedded
or stand-alone application client module.

[[gauba]][[GSDPG00517]][[superelements-87]]

Superelements
^^^^^^^^^^^^^

link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[gauav]][[GSDPG00518]][[subelements-83]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`java-web-start-access` element.

[[GSDPG931]][[sthref115]][[gauaw]]


Table C-72 `java-web-start-access` subelements

[width="100%",cols="15%,11%,74%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beasg[`context-root`]


 |zero or one a|
Contains the context root for the Java Web Start enabled application
client module. If none is specified, a default is generated.

The default for a web module is as follows:

[source,oac_no_warn]
----
http://host:port/app-name/relative-URI-to-appclient-jar
----

The default for a stand-alone application client module is as follows:

[source,oac_no_warn]
----
http://host:port/module-name
----

If the `module-name` is not specified during deployment, the name of the
EAR or JAR file without the extension is used. If the web module is not
in EAR or JAR file format, a name is generated and written to the server
log.

a|
link:#gaubh[`eligible`]


 |zero or one |Specifies whether the application client module is
eligible to be Java Web Start enabled. Allowed values are `true` (the
default) and `false`.

a|
link:#gbgdw[`vendor`]


 |zero or one |Specifies the name of the vendor as it appears in Java
Web Start download and launch screens. The default value is
`Application Client`.

a|
link:#gkhun[`jnlp-doc`]


 |zero or one |Specifies the name of a custom JNLP file. If none is
specified, a default JNLP file is generated.
|=======================================================================


[[giyil]][[GSDPG00172]][[jdbc-connection-pool]]

`jdbc-connection-pool`
~~~~~~~~~~~~~~~~~~~~~~

Defines the attributes and properties that are required for creating a
JDBC connection pool.

[[GSDPG932]][[sthref116]]


[[superelements-88]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG933]][[sthref117]]


[[subelements-84]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `jdbc-connection-pool`
element.

[[GSDPG934]][[sthref118]][[sthref119]]


Table C-73 `jdbc-connection-pool` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG935]][[sthref120]]


[[attributes-19]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `jdbc-connection-pool`
element. Changing the following attributes requires a server restart or
the redeployment or disabling and re-enabling of applications that refer
to the resource: `datasource-classname`, `associate-with-thread`,
`lazy-connection-association`, and `lazy-connection-enlistment`.

[[GSDPG936]][[sthref121]][[sthref122]]


Table C-74 `jdbc-connection-pool` Attributes

[width="181%",cols="24%,49%,27%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the name of the connection pool. A
link:#giyhm[`jdbc-resource`] element's `pool-name` attribute refers to
this `name`.

|`datasource-``classname` |none |(optional) Specifies the class name of
the associated vendor-supplied data source. This class must implement
javax.sql.DataSource, javax.sql.XADataSource ,
javax.sql.ConnectionPoolDatasource , or a combination.

|`res-type` |none |(optional) Specifies the interface the data source
class implements. The value of this attribute can be
javax.sql.DataSource, javax.sql.XADataSource ,
javax.sql.ConnectionPoolDatasource , or java.sql.Driver. To support
configuration of JDBC drivers and applications that use java.sql.Driver
implementations, set this attribute to java.sql.Driver . This attribute
must be specified to avoid ambiguity when a data source class implements
two or more of these interfaces or when a `driver-classname` is
specified. An error occurs if this attribute has a legal value and the
indicated interface is not implemented by the data source class.

|`driver-``classname` |none |(optional) Specifies the vendor-supplied
JDBC driver class name. This driver must implement the java.sql.Driver
interface.

|`ping` |`false` |(optional) Specifies whether to ping the pool during
pool creation or reconfiguration to identify and warn of any erroneous
attribute values.

|`steady-pool-size` |`8` |(optional) Specifies the initial and minimum
number of connections maintained in the pool.

|`max-pool-size` |`32` |(optional) Specifies the maximum number of
connections that can be created to satisfy client requests.

|`max-wait-time-``in-millis` |`60000` |(optional) Specifies the amount
of time, in milliseconds, that the caller is willing to wait for a
connection. If `0`, the caller is blocked indefinitely until a resource
is available or an error occurs.

|`pool-resize-``quantity` |`2` a|
(optional) Specifies the number of idle connections to be destroyed if
the existing number of connections is above the `steady-pool-size`
(subject to the `max-pool-size` limit).

This is enforced periodically at the `idle-timeout-in-seconds` interval.
An idle connection is one that has not been used for a period of
`idle-timeout-in-seconds`. When the pool size reaches
`steady-pool-size`, connection removal stops.

|`idle-timeout-``in-seconds` |`300` a|
(optional) Specifies the maximum time that a connection can remain idle
in the pool. After this amount of time, the pool can close this
connection.

This timeout value must be kept shorter than the server side (database)
timeout value to prevent the accumulation of unusable connections in the
application.

|`transaction-``isolation-level` |default JDBC driver isolation level a|
(optional) Specifies the transaction isolation level on the pooled
database connections. Allowed values are `read-uncommitted`,
`read-committed` , `repeatable-read`, or `serializable`.

Applications that change the isolation level on a pooled connection
programmatically risk polluting the pool, which can lead to errors. See
`is-isolation-``level-``guaranteed` for more details.

|`is-isolation-``level-guaranteed` |`true` |(optional) Applicable only
when `transaction-``isolation-``level` is explicitly set. If `true`,
every connection obtained from the pool is guaranteed to have the
desired isolation level. This might impact performance on some JDBC
drivers. Only set this attribute to `false` if you are certain that the
hosted applications do not return connections with altered isolation
levels.

|`is-connection-``validation-``required` |`false` |(optional) Specifies
whether connections have to be validated before being given to the
application. If a resource's validation fails, it is destroyed, and a
new resource is created and returned.

|`connection-``validation-``method` |`table` a|
(optional) Legal values are as follows:

* `auto-commit`, which uses
`Connection.``setAutoCommit``(Connection.``getAutoCommit())`
* `meta-data`, which uses `Connection.getMetaData()`
* `table`, which performs a query on a table specified in the
`validation-table-name` attribute
* `custom-validation`, which uses a user-defined validation mechanism
specified by the custom implementation class in `validation-classname`.

Because many JDBC drivers cache the results of `auto-commit` and
`meta-data` calls, they do not always provide reliable validations.
Check with the driver vendor to determine whether these calls are cached
or not.

The `table` must exist and be accessible, but it doesn't require any
rows. Do not use an existing table that has a large number of rows or a
table that is already frequently accessed.

|`validation-``table-``name` |none |(optional) Specifies the table name
to be used to perform a query to validate a connection. This parameter
is mandatory if and only if `connection-``validation-``method` is set to
`table`.

|`validation-``classname` |none a|
(optional) Specifies the custom validation implementation class name.
This parameter is mandatory if `connection-validation-method` is set to
`custom-validation`. The classname provided must be accessible to the
GlassFish Server. The specified class must implement the
org.glassfish.api.jdbc.ConnectionValidation interface.

GlassFish Server provides the following custom validation class
templates for MSSQL, DB2, and Sybase databases. All of them implement
the org.glassfish.api.jdbc.ConnectionValidation interface.

* `org.glassfish.api.jdbc.MSSQLConnectionValidation`
* `org.glassfish.api.jdbc.DB2ConnectionValidation`
* `org.glassfish.api.jdbc.SybaseConnectionValidation`

|`init-sql` |none |(optional) Specifies an SQL string to be executed
whenever a connection is created (not reused) in the pool. This
initializes the state of the connection.

|`fail-all-``connections` |`false` |(optional) If `true`, closes all
connections in the pool if a single validation check fails. This
parameter is mandatory if and only if
`is-connection-``validation-``required` is set to `true`.

|`non-transactional-``connections` |`false` |(optional) If `true`,
non-transactional connections can be made to the JDBC connection pool.
These connections are not automatically enlisted with the transaction
manager.

|`allow-non-``component-``callers` |`false` |(optional) If `true`,
non-Java-EE components, such as servlet filters, lifecycle modules, and
third party persistence managers, can use this JDBC connection pool. The
returned connection is automatically enlisted with the transaction
context obtained from the transaction manager. Standard Java EE
components can also use such pools. Connections obtained by
non-component callers are not automatically closed at the end of a
transaction by the container. They must be explicitly closed by the
caller.

|`validate-atmost-``once-period-``in-``seconds` |`0` a|
(optional) Specifies the time interval within which a connection is
validated at most once. Minimizes the number of validation calls.

A value of zero implies that GlassFish Server does not attempt to
minimize the number of validation requests by a connection. That is, a
value of zero disables this attribute. As a result, the same connection
is validated every time the application acquires the connection.

|`connection-``leak-timeout-``in-seconds` |`0` a|
(optional) Detects potential connection leaks by the application. A
connection that is not returned back to the pool by the application
within the specified period is assumed to be potentially leaking, and a
stack trace of the caller is logged. A zero value disables leak
detection. A nonzero value enables leak tracing.

Use this attribute along with `connection-leak-reclaim` to avoid
potential connection leaks from the application.

|`connection-leak-``reclaim` |`false` |(optional) If `true`, the pool
will reclaim a connection after `connection-leak-timeout-in-seconds`
occurs.

|`connection-creation-``retry-attempts` |`0` |(optional) Specifies the
number of attempts to create a new connection in case of a failure.

|`connection-creation-``retry-interval-``in-seconds` |`10` |(optional)
Specifies the time interval between attempts to create a connection when
`connection-creation-retry-attempts` is greater than `0`.

|`statement-leak-``timeout-``in-seconds` |`0` a|
(optional) Detects potential statement leaks by the application. A
statement that is not closed by the application within the specified
period is assumed to be potentially leaking, and a stack trace of the
caller is logged. A zero value disables leak detection. A nonzero value
enables leak tracing.

Use this attribute along with `statement-leak-reclaim` to avoid
potential statement leaks from the application.

|`statement-leak-``reclaim` |`false` |(optional) If `true`, the reclaim
of a statement after `statement-leak-timeout-in-seconds` occurs.

|`statement-timeout-``in-seconds` |`-1` a|
(optional) Sets the query timeout property of a statement to enable
termination of abnormally long running queries. The default value of
`-1` disables this feature.

An abnormally long running JDBC query executed by an application may
leave it in a hanging state unless a timeout is explicitly set on the
statement. This attribute guarantees that all queries automatically time
out if not completed within the specified period. When statements are
created, the `queryTimeout` is set according to the value specified in
this attribute. This works only when the underlying JDBC driver supports
`queryTimeout` for `Statement`, `PreparedStatement`,
`CallableStatement`, and `ResultSet`.

|`lazy-connection-``enlistment` |`false` |(optional) If `true`, a
connection is not enlisted in a transaction until it is used. If
`false`, any connection object available to a transaction is enlisted in
the transaction.

|`lazy-connection-``association` |`false` |(optional) If `true`, a
physical connection is not associated with a logical connection until it
is used. If `false`, a physical connection is associated with a logical
connection even before it is used.

|`associate-with-``thread` |`false` a|
(optional) Specifies whether connections are associated with the thread
to enable the thread to reuse the connections. If `true`, allows
connections to be saved as `ThreadLocal` in the calling thread.
Connections get reclaimed only when the calling thread dies or when the
calling thread is not in use and the pool has run out of connections. If
`false`, the thread must obtain a connection from the pool each time the
thread requires a connection.

This attribute associates connections with a thread such that when the
same thread is in need of connections, it can reuse the connections
already associated with that thread. In this case, the overhead of
getting connections from the pool is avoided. However, when this value
is set to `true`, you should verify that the value of the
`max-pool-size` attribute is comparable to the `max-thread-pool-size`
attribute of the associated thread pool. If the `max-thread-pool-size`
value is much higher than the `max-pool-size` value, a lot of time is
spent associating connections with a new thread after dissociating them
from an older one. Use this attribute in cases where the thread pool
should reuse connections to avoid this overhead.

| | |

|`match-connections` |`false` a|
(optional) Specifies whether a connection that is selected from the pool
should be matched with the connections with certain credentials. If
`true`, enables connection matching. You can set to `false` if
connections are homogeneous.

If the connection pool is used by applications that have multiple user
credentials, `match-connections` must be `true`. The connection pool
matches the request's credential with the connections in the pool and
returns a matched connection for use. For new requests with different
credentials, unmatched free connections are automatically purged to
provide new connections to satisfy the new requests. This attribute need
not be `true` if it is known that there is only one credential used by
the applications and therefore the pool has homogeneous connections.

|`max-connection-``usage-count` |`0` |(optional) Specifies the number of
times a connections is reused by the pool, after which it is closed. A
zero value disables this feature. By limiting the maximum number of
times a connection can be reused, you can avoid statement leaks if the
application does not close statements.

|`sql-trace-``listeners` |none |(optional) Specifies that SQL statements
executed by applications need to be traced. Helps administrators analyze
the statements. Expects as a value a comma-separated list of listener
implementation class names. Enables easy filtering of log messages for
the SQL statements. SQL trace listeners must implement the
org.glassfish.api.jdbc.SQLTraceListener interface.

|`statement-``cache-size` |`0` |(optional) Specifies the number of
statements to be cached using the `lru` (Least Recently Used) caching
mechanism. The default value of `0` disables statement caching.

|`pooling` |`true` |(optional) If `false`, disables connection pooling.

|`wrap-jdbc-objects` |`true` a|
(optional) If `true`, wrapped JDBC objects are returned for `Statement`,
`PreparedStatement`, `CallableStatement`, `ResultSet`, and
`DatabaseMetaData`.

This option ensures that `Statement.getConnection()` is the same as
`DataSource.getConnection()`. Therefore, this option should be `true`
when both `Statement.getConnection()` and `DataSource.getConnection()`
are done. The default is `false` to avoid breaking existing
applications.

|=======================================================================


[[GSDPG937]][[sthref123]]


[[glassfish-server-properties]]
GlassFish Server Properties
^^^^^^^^^^^^^^^^^^^^^^^^^^^

The following table describes properties for the `jdbc-connection-pool`
element that are specific to GlassFish Server.

[[GSDPG938]][[sthref124]][[sthref125]]


Table C-75 `jdbc-connection-pool` Database Properties

[width="172%",cols="18%,46%,36%",options="header",]
|=======================================================================
|Property |Default |Description
|`dynamic-reconfiguration-wait-timeout-in-seconds` |none a|
Specifies the timeout for dynamic reconfiguration of the pool.
In-progress connection requests must complete before this timeout
expires or they must be retried. New connection requests wait for this
timeout to expire before acquiring connections to the reconfigured pool.
If this property exists and has a positive value, it is enabled.

If this property is not set and pool reconfiguration results in pool
recreation, in-progress connection requests must be retried.

|`number-of-top-queries-to-report` |`10` a|
Specifies the number of most frequently used queries to display. For
example, the default value of `10` displays the top ten queries.

This property is disabled when `jdbc-connection-pool` monitoring is set
to `LOW` or `OFF`. It is enabled when `jdbc-connection-pool` monitoring
is set to `HIGH` and the `sql-trace-listeners` attribute is set.

|`time-to-keep-queries-in-minutes` |`5` a|
Specifies the time to retain queries in a cache before they are purged.

This property is disabled when `jdbc-connection-pool` monitoring is set
to `LOW` or `OFF`. It is enabled when `jdbc-connection-pool` monitoring
is set to `HIGH` and the `sql-trace-listeners` attribute is set.

|=======================================================================


[[GSDPG939]][[sthref126]]


[[database-properties]]
Database Properties
^^^^^^^^^^^^^^^^^^^

Most JDBC drivers allow use of standard property lists to specify the
user, password, and other resource configuration information. Although
properties are optional with respect to the GlassFish Server, some
properties might be necessary for most databases. For details, see the
JDBC 4.0 Standard Extension API.

When properties are specified, they are passed to the vendor's data
source class (specified by the `datasource-classname` attribute) as is
using setName(value) methods.

The `user` and `password` properties are used as the default principal
if container managed authentication is specified and a
`default-resource-principal` is not found in the application deployment
descriptors.

The following table describes some common properties for the
`jdbc-connection-pool` element.

Changing JDBC driver properties requires a server restart.

[[GSDPG940]][[sthref127]][[sthref128]]


Table C-76 `jdbc-connection-pool` Database Properties

[width="100%",cols="19%,81%",options="header",]
|=======================================================================
|Property |Description
|`user` |Specifies the user name for connecting to the database.

|`password` |Specifies the password for connecting to the database.

|`databaseName` |Specifies the database for this connection pool.

|`serverName` |Specifies the database server for this connection pool.

|`port` |Specifies the port on which the database server listens for
requests.

|`networkProtocol` |Specifies the communication protocol.

|`roleName` |Specifies the initial SQL role name.

|`datasourceName` |Specifies an underlying XADataSource, or a
ConnectionPoolDataSource if connection pooling is done.

|`description` |Specifies a text description.

|`url` |Specifies the URL for this connection pool. Although this is not
a standard property, it is commonly used.
|=======================================================================


[[giyhm]][[GSDPG00173]][[jdbc-resource]]

`jdbc-resource`
~~~~~~~~~~~~~~~

Defines a JDBC (javax.sql.DataSource) resource.

[[GSDPG941]][[sthref129]]


[[superelements-89]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG942]][[sthref130]]


[[subelements-85]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `jdbc-resource`
element.

[[GSDPG943]][[sthref131]][[sthref132]]


Table C-77 `jdbc-resource` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG944]][[sthref133]]


[[attributes-20]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `jdbc-resource`
element.

[[GSDPG945]][[sthref134]][[sthref135]]


Table C-78 `jdbc-resource` Attributes

[width="172%",cols="9%,46%,45%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`jndi-name` |none |Specifies the JNDI name for the resource.

|`description` |none |(optional) Specifies a text description of this
element.

|`pool-name` |none |Specifies the `name` of the associated
link:#giyil[`jdbc-connection-pool`].

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`enabled` |`true` |(optional) Determines whether this resource is
enabled at runtime.
|=======================================================================


[[beatu]][[GSDPG00174]][[jms-durable-subscription-name]]

`jms-durable-subscription-name`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the durable subscription associated with a message-driven bean
class. Only applies to the Java Message Service Topic Destination type,
and only when the message-driven bean deployment descriptor subscription
durability is Durable.

[[fvzdb]][[GSDPG00519]][[superelements-90]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvzdp]][[GSDPG00520]][[subelements-86]]

Subelements
^^^^^^^^^^^

none - contains data

[[beatv]][[GSDPG00175]][[jms-max-messages-load]]

`jms-max-messages-load`
~~~~~~~~~~~~~~~~~~~~~~~

Specifies the maximum number of messages to load into a Java Message
Service session at one time for a message-driven bean to serve. The
default is 1.

[[fvyzx]][[GSDPG00521]][[superelements-91]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyxq]][[GSDPG00522]][[subelements-87]]

Subelements
^^^^^^^^^^^

none - contains data

[[beatw]][[GSDPG00176]][[jndi-name]]

`jndi-name`
~~~~~~~~~~~

Specifies the absolute `jndi-name` of a URL resource or a resource.

For entity beans and session beans, this value specifies the global JNDI
name of the `EJBHome` object. It is only needed if the entity or session
bean exposes a remote view.

For JMS message-driven beans, this is the JNDI name of the JMS resource
from which the message-driven bean consumes JMS messages. This
information is alternatively specified within the
link:#beaqs[`activation-config`] subelement of the
link:#beaus[`mdb-resource-adapter`] element. For more information about
JMS resources, see "link:../application-development-guide/jms.html#GSDVG00020[Using the Java Message Service]" in
GlassFish Server Open Source Edition Application Development Guide.

[[fvyyy]][[GSDPG00523]][[superelements-92]]

Superelements
^^^^^^^^^^^^^

link:#beasu[`ejb-ref`], link:#beauu[`message-destination`],
link:#beawu[`resource-env-ref`], link:#beaww[`resource-ref`]
(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`); link:#bearv[`cmp-resource`],
link:#beass[`ejb`], link:#beaur[`mdb-connection-factory`]
(`glassfish-ejb-jar.xml`)

[[fvywz]][[GSDPG00524]][[subelements-88]]

Subelements
^^^^^^^^^^^

none - contains data

[[gkhun]][[GSDPG00177]][[jnlp-doc]]

`jnlp-doc`
~~~~~~~~~~

Contains the name of a custom JNLP file, which modifies the behavior of
a Java Web Start enabled application client module. If none is
specified, a default JNLP file is generated.

The value of this element is a relative path with the following format:

[source,oac_no_warn]
----
[path-to-JAR-in-EAR!]path-to-JNLP-in-JAR
----

The default path-to-JAR-in-EAR is the current application client JAR
file. For example, if the JNLP file is in the application client JAR
file at `custom/myInfo.jnlp`, the element value would look like this:

[source,oac_no_warn]
----
<java-web-start-access>
   <jnlp-doc>custom/myInfo.jnlp</jnlp-doc>
</java-web-start-access>
----

If the application client is inside an EAR file, you can place the
custom JNLP file inside another JAR file in the EAR. For example, if the
JNLP file is in a JAR file at `other/myLib.jar`, the element value would
look like this, with an exclamation point (`!`) separating the path to
the JAR from the path in the JAR:

[source,oac_no_warn]
----
<java-web-start-access>
   <jnlp-doc>other/myLib.jar!custom/myInfo.jnlp</jnlp-doc>
</java-web-start-access>
----

For information about the allowed contents of a custom JNLP file, see
"link:../application-development-guide/java-clients.html#GSDVG00012[Developing Java Clients]" in GlassFish Server Open
Source Edition Application Development Guide.

[[gkhuj]][[GSDPG00525]][[superelements-93]]

Superelements
^^^^^^^^^^^^^

link:#gauax[`java-web-start-access`]
(`glassfish-application-client.xml`)

[[gkhtm]][[GSDPG00526]][[subelements-89]]

Subelements
^^^^^^^^^^^

none - contains data

[[beatx]][[GSDPG00178]][[jsp-config]]

`jsp-config`
~~~~~~~~~~~~

Specifies JSP configuration information.

[[fvywi]][[GSDPG00527]][[superelements-94]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvzcs]][[GSDPG00528]][[subelements-90]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `jsp-config` element.

[[GSDPG946]][[sthref136]][[fvyzp]]


Table C-79 `jsp-config` Subelements

[width="100%",cols="37%,14%,49%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyzf]][[GSDPG00529]][[properties-8]]

Properties
^^^^^^^^^^

The default property values are tuned for development of JSP files at
the cost of performance. To maximize performance, set `jsp-config`
properties to these non-default values:

* `development` - `false` (as an alternative, set to `true` and give
`modificationTestInterval` a large value)
* `mappedfile` - `false`
* `trimSpaces` - `true`
* `suppressSmap` - `true`
* `fork` - `false` (on Solaris)
* `classdebuginfo` - `false`

The following table describes properties for the `jsp-config` element.

[[GSDPG947]][[sthref137]][[fvzde]]


Table C-80 `jsp-config` Properties

[width="100%",cols="29%,11%,60%",options="header",]
|=======================================================================
|Property |Default |Description
|`checkInterval` |`0` |If `development` is set to `false` and
`checkInterval` is greater than zero, background compilations are
enabled. The `checkInterval` is the time in seconds between checks to
see if a JSP file needs to be recompiled.

|`classdebuginfo` |`true` |Specifies whether the generated Java servlets
are compiled with the debug option set (`-g` for `javac`).

|`classpath` |created dynamically based on the current web application
|Specifies the classpath to use when compiling generated servlets.

|`compiler` |`javac` a|
Specifies the compiler Ant uses to compile JSP files. See the Ant
documentation for more information:

`http://antinstaller.sourceforge.net/manual/manual/`

|`compilerSourceVM` |Depends on GlassFish Server's Java runtime a|
Specifies the JDK release with which source compatibility of the
generated servlets is provided. Same as the `-source` release option of
`javac`.

For more information, see
`http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#options`.

|`compilerTargetVM` |Depends on GlassFish Server's Java runtime a|
Specifies the Virtual Machine for the Java platform (JVM software)
version for which the servlet class files are generated. Same as the
`-target` release option of `javac`.

For more information, see
`http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#options`.

|`defaultBufferNone` |`false` |If `true`, the default for the `buffer`
attribute of the `page` directive is `none`.

|`development` |`true` |If set to `true`, enables development mode,
which allows JSP files to be checked for modification. Specify the
frequency at which JSPs are checked using the `modificationTestInterval`
property.

|`dumpSmap` |`false` |If set to `true`, dumps SMAP information for JSR
45 debugging to a file. Set to `false` if `suppressSmap` is `true`.

|`enablePooling` |`true` |If set to `true`, tag handler pooling is
enabled.

|`enableTldValidation` |`false` |If set to `true`, all Tag Library
Descriptor (TLD) files referenced by the web application are validated
against their underlying schema or DTD file.

|`errorOnUseBeanInvalidClassAttribute` |`false` |If set to `true`,
issues an error when the value of the `class` attribute in a `useBean`
action is not a valid bean class.

|`fork` |`true` |Specifies that Ant forks the compiling of JSP files,
using a JVM machine separate from the one in which Tomcat is running.

|`genStrAsByteArray` |`true` |If `true`, text strings are generated as
bytes (encoded with the page encoding), if the page is not buffered.

|`genStrAsCharArray` |`false` |If set to `true`, generates text strings
as `char` arrays, which improves performance in some cases.

|`httpMethods` |`*` for all methods |Specifies a comma separated list of
HTTP methods supported by the `JspServlet`.

|`ieClassId` |`clsid:8AD9C840-``044E-11D1-B3E9-``00805F499D93`
|Specifies the Java plug-in COM class ID for Internet Explorer. Used by
the `<jsp:plugin>` tags.

|`ignoreJspFragmentErrors` |`false` |If set to `true`, instructs the
compiler to ignore any JSP precompilation errors pertaining to
statically included JSP segments that, despite not being top level JSP
files, use the `.jsp` or `.jspx` extension (instead of the recommended
`.jspf`).

|`initialCapacity` |`32` |Specifies the initial capacity of the
`HashMap` that maps JSP files to their corresponding servlets.

|`javaEncoding` |`UTF8` a|
Specifies the encoding for the generated Java servlet. This encoding is
passed to the Java compiler that is used to compile the servlet as well.
By default, the web container tries to use `UTF8`. If that fails, it
tries to use the `javaEncoding` value.

For encodings, see:

`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`

|`keepgenerated` |`true` with JDK 5 and before and for `jspc`, otherwise
`false` |If set to `true`, keeps the generated Java files. If `false`,
deletes the Java files.

|`mappedfile` |`true` |If set to `true`, generates static content with
one print statement per input line, to ease debugging.

|`modificationTestInterval` |`0` |Specifies the frequency in seconds at
which JSPs are checked for modification. A value of `0` causes the JSP
to be checked on every access. Used only if `development` is set to
`true`.

|`reload-interval` |`0` |Specifies the frequency in seconds at which JSP
files are checked for modifications. Setting this value to `0` checks
JSP files for modifications on every request. Setting this value to `-1`
disables checks for JSP modifications and JSP recompilation.

|`saveBytecode` |`true` for `jspc`, otherwise `false` |If `true`,
generated byte code is saved to `.class` files? This option is
meaningful only when the Java compiler API, JSR 199 (available with and
used as the default on Java 6) is used for `javac` compilations.

|`scratchdir` |The default work directory for the web application
|Specifies the working directory created for storing all the generated
code.

|`suppressSmap` |`false` |If set to `true`, generation of SMAP
information for JSR 45 debugging is suppressed.

|`trimSpaces` |`false` |If set to `true`, trims white spaces in template
text between actions or directives.

|`usePrecompiled` |`false` a|
If set to `true`, an accessed JSP file is not compiled. Its precompiled
servlet class is used instead.

It is assumed that JSP files have been precompiled, and their
corresponding servlet classes have been bundled in the web application's
`WEB-INF/lib` or `WEB-INF/classes` directory.

|`xpoweredBy` |`true` |If set to `true`, the X-Powered-By response
header is added by the generated servlet.
|=======================================================================


[[gkhtr]][[GSDPG00179]][[keep-state]]

`keep-state`
~~~~~~~~~~~~

If set to `true`, retains web sessions, stateful session bean instances,
and persistently created EJB timers across redeployments. The
`--keepstate` option of the link:../reference-manual/redeploy.html#GSRFM00217[`redeploy`] subcommand
takes precedence. The default for both is `false`.

Some changes to an application between redeployments prevent this
feature from working properly. For example, do not change the set of
instance variables in the SFSB bean class.

For web applications, this feature is applicable only if in the
`glassfish-web-app.xml` file the `persistence-type` attribute of the
link:#beaxq[`session-manager`] element is `file`.

For stateful session bean instances, the persistence type without high
availability is set in the server (the `sfsb-persistence-type`
attribute) and must be set to `file`, which is the default and
recommended value.

If any active web session, SFSB instance, or EJB timer fails to be
preserved or restored, none of these will be available when the
redeployment is complete. However, the redeployment continues and a
warning is logged.

To preserve active state data, GlassFish Server serializes the data and
saves it in memory. To restore the data, the class loader of the newly
redeployed application deserializes the data that was previously saved.

[[gkhto]][[GSDPG00530]][[superelements-95]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beayb[`glassfish-web-app`] (`glassfish-web-app.xml`),
link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)

[[gkhuk]][[GSDPG00531]][[subelements-91]]

Subelements
^^^^^^^^^^^

none - contains data

[[beatz]][[GSDPG00180]][[key-field]]

`key-field`
~~~~~~~~~~~

Specifies a component of the key used to look up and extract cache
entries. The web container looks for the named parameter, or field, in
the specified scope.

If this element is not present, the web container uses the Servlet Path
(the path section that corresponds to the servlet mapping that activated
the current request). See the Servlet 2.4 specification, section SRV
4.4, for details on the Servlet Path.

[[fvyvb]][[GSDPG00532]][[superelements-96]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvzal]][[GSDPG00533]][[subelements-92]]

Subelements
^^^^^^^^^^^

none

[[fvzdn]][[GSDPG00534]][[attributes-21]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `key-field` element.

[[GSDPG948]][[sthref138]][[fvyyi]]


Table C-81 `key-field` Attributes

[width="181%",cols="51%,11%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the input parameter name.

|`scope` |`request.parameter` |(optional) Specifies the scope from which
the input parameter is retrieved. Allowed values are
`context.attribute`, `request.header`, `request.parameter`,
`request.cookie`, `session.id`, and `session.attribute`.
|=======================================================================


[[beaub]][[GSDPG00181]][[level]]

`level`
~~~~~~~

Specifies the name of a hierarchical fetch group. The name must be an
integer. Fields and relationships that belong to a hierarchical fetch
group of equal (or lesser) value are fetched at the same time. The value
of level must be greater than zero. Only one is allowed.

[[fvyvf]][[GSDPG00535]][[superelements-97]]

Superelements
^^^^^^^^^^^^^

link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)

[[fvywq]][[GSDPG00536]][[subelements-93]]

Subelements
^^^^^^^^^^^

none - contains data

[[beauc]][[GSDPG00182]][[local-home-impl]]

`local-home-impl`
~~~~~~~~~~~~~~~~~

Specifies the fully-qualified class name of the generated `EJBLocalHome`
`impl` class.


[NOTE]
=======================================================================

This value is automatically generated by the server at deployment or
redeployment time. Do not specify it or change it after deployment.

=======================================================================


[[fvyzo]][[GSDPG00537]][[superelements-98]]

Superelements
^^^^^^^^^^^^^

link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)

[[fvzah]][[GSDPG00538]][[subelements-94]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaud]][[GSDPG00183]][[local-impl]]

`local-impl`
~~~~~~~~~~~~

Specifies the fully-qualified class name of the generated
`EJBLocalObject` `impl` class.


[NOTE]
=======================================================================

This value is automatically generated by the server at deployment or
redeployment time. Do not specify it or change it after deployment.

=======================================================================


[[fvzcr]][[GSDPG00539]][[superelements-99]]

Superelements
^^^^^^^^^^^^^

link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)

[[fvzai]][[GSDPG00540]][[subelements-95]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaue]][[GSDPG00184]][[locale-charset-info]]

`locale-charset-info`
~~~~~~~~~~~~~~~~~~~~~

Deprecated. For backward compatibility only. Use the
link:#beavn[`parameter-encoding`] subelement of
link:#beayb[`glassfish-web-app`] instead. Specifies information about
the application's internationalization settings.

[[fvyvm]][[GSDPG00541]][[superelements-100]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvzbi]][[GSDPG00542]][[subelements-96]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `locale-charset-info`
element.

[[GSDPG949]][[sthref139]][[fvyzd]]


Table C-82 `locale-charset-info` Subelements

[width="100%",cols="22%,12%,66%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beauf[`locale-charset-map`]


 |one or more |Maps a locale and an agent to a character encoding.
Provided for backward compatibility. Used only for request processing,
and only if no `parameter-encoding` is defined.

a|
link:#beavn[`parameter-encoding`]


 |zero or one |Determines the default request character encoding and how
the web container decodes parameters from forms according to a hidden
field value.
|=======================================================================


[[fvywh]][[GSDPG00543]][[attributes-22]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `locale-charset-info`
element.

[[GSDPG950]][[sthref140]][[fvzcd]]


Table C-83 `locale-charset-info` Attributes

[width="181%",cols="13%,49%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`default-locale` |none |Although a value is required, the value is
ignored. Use the `default-charset` attribute of the
link:#beavn[`parameter-encoding`] element.
|=======================================================================


[[beauf]][[GSDPG00185]][[locale-charset-map]]

`locale-charset-map`
~~~~~~~~~~~~~~~~~~~~

Maps locales and agents to character encodings. Provided for backward
compatibility. Used only for request processing. Used only if the
character encoding is not specified in the request and cannot be derived
from the optional link:#beavn[`parameter-encoding`] element. For
encodings, see
`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`.

[[fvzbg]][[GSDPG00544]][[superelements-101]]

Superelements
^^^^^^^^^^^^^

link:#beaue[`locale-charset-info`] (`glassfish-web.xml`)

[[fvywg]][[GSDPG00545]][[subelements-97]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `locale-charset-map`
element.

[[GSDPG951]][[sthref141]][[fvyvl]]


Table C-84 `locale-charset-map` Subelements

[width="100%",cols="25%,14%,61%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Specifies an optional text description of a mapping.
|==================================================================


[[fvyzn]][[GSDPG00546]][[attributes-23]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `locale-charset-map`
element.

[[GSDPG952]][[sthref142]][[fvzbk]]


Table C-85 `locale-charset-map` Attributes

[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`locale` |none |Specifies the locale name.

|`agent` |none |(optional) Specifies the type of client that interacts
with the GlassFish Server. For a given locale, different agents can have
different preferred character encodings. The value of this attribute
must exactly match the value of the `user-agent` HTTP request header
sent by the client. See link:#fvzbb[Table C-86] for more information.

|`charset` |none |Specifies the character encoding to which the locale
maps.
|=======================================================================


[[fvzct]][[GSDPG00547]][[example-agents]]

Example Agents
^^^^^^^^^^^^^^

The following table specifies example `agent` attribute values.

[[GSDPG953]][[sthref143]][[fvzbb]]


Table C-86 Example `agent` Attribute Values

[width="100%",cols="38%,62%",options="header",]
|=======================================================================
|Agent |`user-agent` Header and `agent` Attribute Value
|Internet Explorer 5.00 for Windows 2000
|`Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)`

|Netscape 4.7.7 for Windows 2000
|`Mozilla/4.77 [en] (Windows NT 5.0; U)`

|Netscape 4.7 for Solaris |`Mozilla/4.7 [en] (X11; u; Sun OS 5.6 sun4u)`
|=======================================================================


[[beaug]][[GSDPG00186]][[localpart]]

`localpart`
~~~~~~~~~~~

Specifies the local part of a QNAME.

[[fvzad]][[GSDPG00548]][[superelements-102]]

Superelements
^^^^^^^^^^^^^

link:#beaxj[`service-qname`], link:#beayx[`wsdl-port`]
(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyzb]][[GSDPG00549]][[subelements-98]]

Subelements
^^^^^^^^^^^

none - contains data

[[beauh]][[GSDPG00187]][[lock-when-loaded]]

`lock-when-loaded`
~~~~~~~~~~~~~~~~~~

Places a database update lock on the rows corresponding to the bean
whenever the bean is loaded. How the lock is placed is
database-dependent. The lock is released when the transaction finishes
(commit or rollback). While the lock is in place, other database users
have read access to the bean.

[[fvyze]][[GSDPG00550]][[superelements-103]]

Superelements
^^^^^^^^^^^^^

link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)

[[fvyyl]][[GSDPG00551]][[subelements-99]]

Subelements
^^^^^^^^^^^

none - element is present or absent

[[beaui]][[GSDPG00188]][[lock-when-modified]]

`lock-when-modified`
~~~~~~~~~~~~~~~~~~~~

This element is not implemented. Do not use.

[[fvyyc]][[GSDPG00552]][[superelements-104]]

Superelements
^^^^^^^^^^^^^

link:#beasd[`consistency`] (`sun-cmp-mappings.xml`)

[[beauj]][[GSDPG00189]][[log-service]]

`log-service`
~~~~~~~~~~~~~

Specifies configuration settings for the log file.

[[fvyyv]][[GSDPG00553]][[superelements-105]]

Superelements
^^^^^^^^^^^^^

link:#bearr[`client-container`] (`sun-acc.xml`)

[[fvywo]][[GSDPG00554]][[subelements-100]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `log-service` element.

[[GSDPG954]][[sthref144]][[fvzdx]]


Table C-87 `log-service` subelement

[width="100%",cols="37%,15%,48%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvyzl]][[GSDPG00555]][[attributes-24]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `log-service` element.

[[GSDPG955]][[sthref145]][[fvzbn]]


Table C-88 `log-service` attributes

[width="100%",cols="12%,32%,56%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`log-file` |your-ACC-dir`/logs/client.log` |(optional) Specifies the
file where the application client container logging information is
stored.

|`level` |`SEVERE` |(optional) Sets the base level of severity. Messages
at or above this setting get logged to the log file.
|=======================================================================


[[beauk]][[GSDPG00190]][[login-config]]

`login-config`
~~~~~~~~~~~~~~

Specifies the authentication configuration for an EJB web service
endpoint. Not needed for servlet web service endpoints. A servlet's
security configuration is contained in the `web.xml` file.

[[fvywb]][[GSDPG00556]][[superelements-106]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvyxg]][[GSDPG00557]][[subelements-101]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `login-config`
element.

[[GSDPG956]][[sthref146]][[fvzap]]


Table C-89 `login-config` subelements

[width="100%",cols="30%,15%,55%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaqx[`auth-method`]


 |only one |Specifies the authentication method.

a|
link:#beawi[`realm`]


 |zero or one |Specifies the name of the realm used to process all
authentication requests.
|=======================================================================


[[giyik]][[GSDPG00191]][[mail-resource]]

`mail-resource`
~~~~~~~~~~~~~~~

Defines a Jakarta Mail (`jakarta.mail.Session`) resource.

[[GSDPG957]][[sthref147]]


[[superelements-107]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG958]][[sthref148]]


[[subelements-102]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `mail-resource`
element.

[[GSDPG959]][[sthref149]][[sthref150]]


Table C-90 `mail-resource` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==========================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==========================================================


[[GSDPG960]][[sthref151]]


[[attributes-25]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `mail-resource`
element.

[[GSDPG961]][[sthref152]][[sthref153]]


Table C-91 `mail-resource` Attributes

[width="100%",cols="23%,21%,56%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`jndi-name` |none |Specifies the JNDI name for the resource.

|`store-protocol` |`imap` |(optional) Specifies the storage protocol
service, which connects to a mail server, retrieves messages, and saves
messages in folder(s). Allowed values are `imap`, `pop3`, `imaps`, and
`pop3s` .

|`store-protocol-` `class` |`com.sun.mail.imap.IMAPStore` a|
(optional) Specifies the service provider implementation class for
storage. Allowed values are:

`com.sun.mail.imap.IMAPStore`

`com.sun.mail.pop3.POP3Store`

`com.sun.mail.imap.IMAPSSLStore`

`com.sun.mail.pop3.POP3SSLStore`

|`transport-``protocol` |`smtp` |(optional) Specifies the transport
protocol service, which sends messages. Allowed values are `smtp` and
`smtps`.

|`transport-``protocol-``class` |`com.sun.mail.smtp.SMTPTransport` a|
(optional) Specifies the service provider implementation class for
transport. Allowed values are:

`com.sun.mail.smtp.SMTPTransport`

`com.sun.mail.smtp.SMTPSSLTransport`

|`host` |none |The mail server host name.

|`user` |none |The mail server user name.

|`from` |none |The email address the mail server uses to indicate the
message sender.

|`debug` |`false` |(optional) Determines whether debugging for this
resource is enabled.

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`enabled` |`true` |(optional) Determines whether this resource is
enabled at runtime.
|=======================================================================


[[GSDPG962]][[sthref154]]


[[properties-9]]
Properties
^^^^^^^^^^

You can set properties for the `mail-resource` element and then get
these properties in a Jakarta Mail `Session` object later. Every property
name must start with a `mail-` prefix. The GlassFish Server changes the
dash (`-`) character to a period (`.`) in the name of the property, then
saves the property to the `MailConfiguration` and Jakarta Mail `Session`
objects. If the name of the property doesn't start with `mail-`, the
property is ignored.

For example, to define the property `mail.password` in a Jakarta Mail
Session object, first edit `glassfish-resources.xml` as follows:

[source,oac_no_warn]
----
...
 <mail-resource jndi-name="mail/Session" ...>
     <property name="mail-password" value="adminadmin"/>
 </mail-resource>
 ...
----

After getting the Jakarta Mail `Session` object, get the `mail.password`
property to retrieve the value `adminadmin`, as follows:

[source,oac_no_warn]
----
String password = session.getProperty("mail.password");
----

For more information about Jakarta Mail properties, see
https://jakarta.ee/specifications/mail[Jakarta Mail API
Documentation] (`https://jakarta.ee/specifications/mail`).

[[beaum]][[GSDPG00192]][[manager-properties]]

`manager-properties`
~~~~~~~~~~~~~~~~~~~~

Specifies session manager properties.

[[fvyyu]][[GSDPG00558]][[superelements-108]]

Superelements
^^^^^^^^^^^^^

link:#beaxq[`session-manager`] (`glassfish-web.xml`)

[[fvzcq]][[GSDPG00559]][[subelements-103]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `manager-properties`
element.

[[GSDPG963]][[sthref155]][[fvyvh]]


Table C-92 `manager-properties` Subelements

[width="100%",cols="37%,14%,49%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvzdg]][[GSDPG00560]][[properties-10]]

Properties
^^^^^^^^^^

The following table describes properties for the `manager-properties`
element.

[[GSDPG964]][[sthref156]][[fvywk]]


Table C-93 `manager-properties` Properties

[width="100%",cols="25%,13%,62%",options="header",]
|=======================================================================
|Property |Default |Description
|`reapIntervalSeconds` |`60` a|
Specifies the number of seconds between checks for expired sessions.
This is also the interval at which sessions are passivated if
`maxSessions` is exceeded.

If `persistenceFrequency` is set to `time-based`, active sessions are
stored at this interval.

To prevent data inconsistency, set this value lower than the frequency
at which session data changes. For example, this value should be as low
as possible (`1` second) for a hit counter servlet on a frequently
accessed web site, or the last few hits might be lost each time the
server is restarted.

Applicable only if the `persistence-type` attribute of the parent
link:#beaxq[`session-manager`] element is `file` or `replicated`.

|`maxSessions` |`-1` a|
Specifies the maximum number of sessions that are permitted in the
cache, or `-1` for no limit. After this, an attempt to create a new
session causes an `IllegalStateException` to be thrown.

If the `persistence-type` attribute of the parent
link:#beaxq[`session-manager`] element is `file` or `replicated`, the
session manager passivates sessions to the persistent store when this
maximum is reached.

|`sessionFilename` |empty string a|
Specifies the absolute or relative path to the directory in which the
session state is preserved between application restarts, if preserving
the state is possible. A relative path is relative to the temporary
directory for this web module, one of the following:

domain-dir`/generated/jsp/`module-name

domain-dir`/generated/jsp/`app-name`/`module-name

By default, this property's value is set to an empty string, which
disables this property and does not preserve the session state.

Applicable only if the `persistence-type` attribute of the parent
link:#beaxq[`session-manager`] element is `memory`.

|`persistenceFrequency` |`web-method` a|
Specifies how often the session state is stored. Allowed values are as
follows:

* `web-method` - The session state is stored at the end of each web
request prior to sending a response back to the client. This mode
provides the best guarantee that the session state is fully updated in
case of failure.
* `time-based` - The session state is stored in the background at the
frequency set by `reapIntervalSeconds`. This mode provides less of a
guarantee that the session state is fully updated. However, it can
provide a significant performance improvement because the state is not
stored after each request.

Applicable only if the `persistence-type` attribute of the parent
link:#beaxq[`session-manager`] element is `replicated`.

|=======================================================================


[[beaun]][[GSDPG00193]][[mapping-properties]]

`mapping-properties`
~~~~~~~~~~~~~~~~~~~~

This element is not implemented.

[[fvywv]][[GSDPG00561]][[superelements-109]]

Superelements
^^^^^^^^^^^^^

link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)

[[beauo]][[GSDPG00194]][[max-cache-size]]

`max-cache-size`
~~~~~~~~~~~~~~~~

Specifies the maximum number of beans allowable in cache. A value of
zero indicates an unbounded cache. In reality, there is no hard limit.
The max-cache-size limit is just a hint to the cache implementation.
Default is 512.

Applies to stateful session beans and entity beans.

[[fvyyo]][[GSDPG00562]][[superelements-110]]

Superelements
^^^^^^^^^^^^^

link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)

[[fvzbx]][[GSDPG00563]][[subelements-104]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaup]][[GSDPG00195]][[max-pool-size]]

`max-pool-size`
~~~~~~~~~~~~~~~

Specifies the maximum number of bean instances in the pool. Values are
from 0 (1 for message-driven bean) to MAX_INTEGER. A value of 0 means
the pool is unbounded. Default is 64.

Applies to all beans.

[[fvzdw]][[GSDPG00564]][[superelements-111]]

Superelements
^^^^^^^^^^^^^

link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)

[[fvyxa]][[GSDPG00565]][[subelements-105]]

Subelements
^^^^^^^^^^^

none - contains data

[[beauq]][[GSDPG00196]][[max-wait-time-in-millis]]

`max-wait-time-in-millis`
~~~~~~~~~~~~~~~~~~~~~~~~~

This element is deprecated. Do not use.

[[fvyzg]][[GSDPG00566]][[superelements-112]]

Superelements
^^^^^^^^^^^^^

link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)

[[beaur]][[GSDPG00197]][[mdb-connection-factory]]

`mdb-connection-factory`
~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the connection factory associated with a message-driven bean.
Queue or Topic type must be consistent with the Java Message Service
Destination type associated with the message-driven bean class.

[[fvyzj]][[GSDPG00567]][[superelements-113]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyxt]][[GSDPG00568]][[subelements-106]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`mdb-connection-factory` element.

[[GSDPG965]][[sthref157]][[fvyxi]]


Table C-94 `mdb-connection-factory` Subelements

[width="100%",cols="38%,14%,48%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beatw[`jndi-name`]


 |only one |Specifies the absolute `jndi-name`.

a|
link:#beasn[`default-resource-principal`]


 |zero or one |Specifies the default sign-on (name/password) to the
resource manager.
|=======================================================================


[[beaus]][[GSDPG00198]][[mdb-resource-adapter]]

`mdb-resource-adapter`
~~~~~~~~~~~~~~~~~~~~~~

Specifies runtime configuration information for a message-driven bean.

[[fvzdd]][[GSDPG00569]][[superelements-114]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyyx]][[GSDPG00570]][[subelements-107]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `mdb-resource-adapter`
element.

[[GSDPG966]][[sthref158]][[fvyzh]]


Table C-95 `mdb-resource-adapter` subelements

[width="100%",cols="35%,14%,51%",options="header",]
|=====================================================
|Element |Required |Description
a|
link:#beawt[`resource-adapter-mid`]


 |zero or one |Specifies a resource adapter module ID.
a|
link:#beaqs[`activation-config`]


 |one or more |Specifies an activation configuration.
|=====================================================


[[beaut]][[GSDPG00199]][[message]]

`message`
~~~~~~~~~

Specifies the methods or operations to which message security
requirements apply.

[[fvzci]][[GSDPG00571]][[superelements-115]]

Superelements
^^^^^^^^^^^^^

link:#beauw[`message-security`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyxc]][[GSDPG00572]][[subelements-108]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `message` element.

[[GSDPG967]][[sthref159]][[fvyyd]]


Table C-96 `message` Subelements

[width="100%",cols="30%,16%,54%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beatt[`java-method`]


 |zero or one |Specifies the methods or operations to which message
security requirements apply.

a|
link:#beavl[`operation-name`]


 |zero or one |Specifies the WSDL name of an operation of a web service.
|=======================================================================


[[beauu]][[GSDPG00200]][[message-destination]]

`message-destination`
~~~~~~~~~~~~~~~~~~~~~

Specifies the name of a logical `message-destination` defined within an
application. The `message-destination-name` matches the corresponding
`message-destination-name` in the corresponding Java EE deployment
descriptor file. Use when the message destination reference in the
corresponding Java EE deployment descriptor file specifies a
`message-destination-link` to a logical `message-destination`.

[[fvzaz]][[GSDPG00573]][[superelements-116]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[fvyxn]][[GSDPG00574]][[subelements-109]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `message-destination`
element.

[[GSDPG968]][[sthref160]][[fvyzy]]


Table C-97 `message-destination` subelements

[width="100%",cols="29%,10%,61%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beauv[`message-destination-name`]


 |only one |Specifies the name of a logical message destination defined
within the corresponding Java EE deployment descriptor file.

a|
link:#beatw[`jndi-name`]


 |only one |Specifies the `jndi-name` of the associated entity.
|=======================================================================


[[beauv]][[GSDPG00201]][[message-destination-name]]

`message-destination-name`
~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the name of a logical message destination defined within the
corresponding Java EE deployment descriptor file.

[[fvzcj]][[GSDPG00575]][[superelements-117]]

Superelements
^^^^^^^^^^^^^

link:#beauu[`message-destination`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvzbo]][[GSDPG00576]][[subelements-110]]

Subelements
^^^^^^^^^^^

none - contains data

[[gauao]][[GSDPG00202]][[message-destination-ref]]

`message-destination-ref`
~~~~~~~~~~~~~~~~~~~~~~~~~

Directly binds a message destination reference to the JNDI name of a
`Queue`, `Topic`, or other physical destination. Use only when the
message destination reference in the corresponding Java EE deployment
descriptor file does not specify a `message-destination-link` to a
logical `message-destination`.

[[gauam]][[GSDPG00577]][[superelements-118]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[gaual]][[GSDPG00578]][[subelements-111]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`message-destination-ref` element.

[[GSDPG969]][[sthref161]][[gauar]]


Table C-98 `message-destination-ref` subelements

[width="100%",cols="34%,10%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#gauat[`message-destination-ref-name`]


 |only one |Specifies the name of a physical message destination defined
within the corresponding Java EE deployment descriptor file.

a|
link:#beatw[`jndi-name`]


 |only one |Specifies the `jndi-name` of the associated entity.
|=======================================================================


[[gauat]][[GSDPG00203]][[message-destination-ref-name]]

`message-destination-ref-name`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the name of a physical message destination defined within the
corresponding Java EE deployment descriptor file.

[[gauaj]][[GSDPG00579]][[superelements-119]]

Superelements
^^^^^^^^^^^^^

link:#gauao[`message-destination-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[gauas]][[GSDPG00580]][[subelements-112]]

Subelements
^^^^^^^^^^^

none - contains data

[[beauw]][[GSDPG00204]][[message-security]]

`message-security`
~~~~~~~~~~~~~~~~~~

Specifies message security requirements.

* If the grandparent element is link:#beayv[`webservice-endpoint`],
these requirements pertain to request and response messages of the
endpoint.
* If the grandparent element is link:#beavt[`port-info`], these
requirements pertain to the port of the referenced service.

[[fvzac]][[GSDPG00581]][[superelements-120]]

Superelements
^^^^^^^^^^^^^

link:#beaux[`message-security-binding`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyve]][[GSDPG00582]][[subelements-113]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `message-security`
element.

[[GSDPG970]][[sthref162]][[fvywy]]


Table C-99 `message-security` Subelements

[width="100%",cols="24%,12%,64%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaut[`message`]


 |one or more |Specifies the methods or operations to which message
security requirements apply.

a|
link:#beawp[`request-protection`]


 |zero or one |Defines the authentication policy requirements of the
application's request processing.

a|
link:#beawy[`response-protection`]


 |zero or one |Defines the authentication policy requirements of the
application's response processing.
|=======================================================================


[[beaux]][[GSDPG00205]][[message-security-binding]]

`message-security-binding`
~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies a custom authentication provider binding for a parent
link:#beayv[`webservice-endpoint`] or link:#beavt[`port-info`] element
in one or both of these ways:

* By binding to a specific provider
* By specifying the message security requirements enforced by the
provider

[[fvzbc]][[GSDPG00583]][[superelements-121]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`], link:#beavt[`port-info`]
(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyxv]][[GSDPG00584]][[subelements-114]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`message-security-binding` element.

[[GSDPG971]][[sthref163]][[fvzcx]]


Table C-100 `message-security-binding` Subelements

[width="100%",cols="34%,15%,51%",options="header",]
|=======================================================
|Element |Required |Description
a|
link:#beauw[`message-security`]


 |zero or more |Specifies message security requirements.
|=======================================================


[[fvzbj]][[GSDPG00585]][[attributes-26]]

Attributes
^^^^^^^^^^

The following table describes attributes for the
`message-security-binding` element.

[[GSDPG972]][[sthref164]][[fvzda]]


Table C-101 `message-security-binding` Attributes

[width="172%",cols="9%,46%,45%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`auth-layer` |none |Specifies the message layer at which authentication
is performed. The value must be `SOAP`.

|`provider-id` |none a|
(optional) Specifies the authentication provider used to satisfy
application-specific message security requirements.

If this attribute is not specified, a default provider is used, if it is
defined for the message layer.

if no default provider is defined, authentication requirements defined
in the `message-security-binding` are not enforced.

|=======================================================================


[[beauy]][[GSDPG00206]][[message-security-config]]

`message-security-config`
~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies configurations for message security providers.

[[fvyya]][[GSDPG00586]][[superelements-122]]

Superelements
^^^^^^^^^^^^^

link:#bearr[`client-container`] (`sun-acc.xml`)

[[fvzck]][[GSDPG00587]][[subelements-115]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`message-security-config` element.

[[GSDPG973]][[sthref165]][[fvyym]]


Table C-102 `message-security-config` Subelements

[width="100%",cols="31%,15%,54%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavz[`provider-config`]


 |one or more |Specifies a configuration for one message security
provider.
|=======================================================================


[[fvyvw]][[GSDPG00588]][[attributes-27]]

Attributes
^^^^^^^^^^

The following table describes attributes for the
`message-security-config` element.

[[GSDPG974]][[sthref166]][[fvzam]]


Table C-103 `message-security-config` Attributes

[width="172%",cols="17%,46%,37%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`auth-layer` |none |Specifies the message layer at which authentication
is performed. The value must be `SOAP`.

|`default-provider` |none |(optional) Specifies the server provider that
is invoked for any application not bound to a specific server provider.

|`default-client-``provider` |none |(optional) Specifies the client
provider that is invoked for any application not bound to a specific
client provider.
|=======================================================================


[[beauz]][[GSDPG00207]][[method]]

`method`
~~~~~~~~

Specifies a bean method.

[[fvzae]][[GSDPG00589]][[superelements-123]]

Superelements
^^^^^^^^^^^^^

link:#bearo[`checkpoint-at-end-of-method`],
link:#beatf[`flush-at-end-of-method`] (`glassfish-ejb-jar.xml`)

[[fvzay]][[GSDPG00590]][[subelements-116]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `method` element.

[[GSDPG975]][[sthref167]][[fvzch]]


Table C-104 `method` Subelements

[width="100%",cols="17%,11%,72%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Specifies an optional text description.

a|
link:#beast[`ejb-name`]


 |zero or one |Matches the `ejb-name` in the corresponding `ejb-jar.xml`
file.

a|
link:#beavb[`method-name`]


 |only one |Specifies a method name.

a|
link:#beava[`method-intf`]


 |zero or one |Specifies the method interface to distinguish between
methods with the same name in different interfaces.

a|
link:#beavd[`method-params`]


 |zero or one |Specifies fully qualified Java type names of method
parameters.
|=======================================================================


[[beava]][[GSDPG00208]][[method-intf]]

`method-intf`
~~~~~~~~~~~~~

Specifies the method interface to distinguish between methods with the
same name in different interfaces. Allowed values are `Home`, `Remote`,
`LocalHome`, and `Local`.

[[fvywj]][[GSDPG00591]][[superelements-124]]

Superelements
^^^^^^^^^^^^^

link:#beauz[`method`] (`glassfish-ejb-jar.xml`)

[[fvyyz]][[GSDPG00592]][[subelements-117]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavb]][[GSDPG00209]][[method-name]]

`method-name`
~~~~~~~~~~~~~

Specifies a method name or `*` (an asterisk) for all methods. If a
method is overloaded, specifies all methods with the same name.

[[fvyvp]][[GSDPG00593]][[superelements-125]]

Superelements
^^^^^^^^^^^^^

link:#beatt[`java-method`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
link:#beate[`finder`], link:#beawc[`query-method`] ,
link:#beauz[`method`] (`glassfish-ejb-jar.xml`)

[[fvzcp]][[GSDPG00594]][[subelements-118]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvzdr]][[GSDPG00595]][[examples]]

Examples
^^^^^^^^

`<method-name>findTeammates</method-name>`

`<method-name>*</method-name>`

[[beavc]][[GSDPG00210]][[method-param]]

`method-param`
~~~~~~~~~~~~~~

Specifies the fully qualified Java type name of a method parameter.

[[fvzdl]][[GSDPG00596]][[superelements-126]]

Superelements
^^^^^^^^^^^^^

link:#beavd[`method-params`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyvj]][[GSDPG00597]][[subelements-119]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavd]][[GSDPG00211]][[method-params]]

`method-params`
~~~~~~~~~~~~~~~

Specifies fully qualified Java type names of method parameters.

[[fvzdt]][[GSDPG00598]][[superelements-127]]

Superelements
^^^^^^^^^^^^^

link:#beatt[`java-method`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
link:#beawc[`query-method`], link:#beauz[`method`]
(`glassfish-ejb-jar.xml`)

[[fvyzw]][[GSDPG00599]][[subelements-120]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `method-params`
element.

[[GSDPG976]][[sthref168]][[fvyzq]]


Table C-105 `method-params` Subelements

[width="100%",cols="18%,14%,68%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavc[`method-param`]


 |zero or more |Specifies the fully qualified Java type name of a method
parameter.
|=======================================================================


[[beavf]][[GSDPG00212]][[name]]

`name`
~~~~~~

Specifies the name of the entity.

[[fvyyf]][[GSDPG00600]][[superelements-128]]

Superelements
^^^^^^^^^^^^^

link:#beari[`call-property`], link:#beasn[`default-resource-principal`],
link:#beaxv[`stub-property`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
link:#beasx[`enterprise-beans`], link:#beavv[`principal`],
link:#beavy[`property` (with subelements)] (`glassfish-ejb-jar.xml`)

[[fvyxe]][[GSDPG00601]][[subelements-121]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavg]][[GSDPG00213]][[named-group]]

`named-group`
~~~~~~~~~~~~~

Specifies the name of one independent fetch group. All the fields and
relationships that are part of a named group are fetched at the same
time. A field belongs to only one fetch group, regardless of what type
of fetch group is used.

[[fvzds]][[GSDPG00602]][[superelements-129]]

Superelements
^^^^^^^^^^^^^

link:#beatc[`fetched-with`] (`sun-cmp-mappings.xml`)

[[fvyxr]][[GSDPG00603]][[subelements-122]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavh]][[GSDPG00214]][[namespaceuri]]

`namespaceURI`
~~~~~~~~~~~~~~

Specifies the namespace URI.

[[fvywa]][[GSDPG00604]][[superelements-130]]

Superelements
^^^^^^^^^^^^^

link:#beaxj[`service-qname`], link:#beayx[`wsdl-port`]
(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyzc]][[GSDPG00605]][[subelements-123]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavi]][[GSDPG00215]][[none]]

`none`
~~~~~~

Specifies that this field or relationship is fetched by itself, with no
other fields or relationships.

[[fvyvv]][[GSDPG00606]][[superelements-131]]

Superelements
^^^^^^^^^^^^^

link:#beasd[`consistency`], link:#beatc[`fetched-with`]
(`sun-cmp-mappings.xml`)

[[fvzaw]][[GSDPG00607]][[subelements-124]]

Subelements
^^^^^^^^^^^

none - element is present or absent

[[beavk]][[GSDPG00216]][[one-one-finders]]

`one-one-finders`
~~~~~~~~~~~~~~~~~

Describes the finders for CMP 1.1 beans.

[[fvyvg]][[GSDPG00608]][[superelements-132]]

Superelements
^^^^^^^^^^^^^

link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)

[[fvywp]][[GSDPG00609]][[subelements-125]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `one-one-finders`
element.

[[GSDPG977]][[sthref169]][[fvyxu]]


Table C-106 `one-one-finders` Subelements

[width="100%",cols="23%,15%,62%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beate[`finder`]


 |one or more |Describes the finders for CMP 1.1 with a method name and
query.
|=======================================================================


[[beavl]][[GSDPG00217]][[operation-name]]

`operation-name`
~~~~~~~~~~~~~~~~

Specifies the WSDL name of an operation of a web service.

[[fvzas]][[GSDPG00610]][[superelements-133]]

Superelements
^^^^^^^^^^^^^

link:#beaut[`message`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvyvt]][[GSDPG00611]][[subelements-126]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavn]][[GSDPG00218]][[parameter-encoding]]

`parameter-encoding`
~~~~~~~~~~~~~~~~~~~~

Specifies the default request character encoding and how the web
container decodes parameters from forms according to a hidden field
value.

If both the link:#beayb[`glassfish-web-app`] and
link:#beaue[`locale-charset-info`] elements have `parameter-encoding`
subelements, the subelement of `glassfish-web-app` takes precedence. For
encodings, see
`http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html`.

[[fvyzr]][[GSDPG00612]][[superelements-134]]

Superelements
^^^^^^^^^^^^^

link:#beaue[`locale-charset-info`], link:#beayb[`glassfish-web-app`]
(`glassfish-web.xml`)

[[fvzbf]][[GSDPG00613]][[subelements-127]]

Subelements
^^^^^^^^^^^

none

[[fvyxk]][[GSDPG00614]][[attributes-28]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `parameter-encoding`
element.

[[GSDPG978]][[sthref170]][[fvywn]]


Table C-107 `parameter-encoding` Attributes

[width="100%",cols="19%,13%,68%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`form-hint-field` |none |(optional) The name of the hidden field in the
form. This field specifies the character encoding the web container uses
for `request.getParameter` and `request.getReader` calls when the
charset is not set in the request's `content-type` header.

|`default-charset` |`ISO-8859-1` |(optional) The default request
character encoding.
|=======================================================================


[[beavo]][[GSDPG00219]][[pass-by-reference]]

`pass-by-reference`
~~~~~~~~~~~~~~~~~~~

Specifies the passing method used by a servlet or enterprise bean
calling a remote interface method in another bean that is colocated
within the same process.

* If `false` (the default if this element is not present), this
application uses pass-by-value semantics.
* If `true`, this application uses pass-by-reference semantics.


[NOTE]
=======================================================================

The `pass-by-reference` element only applies to remote calls. As defined
in the EJB 2.1 specification, section 5.4, calls to local interfaces use
pass-by-reference semantics.

If the `pass-by-reference` element is set to its default value of
`false`, the passing semantics for calls to remote interfaces comply
with the EJB 2.1 specification, section 5.4. If set to `true`, remote
calls involve pass-by-reference semantics instead of pass-by-value
semantics, contrary to this specification.

Portable programs cannot assume that a copy of the object is made during
such a call, and thus that it's safe to modify the original. Nor can
they assume that a copy is not made, and thus that changes to the object
are visible to both caller and callee. When this element is set to
`true`, parameters and return values should be considered read-only. The
behavior of a program that modifies such parameters or return values is
undefined.

=======================================================================


When a servlet or enterprise bean calls a remote interface method in
another bean that is colocated within the same process, by default
GlassFish Server makes copies of all the call parameters in order to
preserve the pass-by-value semantics. This increases the call overhead
and decreases performance.

However, if the calling method does not change the object being passed
as a parameter, it is safe to pass the object itself without making a
copy of it. To do this, set the pass-by-reference value to `true`.

The setting of this element in the `glassfish-application.xml` file
applies to all EJB modules in the application. For an individually
deployed EJB module, you can set the same element in the
`glassfish-ejb-jar.xml` file. If `pass-by-reference` is used at both the
bean and application level, the bean level takes precedence.

[[fvzec]][[GSDPG00615]][[superelements-135]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvywx]][[GSDPG00616]][[subelements-128]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavp]][[GSDPG00220]][[password]]

`password`
~~~~~~~~~~

Specifies the password for the principal.

[[fvyvn]][[GSDPG00617]][[superelements-136]]

Superelements
^^^^^^^^^^^^^

link:#beasn[`default-resource-principal`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyvs]][[GSDPG00618]][[subelements-129]]

Subelements
^^^^^^^^^^^

none - contains data

[[gkkia]][[GSDPG00221]][[per-request-load-balancing]]

`per-request-load-balancing`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the per-request load balancing behavior of EJB 2.x and 3.x
remote client invocations on a stateless session bean. If set to `true`,
per-request load balancing is enabled for the associated stateless
session bean. If set to `false` or not set, per-request load balancing
is not enabled. The default is `false`.

[[gkklx]][[GSDPG00619]][[superelements-137]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[gkkmq]][[GSDPG00620]][[subelements-130]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavq]][[GSDPG00222]][[pm-descriptors]]

`pm-descriptors`
~~~~~~~~~~~~~~~~

This element and its subelements are deprecated. Do not use.

[[fvzbh]][[GSDPG00621]][[superelements-138]]

Superelements
^^^^^^^^^^^^^

link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)

[[beavr]][[GSDPG00223]][[pool-idle-timeout-in-seconds]]

`pool-idle-timeout-in-seconds`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the maximum time, in seconds, that a bean instance is allowed
to remain idle in the pool. When this timeout expires, the bean instance
in a pool becomes a candidate for passivation or deletion. This is a
hint to the server. A value of 0 specifies that idle beans remain in the
pool indefinitely. Default value is 600.

Applies to stateless session beans, entity beans, and message-driven
beans.


[NOTE]
=======================================================================

For a stateless session bean or a message-driven bean, the bean is
removed (garbage collected) when the timeout expires.

=======================================================================


[[fvzbm]][[GSDPG00622]][[superelements-139]]

Superelements
^^^^^^^^^^^^^

link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)

[[fvzbs]][[GSDPG00623]][[subelements-131]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavs]][[GSDPG00224]][[port-component-name]]

`port-component-name`
~~~~~~~~~~~~~~~~~~~~~

Specifies a unique name for a port component within a web or EJB module.

[[fvzbl]][[GSDPG00624]][[superelements-140]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvyys]][[GSDPG00625]][[subelements-132]]

Subelements
^^^^^^^^^^^

none - contains data

[[beavt]][[GSDPG00225]][[port-info]]

`port-info`
~~~~~~~~~~~

Specifies information for a port within a web service reference.

Either a `service-endpoint-interface` or a `wsdl-port` or both must be
specified. If both are specified, `wsdl-port` specifies the port that
the container chooses for container-managed port selection.

The same `wsdl-port` value must not appear in more than one `port-info`
element within the same `service-ref`.

If a `service-endpoint-interface` is using container-managed port
selection, its value must not appear in more than one `port-info`
element within the same `service-ref`.

[[fvzdh]][[GSDPG00626]][[superelements-141]]

Superelements
^^^^^^^^^^^^^

link:#beaxk[`service-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyva]][[GSDPG00627]][[subelements-133]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `port-info` element.

[[GSDPG979]][[sthref171]][[fvzbr]]


Table C-108 `port-info` subelements

[width="100%",cols="32%,12%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxh[`service-endpoint-interface`]


 |zero or one |Specifies the web service reference name relative to
`java:comp/env`.

a|
link:#beayx[`wsdl-port`]


 |zero or one |Specifies the WSDL port.

a|
link:#beaxv[`stub-property`]


 |zero or more |Specifies JAX-RPC property values that are set on a
`javax.xml.rpc.Stub` object before it is returned to the web service
client.

a|
link:#beari[`call-property`]


 |zero or more |Specifies JAX-RPC property values that are set on a
`javax.xml.rpc.Call` object before it is returned to the web service
client.

a|
link:#beaux[`message-security-binding`]


 |zero or one |Specifies a custom authentication provider binding.
|=======================================================================


[[beavu]][[GSDPG00226]][[prefetch-disabled]]

`prefetch-disabled`
~~~~~~~~~~~~~~~~~~~

Disables prefetching of entity bean states for the specified query
methods. Container-managed relationship fields are prefetched if their
link:#beatc[`fetched-with`] element is set to link:#beasl[`default`].

[[fvyxl]][[GSDPG00628]][[superelements-142]]

Superelements
^^^^^^^^^^^^^

link:#beart[`cmp`] (`glassfish-ejb-jar.xml`)

[[fvyyb]][[GSDPG00629]][[subelements-134]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `prefetch-disabled`
element.

[[GSDPG980]][[sthref172]][[fvyyn]]


Table C-109 `prefetch-disabled` Subelements

[width="100%",cols="30%,14%,56%",options="header",]
|=======================================
|Element |Required |Description
a|
link:#beawc[`query-method`]


 |one or more |Specifies a query method.
|=======================================


[[beavv]][[GSDPG00227]][[principal]]

`principal`
~~~~~~~~~~~

Defines a user name on the platform.

[[fvyvy]][[GSDPG00630]][[superelements-143]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`);
link:#giyhy[`security-map`] (`glassfish-resources.xml`)

[[fvzbt]][[GSDPG00631]][[subelements-135]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `principal` element.

[[GSDPG981]][[sthref173]][[fvzaq]]


Table C-110 `principal` Subelements

[width="100%",cols="29%,15%,56%",options="header",]
|==========================================
|Element |Required |Description
a|
link:#beavf[`name`]


 |only one |Specifies the name of the user.
|==========================================


[[giyif]][[GSDPG00228]][[principal-map]]

`principal-map`
~~~~~~~~~~~~~~~

Maps an EIS principal to a principal defined in the GlassFish Server
domain.

[[GSDPG982]][[sthref174]]


[[superelements-144]]
Superelements
^^^^^^^^^^^^^

link:#giyht[`work-security-map`] (`glassfish-resources.xml`)

[[giyjg]][[GSDPG00632]][[subelements-136]]

Subelements
^^^^^^^^^^^

none

[[GSDPG983]][[sthref175]]


[[attributes-29]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `principal-map`
element.

[[GSDPG984]][[sthref176]][[sthref177]]


Table C-111 `principal-map` Attributes

[width="181%",cols="13%,49%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`eis-principal` |none |Specifies an EIS principal.

|`mapped-principal` |none |Specifies a principal defined in the
GlassFish Server domain.
|=======================================================================


[[beavw]][[GSDPG00229]][[principal-name]]

`principal-name`
~~~~~~~~~~~~~~~~

Contains the principal (user) name.

In an enterprise bean, specifies the principal (user) name that has the
`run-as` role specified.

[[fvyws]][[GSDPG00633]][[superelements-145]]

Superelements
^^^^^^^^^^^^^

link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
`glassfish-web.xml`, `glassfish-ejb-jar.xml`), link:#beaxm[`servlet`]
(`glassfish-web.xml`)

[[fvyxp]][[GSDPG00634]][[subelements-137]]

Subelements
^^^^^^^^^^^

none - contains data

[[gatzl]][[GSDPG00635]][[attributes-30]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `principal-name`
element.

[[GSDPG985]][[sthref178]][[gatyf]]


Table C-112 `principal-name` Attributes

[width="100%",cols="13%,36%,51%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`class-name` |`com.sun.enterprise.deployment.PrincipalImpl` |(optional)
Specifies the custom principal implementation class corresponding to the
named principal.
|=======================================================================


[[beavx]][[GSDPG00230]][[property-with-attributes]]

`property` (with attributes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the name and value of a property. A property adds
configuration information to its parent element that is one or both of
the following:

* Optional with respect to GlassFish Server
* Needed by a system or object that GlassFish Server doesn't have
knowledge of, such as an LDAP server or a Java class

[[fvzeb]][[GSDPG00636]][[superelements-146]]

Superelements
^^^^^^^^^^^^^

link:#beard[`cache`], link:#beare[`cache-helper`],
link:#bearq[`class-loader`], link:#beash[`cookie-properties`],
link:#beasm[`default-helper`], link:#beaum[`manager-properties`],
link:#beaxr[`session-properties`], link:#beaxu[`store-properties`],
link:#beayb[`glassfish-web-app`], link:#gikqk[`valve`],
link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`);
link:#beaqy[`auth-realm`], link:#bearr[`client-container`],
link:#bears[`client-credential`], link:#beauj[`log-service`],
link:#beavz[`provider-config`] (`sun-acc.xml`);
link:#giyhw[`admin-object-resource`],
link:#giygu[`connector-connection-pool`],
link:#giyhv[`connector-resource`], link:#giyhr[`custom-resource`],
link:#giyin[`external-jndi-resource`],
link:#giyil[`jdbc-connection-pool`], link:#giyhm[`jdbc-resource`],
link:#giyik[`mail-resource`], link:#giyit[`resource-adapter-config`]
(`glassfish-resources.xml`)

[[fvyzv]][[GSDPG00637]][[subelements-138]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `property` element.

[[GSDPG986]][[sthref179]][[fvzcb]]


Table C-113 `property` Subelements

[width="100%",cols="27%,17%,56%",options="header",]
|===================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Specifies an optional text description of a property.
|===================================================================



[NOTE]
===================================================================

The `property` element in the `sun-acc.xml` file has no subelements.

===================================================================


[[fvyvi]][[GSDPG00638]][[attributes-31]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `property` element.

[[GSDPG987]][[sthref180]][[fvzdi]]


Table C-114 `property` Attributes

[width="100%",cols="14%,10%,76%",options="header",]
|===================================================
|Attribute |Default |Description
|`name` |none |Specifies the name of the property.
|`value` |none |Specifies the value of the property.
|===================================================


[[fvzab]][[GSDPG00639]][[example-7]]

Example
^^^^^^^

[source,oac_no_warn]
----
<property name="reapIntervalSeconds" value="20" />
----

[[beavy]][[GSDPG00231]][[property-with-subelements]]

`property` (with subelements)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the name and value of a property. A property adds
configuration information to its parent element that is one or both of
the following:

* Optional with respect to GlassFish Server
* Needed by a system or object that GlassFish Server doesn't have
knowledge of, such as an LDAP server or a Java class

[[fvzcl]][[GSDPG00640]][[superelements-147]]

Superelements
^^^^^^^^^^^^^

link:#beasx[`enterprise-beans`], link:#bearv[`cmp-resource`],
link:#beaxd[`schema-generator-properties`],
link:#beayv[`webservice-endpoint`] (`glassfish-ejb-jar.xml`)

[[fvzaf]][[GSDPG00641]][[subelements-139]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `property` element.

[[GSDPG988]][[sthref181]][[fvzcc]]


Table C-115 `property` subelements

[width="100%",cols="22%,16%,62%",options="header",]
|===============================================
|Element |Required |Description
a|
link:#beavf[`name`]


 |only one |Specifies the name of the property.
a|
link:#beayo[`value`]


 |only one |Specifies the value of the property.
|===============================================


[[fvyxz]][[GSDPG00642]][[example-8]]

Example
^^^^^^^

[source,oac_no_warn]
----
<property>
   <name>use-unique-table-names</name>
   <value>true</value>
</property>
----

[[beavz]][[GSDPG00232]][[provider-config]]

`provider-config`
~~~~~~~~~~~~~~~~~

Specifies a configuration for one message security provider.

Although the `request-policy` and `response-policy` subelements are
optional, the `provider-config` element does nothing if they are not
specified.

Use property subelements to configure provider-specific properties.
Property values are passed to the provider when its `initialize` method
is called.

[[fvzcy]][[GSDPG00643]][[superelements-148]]

Superelements
^^^^^^^^^^^^^

link:#beauy[`message-security-config`] (`sun-acc.xml`)

[[fvyzt]][[GSDPG00644]][[subelements-140]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `provider-config`
element.

[[GSDPG989]][[sthref182]][[fvyyq]]


Table C-116 `provider-config` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beawo[`request-policy`]


 |zero or one |Defines the authentication policy requirements of the
authentication provider's request processing.

a|
link:#beawx[`response-policy`]


 |zero or one |Defines the authentication policy requirements of the
authentication provider's response processing.

a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|=======================================================================


[[fvywu]][[GSDPG00645]][[attributes-32]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `provider-config`
element.

[[GSDPG990]][[sthref183]][[fvyvz]]


Table C-117 `provider-config` Attributes

[width="172%",cols="11%,46%,43%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`provider-id` |none |Specifies the provider ID.

|`provider-type` |none |Specifies whether the provider is a `client`,
`server`, or `client-server` authentication provider.

|`class-name` |none |Specifies the Java implementation class of the
provider. Client authentication providers must implement the
com.sun.enterprise.security.jauth.ClientAuthModule interface. Server
authentication providers must implement the
com.sun.enterprise.security.jauth.ServerAuthModule interface.
Client-server providers must implement both interfaces.
|=======================================================================


[[beawb]][[GSDPG00233]][[query-filter]]

`query-filter`
~~~~~~~~~~~~~~

Specifies the query filter for the CMP 1.1 finder.

[[fvzdm]][[GSDPG00646]][[superelements-149]]

Superelements
^^^^^^^^^^^^^

link:#beate[`finder`] (`glassfish-ejb-jar.xml`)

[[fvzco]][[GSDPG00647]][[subelements-141]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawc]][[GSDPG00234]][[query-method]]

`query-method`
~~~~~~~~~~~~~~

Specifies a query method.

[[fvyxo]][[GSDPG00648]][[superelements-150]]

Superelements
^^^^^^^^^^^^^

link:#beavu[`prefetch-disabled`] (`glassfish-ejb-jar.xml`)

[[fvyzm]][[GSDPG00649]][[subelements-142]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `query-method`
element.

[[GSDPG991]][[sthref184]][[fvywl]]


Table C-118 `query-method` Subelements

[width="100%",cols="17%,10%,73%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavb[`method-name`]


 |only one |Specifies a method name.

a|
link:#beavd[`method-params`]


 |only one |Specifies the fully qualified Java type names of method
parameters.
|=======================================================================


[[beawd]][[GSDPG00235]][[query-ordering]]

`query-ordering`
~~~~~~~~~~~~~~~~

Specifies the query ordering for the CMP 1.1 finder.

[[fvzef]][[GSDPG00650]][[superelements-151]]

Superelements
^^^^^^^^^^^^^

link:#beate[`finder`] (`glassfish-ejb-jar.xml`)

[[fvywd]][[GSDPG00651]][[subelements-143]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawe]][[GSDPG00236]][[query-params]]

`query-params`
~~~~~~~~~~~~~~

Specifies the query parameters for the CMP 1.1 finder.

[[fvyvu]][[GSDPG00652]][[superelements-152]]

Superelements
^^^^^^^^^^^^^

link:#beate[`finder`] (`glassfish-ejb-jar.xml`)

[[fvzax]][[GSDPG00653]][[subelements-144]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawf]][[GSDPG00237]][[query-variables]]

`query-variables`
~~~~~~~~~~~~~~~~~

Specifies variables in the query expression for the CMP 1.1 finder.

[[fvyyg]][[GSDPG00654]][[superelements-153]]

Superelements
^^^^^^^^^^^^^

link:#beate[`finder`] (`glassfish-ejb-jar.xml`)

[[fvzce]][[GSDPG00655]][[subelements-145]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawh]][[GSDPG00238]][[read-only]]

`read-only`
~~~~~~~~~~~

Specifies that a field is read-only if `true`. If this element is
absent, the default value is `false` .

[[fvyzs]][[GSDPG00656]][[superelements-154]]

Superelements
^^^^^^^^^^^^^

link:#bearu[`cmp-field-mapping`] (`sun-cmp-mappings.xml`)

[[fvzav]][[GSDPG00657]][[subelements-146]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawi]][[GSDPG00239]][[realm]]

`realm`
~~~~~~~

Specifies the name of the realm used to process all authentication
requests associated with this application. If this element is not
specified or does not match the name of a configured realm, the default
realm is used. For more information about realms, see
"link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open Source
Edition Application Development Guide.

[[fvzaa]][[GSDPG00658]][[superelements-155]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beaqw[`as-context`], link:#beauk[`login-config`]
(`glassfish-ejb-jar.xml`)

[[fvzdq]][[GSDPG00659]][[subelements-147]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawj]][[GSDPG00240]][[refresh-field]]

`refresh-field`
~~~~~~~~~~~~~~~

Specifies a field that gives the application component a programmatic
way to refresh a cached entry.

[[fvywt]][[GSDPG00660]][[superelements-156]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvzbw]][[GSDPG00661]][[subelements-148]]

Subelements
^^^^^^^^^^^

none

[[fvzbp]][[GSDPG00662]][[attributes-33]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `refresh-field`
element.

[[GSDPG992]][[sthref185]][[fvzbz]]


Table C-119 `refresh-field` Attributes

[width="181%",cols="51%,11%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the input parameter name.

|`scope` |`request.parameter` |(optional) Specifies the scope from which
the input parameter is retrieved. Allowed values are
`context.attribute`, `request.header`, `request.parameter`,
`request.cookie`, `session.id`, and `session.attribute`.
|=======================================================================


[[beawk]][[GSDPG00241]][[refresh-period-in-seconds]]

`refresh-period-in-seconds`
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the rate at which a read-only-bean must be refreshed from the
data source. If the value is less than or equal to zero, the bean is
never refreshed; if the value is greater than zero, the bean instances
are refreshed at the specified interval. This rate is just a hint to the
container. Default is 0 (no refresh).

[[fvzcn]][[GSDPG00663]][[superelements-157]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvyxh]][[GSDPG00664]][[subelements-149]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawl]][[GSDPG00242]][[removal-timeout-in-seconds]]

`removal-timeout-in-seconds`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the amount of time a bean instance can remain idle in the
container before it is removed (timeout). A value of 0 specifies that
the container does not remove inactive beans automatically. The default
value is 5400.

If `removal-timeout-in-seconds` is less than or equal to
`cache-idle-timeout-in-seconds`, beans are removed immediately without
being passivated.

Applies to stateful session beans.

For related information, see
link:#bearg[`cache-idle-timeout-in-seconds`].

[[fvzat]][[GSDPG00665]][[superelements-158]]

Superelements
^^^^^^^^^^^^^

link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)

[[fvzeg]][[GSDPG00666]][[subelements-150]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawm]][[GSDPG00243]][[remote-home-impl]]

`remote-home-impl`
~~~~~~~~~~~~~~~~~~

Specifies the fully-qualified class name of the generated `EJBHome`
`impl` class.


[NOTE]
=======================================================================

This value is automatically generated by the server at deployment or
redeployment time. Do not specify it or change it after deployment.

=======================================================================


[[fvywr]][[GSDPG00667]][[superelements-159]]

Superelements
^^^^^^^^^^^^^

link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)

[[fvyyt]][[GSDPG00668]][[subelements-151]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawn]][[GSDPG00244]][[remote-impl]]

`remote-impl`
~~~~~~~~~~~~~

Specifies the fully-qualified class name of the generated `EJBObject`
`impl` class.


[NOTE]
=======================================================================

This value is automatically generated by the server at deployment or
redeployment time. Do not specify it or change it after deployment.

=======================================================================


[[fvyzi]][[GSDPG00669]][[superelements-160]]

Superelements
^^^^^^^^^^^^^

link:#beath[`gen-classes`] (`glassfish-ejb-jar.xml`)

[[fvzag]][[GSDPG00670]][[subelements-152]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawo]][[GSDPG00245]][[request-policy]]

`request-policy`
~~~~~~~~~~~~~~~~

Defines the authentication policy requirements of the authentication
provider's request processing.

[[fvyxw]][[GSDPG00671]][[superelements-161]]

Superelements
^^^^^^^^^^^^^

link:#beavz[`provider-config`] (`sun-acc.xml`)

[[fvzdz]][[GSDPG00672]][[subelements-153]]

Subelements
^^^^^^^^^^^

none

[[fvyvq]][[GSDPG00673]][[attributes-34]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `request-policy`
element.

[[GSDPG993]][[sthref186]][[fvzdy]]


Table C-120 `request-policy` Attributes

[width="172%",cols="11%,46%,43%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`auth-source` |none |Specifies the type of required authentication,
either `sender` (user name and password) or `content` (digital
signature).

|`auth-recipient` |none |Specifies whether recipient authentication
occurs before or after content authentication. Allowed values are
`before-content` and `after-content`.
|=======================================================================


[[beawp]][[GSDPG00246]][[request-protection]]

`request-protection`
~~~~~~~~~~~~~~~~~~~~

Defines the authentication policy requirements of the application's
request processing.

[[fvzcv]][[GSDPG00674]][[superelements-162]]

Superelements
^^^^^^^^^^^^^

link:#beauw[`message-security`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvzby]][[GSDPG00675]][[subelements-154]]

Subelements
^^^^^^^^^^^

none

[[fvzar]][[GSDPG00676]][[attributes-35]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `request-protection`
element.

[[GSDPG994]][[sthref187]][[fvzbu]]


Table C-121 `request-protection` Attributes

[width="172%",cols="13%,46%,41%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`auth-source` |none |Specifies the type of required authentication,
either `sender` (user name and password) or `content` (digital
signature).

|`auth-recipient` |none |Specifies whether recipient authentication
occurs before or after content authentication. Allowed values are
`before-content` and `after-content`.
|=======================================================================


[[beawq]][[GSDPG00247]][[required]]

`required`
~~~~~~~~~~

Specifies whether the authentication method specified in the
link:#beaqx[`auth-method`] element must be used for client
authentication. The value is `true` or `false` (the default).

[[fvyvc]][[GSDPG00677]][[superelements-163]]

Superelements
^^^^^^^^^^^^^

link:#beaqw[`as-context`] (`glassfish-ejb-jar.xml`)

[[fvywc]][[GSDPG00678]][[subelements-155]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawr]][[GSDPG00248]][[res-ref-name]]

`res-ref-name`
~~~~~~~~~~~~~~

Specifies the `res-ref-name` in the corresponding Java EE deployment
descriptor file `resource-ref` entry. The `res-ref-name` element
specifies the name of a resource manager connection factory reference.
The name must be unique within an enterprise bean.

[[fvyvk]][[GSDPG00679]][[superelements-164]]

Superelements
^^^^^^^^^^^^^

link:#beaww[`resource-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyyp]][[GSDPG00680]][[subelements-156]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaws]][[GSDPG00249]][[resize-quantity]]

`resize-quantity`
~~~~~~~~~~~~~~~~~

Specifies the number of bean instances to be:

* Created, if a request arrives when the pool has less than
link:#beaxt[`steady-pool-size`] quantity of beans (applies to pools only
for creation). If the pool has more than `steady-pool-size` minus
link:#beaws[`resize-quantity`] of beans, then `resize-quantity` is still
created.
* Removed, when the link:#beavr[`pool-idle-timeout-in-seconds`] timer
expires and a cleaner thread removes any unused instances.

** For caches, when link:#beauo[`max-cache-size`] is reached,
`resize-quantity` beans are selected for passivation using the
link:#beayp[`victim-selection-policy`]. In addition, the
link:#bearg[`cache-idle-timeout-in-seconds`] or
link:#beawl[`removal-timeout-in-seconds`] timers passivate beans from
the cache.

** For pools, when the link:#beaup[`max-pool-size`] is reached,
`resize-quantity` beans are selected for removal. In addition, the
link:#beavr[`pool-idle-timeout-in-seconds`] timer removes beans until
`steady-pool-size` is reached.

Values are from 0 to MAX_INTEGER. The pool is not resized below the
`steady-pool-size`. Default is 16.

Applies to stateless session beans, entity beans, and message-driven
beans.

For EJB pools, the value can be defined in the EJB container. Default is
16.

For EJB caches, the value can be defined in the EJB container. Default
is 32.

For message-driven beans, the value can be defined in the EJB container.
Default is 2.

[[fvyxb]][[GSDPG00681]][[superelements-165]]

Superelements
^^^^^^^^^^^^^

link:#beara[`bean-cache`], link:#bearb[`bean-pool`]
(`glassfish-ejb-jar.xml`)

[[fvzcf]][[GSDPG00682]][[subelements-157]]

Subelements
^^^^^^^^^^^

none - contains data

[[giyit]][[GSDPG00250]][[resource-adapter-config]]

`resource-adapter-config`
~~~~~~~~~~~~~~~~~~~~~~~~~

Defines a connector (resource adapter) configuration. Stores
configuration information for the resource adapter JavaBean in
`property` subelements.

[[GSDPG995]][[sthref188]]


[[superelements-166]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[GSDPG996]][[sthref189]]


[[subelements-158]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the
`resource-adapter-config` element.

[[GSDPG997]][[sthref190]][[sthref191]]


Table C-122 `resource-adapter-config` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property or a variable.
|==================================================


[[GSDPG998]][[sthref192]]


[[attributes-36]]
Attributes
^^^^^^^^^^

The following table describes attributes for the
`resource-adapter-config` element.

[[GSDPG999]][[sthref193]][[sthref194]]


Table C-123 `resource-adapter-config` Attributes

[width="172%",cols="16%,46%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |(optional) Not used. See `resource-adapter-name`.

|`thread-pool-ids` |none |(optional) Specifies a comma-separated list of
the names of thread pools.

|`object-type` |`user` a|
(optional) Defines the type of the resource. Allowed values are:

* `system-all` - A system resource for all server instances and the
domain application server.
* `system-admin` - A system resource only for the domain application
server.
* `system-instance` - A system resource for all server instances only.
* `user` - A user resource.

|`resource-``adapter-name` |none |Specifies the name of a deployed
connector module or application. If the resource adapter is embedded in
an application, then it is app_name`#`rar_name.
|=======================================================================


[[GSDPG1000]][[sthref195]]


[[properties-11]]
Properties
^^^^^^^^^^

Properties of the `resource-adapter-config` element are the names of
setter methods of the `resourceadapter-class` element in the `ra.xml`
file, which defines the class name of the resource adapter JavaBean. Any
properties defined here override the default values present in `ra.xml`.

[[beawt]][[GSDPG00251]][[resource-adapter-mid]]

`resource-adapter-mid`
~~~~~~~~~~~~~~~~~~~~~~

Specifies the module ID of the resource adapter that is responsible for
delivering messages to the message-driven bean.

[[fvyvd]][[GSDPG00683]][[superelements-167]]

Superelements
^^^^^^^^^^^^^

link:#beaus[`mdb-resource-adapter`] (`glassfish-ejb-jar.xml`)

[[fvzed]][[GSDPG00684]][[subelements-159]]

Subelements
^^^^^^^^^^^

none - contains data

[[beawu]][[GSDPG00252]][[resource-env-ref]]

`resource-env-ref`
~~~~~~~~~~~~~~~~~~

Maps the `res-ref-name` in the corresponding Java EE deployment
descriptor file `resource-env-ref` entry to the absolute `jndi-name` of
a resource.

[[fvyvr]][[GSDPG00685]][[superelements-168]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[fvywe]][[GSDPG00686]][[subelements-160]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `resource-env-ref`
element.

[[GSDPG1001]][[sthref196]][[fvyye]]


Table C-124 `resource-env-ref` Subelements

[width="100%",cols="26%,10%,64%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beawv[`resource-env-ref-name`]


 |only one |Specifies the `res-ref-name` in the corresponding Java EE
deployment descriptor file `resource-env-ref` entry.

a|
link:#beatw[`jndi-name`]


 |only one |Specifies the absolute `jndi-name` of a resource.
|=======================================================================


[[fvzdf]][[GSDPG00687]][[example-9]]

Example
^^^^^^^

[source,oac_no_warn]
----
<resource-env-ref>
   <resource-env-ref-name>jms/StockQueueName</resource-env-ref-name>
   <jndi-name>jms/StockQueue</jndi-name>
</resource-env-ref>
----

[[beawv]][[GSDPG00253]][[resource-env-ref-name]]

`resource-env-ref-name`
~~~~~~~~~~~~~~~~~~~~~~~

Specifies the `res-ref-name` in the corresponding Java EE deployment
descriptor file `resource-env-ref` entry.

[[fvzau]][[GSDPG00688]][[superelements-169]]

Superelements
^^^^^^^^^^^^^

link:#beawu[`resource-env-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyxj]][[GSDPG00689]][[subelements-161]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaww]][[GSDPG00254]][[resource-ref]]

`resource-ref`
~~~~~~~~~~~~~~

Maps the `res-ref-name` in the corresponding Java EE deployment
descriptor file `resource-ref` entry to the absolute `jndi-name` of a
resource.


[NOTE]
=======================================================================

Connections acquired from JMS connection factories are not shareable in
the current release of GlassFish Server. The `res-sharing-scope` element
in the `ejb-jar.xml` file `resource-ref` element is ignored for JMS
connection factories.

When `resource-ref` specifies a JMS connection factory for the Open
Message Queue, the `default-resource-principal` (name/password) must
exist in the Message Queue user repository. Refer to the Security
Management chapter in the olink:GMADG[Open Message Queue Administration
Guide] for information on how to manage the Message Queue user
repository.

=======================================================================


[[fvywf]][[GSDPG00690]][[superelements-170]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[fvyzz]][[GSDPG00691]][[subelements-162]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `resource-ref`
element.

[[GSDPG1002]][[sthref197]][[fvzbd]]


Table C-125 `resource-ref` Subelements

[width="100%",cols="33%,11%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beawr[`res-ref-name`]


 |only one |Specifies the `res-ref-name` in the corresponding Java EE
deployment descriptor file `resource-ref` entry.

a|
link:#beatw[`jndi-name`]


 |only one |Specifies the absolute `jndi-name` of a resource.

a|
link:#beasn[`default-resource-principal`]


 |zero or one |Specifies the default principal (user) for the resource.
|=======================================================================


[[fvyzk]][[GSDPG00692]][[example-10]]

Example
^^^^^^^

[source,oac_no_warn]
----
<resource-ref>
   <res-ref-name>jdbc/EmployeeDBName</res-ref-name>
   <jndi-name>jdbc/EmployeeDB</jndi-name>
</resource-ref>
----

[[giyiy]][[GSDPG00255]][[resources]]

`resources`
~~~~~~~~~~~

Defines application-scoped resources for an enterprise application, web
module, EJB module, connector module, or application client module. This
is the root element; there can only be one `resources` element in a
`glassfish-resources.xml` file. See link:dd-files.html#giyhh[The
glassfish-resources.xml File].


[NOTE]
=======================================================================

You must specify a Java Naming and Directory Interface (JNDI) name for
each resource. To avoid collisions with names of other enterprise
resources in JNDI, and to avoid portability problems, all names in a
GlassFish Server application should begin with the string `java:app/`.

=======================================================================


[[GSDPG1003]][[sthref198]]


[[superelements-171]]
Superelements
^^^^^^^^^^^^^

none

[[GSDPG1004]][[sthref199]]


[[subelements-163]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `resources` element.

[[GSDPG1005]][[sthref200]][[sthref201]]


Table C-126 `resources` Subelements

[width="100%",cols="31%,12%,57%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#giyhr[`custom-resource`]


 |zero or more |Defines a custom resource.

a|
link:#giyin[`external-jndi-resource`]


 |zero or more |Defines a resource that resides in an external JNDI
repository.

a|
link:#giyhm[`jdbc-resource`]


 |zero or more |Defines a JDBC (Java Database Connectivity) resource.

a|
link:#giyik[`mail-resource`]


 |zero or more |Defines a Jakarta Mail resource.

a|
link:#giyhw[`admin-object-resource`]


 |zero or more |Defines an administered object for an inbound resource
adapter.

a|
link:#giyhv[`connector-resource`]


 |zero or more |Defines a connector (resource adapter) resource.

a|
link:#giyit[`resource-adapter-config`]


 |zero or more |Defines a resource adapter configuration.

a|
link:#giyil[`jdbc-connection-pool`]


 |zero or more |Defines the properties that are required for creating a
JDBC connection pool.

a|
link:#giygu[`connector-connection-pool`]


 |zero or more |Defines the properties that are required for creating a
connector connection pool.

a|
link:#giyht[`work-security-map`]


 |zero or more |Defines a work security map.
|=======================================================================



[NOTE]
===========================================================

Subelements of a `resources` element can occur in any order.

===========================================================


[[beawx]][[GSDPG00256]][[response-policy]]

`response-policy`
~~~~~~~~~~~~~~~~~

Defines the authentication policy requirements of the authentication
provider's response processing.

[[fvzcg]][[GSDPG00693]][[superelements-172]]

Superelements
^^^^^^^^^^^^^

link:#beavz[`provider-config`] (`sun-acc.xml`)

[[fvyxm]][[GSDPG00694]][[subelements-164]]

Subelements
^^^^^^^^^^^

none

[[fvyxf]][[GSDPG00695]][[attributes-37]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `response-policy`
element.

[[GSDPG1006]][[sthref202]][[fvyyr]]


Table C-127 `response-policy` Attributes

[width="172%",cols="13%,46%,41%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`auth-source` |none |Specifies the type of required authentication,
either `sender` (user name and password) or `content` (digital
signature).

|`auth-recipient` |none |Specifies whether recipient authentication
occurs before or after content authentication. Allowed values are
`before-content` and `after-content`.
|=======================================================================


[[beawy]][[GSDPG00257]][[response-protection]]

`response-protection`
~~~~~~~~~~~~~~~~~~~~~

Defines the authentication policy requirements of the application's
response processing.

[[fvzdk]][[GSDPG00696]][[superelements-173]]

Superelements
^^^^^^^^^^^^^

link:#beauw[`message-security`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvyxd]][[GSDPG00697]][[subelements-165]]

Subelements
^^^^^^^^^^^

none

[[fvzeh]][[GSDPG00698]][[attributes-38]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `response-protection`
element.

[[GSDPG1007]][[sthref203]][[fvzej]]


Table C-128 `response-protection` Attributes

[width="172%",cols="13%,46%,41%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`auth-source` |none |Specifies the type of required authentication,
either `sender` (user name and password) or `content` (digital
signature).

|`auth-recipient` |none |Specifies whether recipient authentication
occurs before or after content authentication. Allowed values are
`before-content` and `after-content`.
|=======================================================================


[[beawz]][[GSDPG00258]][[role-name]]

`role-name`
~~~~~~~~~~~

Contains the `role-name` in the `security-role` element of the
corresponding Java EE deployment descriptor file.

[[fvzek]][[GSDPG00699]][[superelements-174]]

Superelements
^^^^^^^^^^^^^

link:#beaxg[`security-role-mapping`] (`glassfish-application.xml`,
`glassfish-web.xml`, `glassfish-ejb-jar.xml`)

[[fvzei]][[GSDPG00700]][[subelements-166]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxb]][[GSDPG00259]][[sas-context]]

`sas-context`
~~~~~~~~~~~~~

Describes the sas-context fields.

[[fvzel]][[GSDPG00701]][[superelements-175]]

Superelements
^^^^^^^^^^^^^

link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)

[[fvzfb]][[GSDPG00702]][[subelements-167]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `sas-context` element.

[[GSDPG1008]][[sthref204]][[fvzey]]


Table C-129 `sas-context` Subelements

[width="100%",cols="30%,11%,59%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#bearj[`caller-propagation`]


 |only one |Specifies whether the target accepts propagated caller
identities. The values are NONE, SUPPORTED, or REQUIRED.
|=======================================================================


[[beaxc]][[GSDPG00260]][[schema]]

`schema`
~~~~~~~~

Specifies the file that contains a description of the database schema to
which the beans in this `sun-cmp-mappings.xml` file are mapped. If this
element is empty, the database schema file is automatically generated at
deployment time. Otherwise, the `schema` element names a `.dbschema`
file with a pathname relative to the directory containing the
`sun-cmp-mappings.xml` file, but without the `.dbschema` extension. See
"link:../application-development-guide/container_managed-persistence.html#GSDVG00439[Automatic Database Schema Capture]" in GlassFish
Server Open Source Edition Application Development Guide.

[[fvzfa]][[GSDPG00703]][[superelements-176]]

Superelements
^^^^^^^^^^^^^

link:#beaxy[`sun-cmp-mapping`] (`sun-cmp-mappings.xml`)

[[fvzeq]][[GSDPG00704]][[subelements-168]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvzer]][[GSDPG00705]][[examples-1]]

Examples
^^^^^^^^

[source,oac_no_warn]
----
<schema/> <!-- use automatic schema generation -->

<schema>CompanySchema</schema> <!-- use "CompanySchema.dbschema" -->
----

[[beaxd]][[GSDPG00261]][[schema-generator-properties]]

`schema-generator-properties`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies field-specific column attributes in `property` subelements.

[[fvzen]][[GSDPG00706]][[superelements-177]]

Superelements
^^^^^^^^^^^^^

link:#bearv[`cmp-resource`] (`glassfish-ejb-jar.xml`)

[[fvzez]][[GSDPG00707]][[subelements-169]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`schema-generator-properties` element.

[[GSDPG1009]][[sthref205]][[fvzex]]


Table C-130 `schema-generator-properties` Subelements

[width="100%",cols="40%,14%,46%",options="header",]
|===================================================
|Element |Required |Description
a|
link:#beavy[`property` (with subelements)]


 |zero or more |Specifies a property name and value.
|===================================================


[[fvzew]][[GSDPG00708]][[properties-12]]

Properties
^^^^^^^^^^

The following table describes properties for the
`schema-generator-properties` element.

[[GSDPG1010]][[sthref206]][[fvzev]]


Table C-131 `schema-generator-properties` Properties

[width="172%",cols="17%,46%,37%",options="header",]
|=======================================================================
|Property |Default |Description
|`use-unique-table-names` |`false` |Specifies that generated table names
are unique within each GlassFish Server domain. This property can be
overridden during deployment. See "link:../application-development-guide/container_managed-persistence.html#GSDVG00438[Generation Options
for CMP]" in GlassFish Server Open Source Edition Application
Development Guide.

|bean-name`.`field-name`.`attribute |none |Defines a column attribute.
For attribute descriptions, see link:#fvymm[Table C-132].
|=======================================================================


The following table lists the column attributes for properties defined
in the `schema-generator-properties` element.

[[GSDPG1011]][[sthref207]][[fvymm]]


Table C-132 `schema-generator-properties` Column Attributes

[width="100%",cols="24%,76%",options="header",]
|=======================================================================
|Attribute |Description
|`jdbc-type` |Specifies the JDBC type of the column created for the CMP
field. The actual SQL type generated is based on this JDBC type but is
database vendor specific.

|`jdbc-maximum-``length` a|
Specifies the maximum number of characters stored in the column
corresponding to the CMP field. Applies only when the actual SQL that is
generated for the column requires a length.

For example, a `jdbc-maximum-length` of `32` on a CMP `String` field
such as `firstName` normally results in a column definition such as
VARCHAR(32). But if the `jdbc-type` is `CLOB` and you are deploying on
Oracle, the resulting column definition is CLOB. No length is given,
because in an Oracle database, a CLOB has no length.

|`jdbc-precision` |Specifies the maximum number of digits stored in a
column which represents a numeric type.

|`jdbc-scale` |Specifies the number of digits stored to the right of the
decimal point in a column that represents a floating point number.

|`jdbc-nullable` |Specifies whether the column generated for the CMP
field allows null values.
|=======================================================================


[[fvzem]][[GSDPG00709]][[example-11]]

Example
^^^^^^^

[source,oac_no_warn]
----
<schema-generator-properties>
   <property>
         <name>Employee.firstName.jdbc-type</name>
         <value>char</value>
   </property>
   <property>
         <name>Employee.firstName.jdbc-maximum-length</name>
         <value>25</value>
   </property>
   <property>
         <name>use-unique-table-names</name>
         <value>true</value>
   </property>
</schema-generator-properties>
----

[[beaxe]][[GSDPG00262]][[secondary-table]]

`secondary-table`
~~~~~~~~~~~~~~~~~

Specifies a bean's secondary table(s).

[[fvzep]][[GSDPG00710]][[superelements-178]]

Superelements
^^^^^^^^^^^^^

link:#beasy[`entity-mapping`] (`sun-cmp-mappings.xml`)

[[fvzeo]][[GSDPG00711]][[subelements-170]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `secondary-table`
element.

[[GSDPG1012]][[sthref208]][[fvzet]]


Table C-133 `secondary table` Subelements

[width="100%",cols="28%,15%,57%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beayd[`table-name`]


 |only one |Specifies the name of a database table.

a|
link:#beasa[`column-pair`]


 |one or more |Specifies the pair of columns that determine the
relationship between two database tables.
|=======================================================================


[[beaxf]][[GSDPG00263]][[security]]

`security`
~~~~~~~~~~

Defines the SSL security configuration for IIOP/SSL communication with
the target server.

[[fvzes]][[GSDPG00712]][[superelements-179]]

Superelements
^^^^^^^^^^^^^

link:#beaye[`target-server`] (`sun-acc.xml`)

[[fvzeu]][[GSDPG00713]][[subelements-171]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `security` element.

[[GSDPG1013]][[sthref209]][[fvzfe]]


Table C-134 `security` Subelements

[width="100%",cols="20%,12%,68%",options="header",]
|=====================================================================
|Element |Required |Description
a|
link:#beaxs[`ssl`]


 |only one |Specifies the SSL processing parameters.
a|
link:#beark[`cert-db`]


 |only one |Not implemented. Included for backward compatibility only.
|=====================================================================


[[giyhy]][[GSDPG00264]][[security-map]]

`security-map`
~~~~~~~~~~~~~~

Maps the principal received during servlet or EJB authentication to the
credentials accepted by the EIS. This mapping is optional. It is
possible to map multiple GlassFish Server principals to the same
back-end principal.

This is different from a link:#giyht[`work-security-map`], which maps a
principal associated with an incoming work instance to a principal in
the GlassFish Server's security domain.

[[GSDPG1014]][[sthref210]]


[[superelements-180]]
Superelements
^^^^^^^^^^^^^

link:#giygu[`connector-connection-pool`] (`glassfish-resources.xml`)

[[GSDPG1015]][[sthref211]]


[[subelements-172]]
Subelements
^^^^^^^^^^^

The following table describes subelements for the `security-map`
element.

[[GSDPG1016]][[sthref212]][[sthref213]]


Table C-135 `security-map` Subelements

[width="100%",cols="21%,12%,67%",options="header",]
|====================================================================
|Element |Required |Description
a|
link:#beavv[`principal`]


 |one or more |Contains the principal of the servlet or EJB client.
a|
link:#giyiq[`user-group`]


 |one or more |Contains the group to which the principal belongs.
a|
link:#giyjv[`backend-principal`]


 |only one |Specifies the user name and password required by the EIS.
|====================================================================


[[GSDPG1017]][[sthref214]]


[[attributes-39]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `security-map` element.

[[GSDPG1018]][[sthref215]][[sthref216]]


Table C-136 `security-map` Attributes

[width="100%",cols="23%,20%,57%",options="header",]
|========================================================
|Attribute |Default |Description
|`name` |none |Specifies a name for the security mapping.
|========================================================


[[beaxg]][[GSDPG00265]][[security-role-mapping]]

`security-role-mapping`
~~~~~~~~~~~~~~~~~~~~~~~

Maps roles to users or groups in the currently active realm. See
"link:../application-development-guide/securing-apps.html#GSDVG00118[Realm Configuration]" in GlassFish Server Open Source
Edition Application Development Guide.

The role mapping element maps a role, as specified in the EJB JAR
`role-name` entries, to a environment-specific user or group. If it maps
to a user, it must be a concrete user which exists in the current realm,
who can log into the server using the current authentication method. If
it maps to a group, the realm must support groups and the group must be
a concrete group which exists in the current realm. To be useful, there
must be at least one user in that realm who belongs to that group.

[[fvzfc]][[GSDPG00714]][[superelements-181]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`)

[[fvzfd]][[GSDPG00715]][[subelements-173]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`security-role-mapping` element.

[[GSDPG1019]][[sthref217]][[fvzfj]]


Table C-137 `security-role-mapping` Subelements

[width="100%",cols="18%,33%,49%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beawz[`role-name`]


 |only one |Contains the `role-name` in the `security-role` element of
the corresponding Java EE deployment descriptor file.

a|
link:#beavw[`principal-name`]


 |one or more if no `group-name`, otherwise zero or more |Contains a
principal (user) name in the current realm. In an enterprise bean, the
principal must have the run-as role specified.

a|
link:#beati[`group-name`]


 |one or more if no `principal-name`, otherwise zero or more |Contains a
group name in the current realm.
|=======================================================================


[[beaxh]][[GSDPG00266]][[service-endpoint-interface]]

`service-endpoint-interface`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies the web service reference name relative to `java:comp/env`.

[[fvzfm]][[GSDPG00716]][[superelements-182]]

Superelements
^^^^^^^^^^^^^

link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvzfl]][[GSDPG00717]][[subelements-174]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxi]][[GSDPG00267]][[service-impl-class]]

`service-impl-class`
~~~~~~~~~~~~~~~~~~~~

Specifies the name of the generated service implementation class.

[[fvzfg]][[GSDPG00718]][[superelements-183]]

Superelements
^^^^^^^^^^^^^

link:#beaxk[`service-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvzfk]][[GSDPG00719]][[subelements-175]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxj]][[GSDPG00268]][[service-qname]]

`service-qname`
~~~~~~~~~~~~~~~

Specifies the WSDL service element that is being referred to.

[[fvzfn]][[GSDPG00720]][[superelements-184]]

Superelements
^^^^^^^^^^^^^

link:#beaxk[`service-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`);
link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvzff]][[GSDPG00721]][[subelements-176]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `service-qname`
element.

[[GSDPG1020]][[sthref218]][[fvzfi]]


Table C-138 `service-qname` subelements

[width="100%",cols="30%,15%,55%",options="header",]
|===============================================
|Element |Required |Description
a|
link:#beavh[`namespaceURI`]


 |only one |Specifies the namespace URI.
a|
link:#beaug[`localpart`]


 |only one |Specifies the local part of a QNAME.
|===============================================


[[beaxk]][[GSDPG00269]][[service-ref]]

`service-ref`
~~~~~~~~~~~~~

Specifies runtime settings for a web service reference. Runtime
information is only needed in the following cases:

* To define the port used to resolve a container-managed port
* To define the default Stub/Call property settings for Stub objects
* To define the URL of a final WSDL document to be used instead of the
one associated with the `service-ref` in the standard Java EE deployment
descriptor

[[fvzfh]][[GSDPG00722]][[superelements-185]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beass[`ejb`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[fvzhf]][[GSDPG00723]][[subelements-177]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `service-ref` element.

[[GSDPG1021]][[sthref219]][[fvzgc]]


Table C-139 `service-ref` subelements

[width="100%",cols="23%,12%,65%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxl[`service-ref-name`]


 |only one |Specifies the web service reference name relative to
`java:comp/env`.

a|
link:#beavt[`port-info`]


 |zero or more |Specifies information for a port within a web service
reference.

a|
link:#beari[`call-property`]


 |zero or more |Specifies JAX-RPC property values that can be set on a
`javax.xml.rpc.Call` object before it is returned to the web service
client.

a|
link:#beayw[`wsdl-override`]


 |zero or one |Specifies a valid URL pointing to a final WSDL document.

a|
link:#beaxi[`service-impl-class`]


 |zero or one |Specifies the name of the generated service
implementation class.

a|
link:#beaxj[`service-qname`]


 |zero or one |Specifies the WSDL service element that is being
referenced.
|=======================================================================


[[beaxl]][[GSDPG00270]][[service-ref-name]]

`service-ref-name`
~~~~~~~~~~~~~~~~~~

Specifies the web service reference name relative to `java:comp/env`.

[[fvzfx]][[GSDPG00724]][[superelements-186]]

Superelements
^^^^^^^^^^^^^

link:#beaxk[`service-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvzga]][[GSDPG00725]][[subelements-178]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxm]][[GSDPG00271]][[servlet]]

`servlet`
~~~~~~~~~

Specifies a principal name for a servlet. Used for the `run-as` role
defined in `web.xml`.

[[fvzgd]][[GSDPG00726]][[superelements-187]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvzhs]][[GSDPG00727]][[subelements-179]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `servlet` element.

[[GSDPG1022]][[sthref220]][[fvzhy]]


Table C-140 `servlet` Subelements

[width="100%",cols="24%,12%,64%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxo[`servlet-name`]


 |only one |Contains the name of a servlet, which is matched to a
`servlet-name` in `web.xml`.

a|
link:#beavw[`principal-name`]


 |zero or one |Contains a principal (user) name in the current realm.

a|
link:#beayv[`webservice-endpoint`]


 |zero or more |Specifies information about a web service endpoint.
|=======================================================================


[[beaxn]][[GSDPG00272]][[servlet-impl-class]]

`servlet-impl-class`
~~~~~~~~~~~~~~~~~~~~

Specifies the automatically generated name of the servlet implementation
class.

[[fvzhx]][[GSDPG00728]][[superelements-188]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvzfs]][[GSDPG00729]][[subelements-180]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxo]][[GSDPG00273]][[servlet-name]]

`servlet-name`
~~~~~~~~~~~~~~

Specifies the name of a servlet, which is matched to a `servlet-name` in
`web.xml`. This name must be present in `web.xml`.

[[fvzhj]][[GSDPG00730]][[superelements-189]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`], link:#beaxm[`servlet`]
(`glassfish-web.xml`)

[[fvzir]][[GSDPG00731]][[subelements-181]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxp]][[GSDPG00274]][[session-config]]

`session-config`
~~~~~~~~~~~~~~~~

Specifies session configuration information. Overrides the web container
settings for an individual web module.

[[fvzic]][[GSDPG00732]][[superelements-190]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[fvzfy]][[GSDPG00733]][[subelements-182]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `session-config`
element.

[[GSDPG1023]][[sthref221]][[fvzib]]


Table C-141 `session-config` Subelements

[width="100%",cols="31%,16%,53%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beaxq[`session-manager`]


 |zero or one |Specifies session manager configuration information.
a|
link:#beaxr[`session-properties`]


 |zero or one |Specifies session properties.
a|
link:#beash[`cookie-properties`]


 |zero or one |Specifies session cookie properties.
|==================================================================


[[beaxq]][[GSDPG00275]][[session-manager]]

`session-manager`
~~~~~~~~~~~~~~~~~

Specifies session manager information.

[[fvzgx]][[GSDPG00734]][[superelements-191]]

Superelements
^^^^^^^^^^^^^

link:#beaxp[`session-config`] (`glassfish-web.xml`)

[[fvzit]][[GSDPG00735]][[subelements-183]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `session-manager`
element.

[[GSDPG1024]][[sthref222]][[fvzgo]]


Table C-142 `session-manager` Subelements

[width="100%",cols="32%,15%,53%",options="header",]
|=================================================================
|Element |Required |Description
a|
link:#beaum[`manager-properties`]


 |zero or one |Specifies session manager properties.
a|
link:#beaxu[`store-properties`]


 |zero or one |Specifies session persistence (storage) properties.
|=================================================================


[[fvzgm]][[GSDPG00736]][[attributes-40]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `session-manager`
element.

[[GSDPG1025]][[sthref223]][[fvzje]]


Table C-143 `session-manager` Attributes

[width="172%",cols="13%,46%,41%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`persistence-type` |`memory` a|
(optional) Specifies the session persistence mechanism. Allowed values
are `memory`, `file`, and `replicated`.

If you have installed and configured Coherence*Web, the `coherence-web`
persistence type is also available. For more information, see Using
Coherence*Web with GlassFish Server
(`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`).

|=======================================================================


[[beaxr]][[GSDPG00276]][[session-properties]]

`session-properties`
~~~~~~~~~~~~~~~~~~~~

Specifies session properties.

[[fvzha]][[GSDPG00737]][[superelements-192]]

Superelements
^^^^^^^^^^^^^

link:#beaxp[`session-config`] (`glassfish-web.xml`)

[[fvzgk]][[GSDPG00738]][[subelements-184]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `session-properties`
element.

[[GSDPG1026]][[sthref224]][[fvzgv]]


Table C-144 `session-properties` Subelements

[width="100%",cols="36%,14%,50%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvzht]][[GSDPG00739]][[properties-13]]

Properties
^^^^^^^^^^

The following table describes properties for the `session-properties`
element.

[[GSDPG1027]][[sthref225]][[fvzii]]


Table C-145 `session-properties` Properties

[width="172%",cols="14%,46%,40%",options="header",]
|=======================================================================
|Property |Default |Description
|`timeoutSeconds` |`1800` a|
Specifies the default maximum inactive interval (in seconds) for all
sessions created in this web module. If set to `0` or less, sessions in
this web module never expire.

If a `session-timeout` element is specified in the `web.xml` file, the
`session-timeout` value overrides any `timeoutSeconds` value. If neither
`session-timeout` nor `timeoutSeconds` is specified, the
`timeoutSeconds` default is used.

Note that the `session-timeout` element in `web.xml` is specified in
minutes, not seconds.

|`enableCookies` |`true` |Uses cookies for session tracking if set to
`true`.

|`enableURLRewriting` |`true` |Enables URL rewriting. This provides
session tracking via URL rewriting when the browser does not accept
cookies. You must also use an `encodeURL` or `encodeRedirectURL` call in
the servlet or JSP.
|=======================================================================


[[beaxs]][[GSDPG00277]][[ssl]]

`ssl`
~~~~~

Defines SSL processing parameters.

[[fvzft]][[GSDPG00740]][[superelements-193]]

Superelements
^^^^^^^^^^^^^

link:#beaxf[`security`] (`sun-acc.xml`)

[[fvzgh]][[GSDPG00741]][[subelements-185]]

Subelements
^^^^^^^^^^^

none

[[fvzip]][[GSDPG00742]][[attributes-41]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `SSL` element.

[[GSDPG1028]][[sthref226]][[fvzgb]]


Table C-146 `ssl attributes`

[width="172%",cols="16%,46%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`cert-nickname` |`s1as` |(optional) The nickname of the server
certificate in the certificate database or the PKCS#11 token. In the
certificate, the name format is tokenname`:`nickname. Including the
tokenname`:` part of the name in this attribute is optional.

|`ssl2-enabled` |`false` |(optional) Determines whether SSL2 is enabled.

|`ssl2-ciphers` |none |(optional) A comma-separated list of the SSL2
ciphers to be used. Ciphers not explicitly listed will be disabled for
the target, even if those ciphers are available in the particular cipher
suite you are using. If this option is not used, all supported ciphers
are assumed to be enabled. Allowed values are `rc4`, `rc4export`, `rc2`,
`rc2export`, `idea`, `des`, `desede3`.

|`ssl3-enabled` |`true` |(optional) Determines whether SSL3 is enabled.

|`ssl3-tls-``ciphers` |none |(optional) A comma-separated list of the
SSL3 and/or TLS ciphers to be used. Ciphers not explicitly listed will
be disabled for the target, even if those ciphers are available in the
particular cipher suite you are using. If this option is not used, all
supported ciphers are assumed to be enabled. Allowed values are
`SSL_RSA_WITH_RC4_128_MD5`, `SSL_RSA_WITH_3DES_EDE_CBC_SHA`,
`SSL_RSA_WITH_DES_CBC_SHA`, `SSL_RSA_EXPORT_WITH_RC4_40_MD5`,
`SSL_RSA_WITH_NULL_MD5`, `SSL_RSA_WITH_RC4_128_SHA`,
`SSL_RSA_WITH_NULL_SHA`. Values available in previous releases are
supported for backward compatibility.

|`tls-enabled` |`true` |(optional) Determines whether TLS is enabled.

|`tls-rollback-``enabled` |`true` |(optional) Determines whether TLS
rollback is enabled. Enable TLS rollback for Microsoft Internet Explorer
5.0 and 5.5.
|=======================================================================


[[beaxt]][[GSDPG00278]][[steady-pool-size]]

`steady-pool-size`
~~~~~~~~~~~~~~~~~~

Specifies the initial and minimum number of bean instances that are
maintained in the pool. Default is 32. Applies to stateless session
beans and message-driven beans.

[[fvziq]][[GSDPG00743]][[superelements-194]]

Superelements
^^^^^^^^^^^^^

link:#bearb[`bean-pool`] (`glassfish-ejb-jar.xml`)

[[fvziy]][[GSDPG00744]][[subelements-186]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaxu]][[GSDPG00279]][[store-properties]]

`store-properties`
~~~~~~~~~~~~~~~~~~

Specifies session persistence (storage) properties.

[[fvzie]][[GSDPG00745]][[superelements-195]]

Superelements
^^^^^^^^^^^^^

link:#beaxq[`session-manager`] (`glassfish-web.xml`)

[[fvzid]][[GSDPG00746]][[subelements-187]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `store-properties`
element.

[[GSDPG1029]][[sthref227]][[fvzif]]


Table C-147 `store-properties` Subelements

[width="100%",cols="37%,14%,49%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[fvzho]][[GSDPG00747]][[properties-14]]

Properties
^^^^^^^^^^

The following table describes properties for the `store-properties`
element.

[[GSDPG1030]][[sthref228]][[fvzgr]]


Table C-148 `store-properties` Properties

[width="100%",cols="21%,23%,56%",options="header",]
|=======================================================================
|Property |Default |Description
|`directory` |domain-dir`/generated/jsp/`app-name`/`module-name`_war` a|
Specifies the absolute or relative pathname of the directory into which
individual session files are written. A relative path is relative to the
temporary work directory for this web module.

Applicable only if the `persistence-type` attribute of the parent
link:#beaxq[`session-manager`] element is `file`.

|`persistenceScope` |`session` a|
Specifies how much of the session state is stored. Allowed values are as
follows:

* `session` - The entire session state is stored every time. This mode
provides the best guarantee that your session data is correctly stored
for any distributable web module.
* `modified-session` - The entire session state is stored if it has been
modified. A session is considered to have been modified if
`HttpSession.setAttribute()` or `HttpSession.removeAttribute()` was
called. You must guarantee that `setAttribute` is called every time an
attribute is changed. This is not a Java EE specification requirement,
but it is required for this mode to work properly.
* `modified-attribute` - Only modified session attributes are stored.
For this mode to work properly, you must follow some guidelines, which
are explained immediately following this table.

Applicable only if the `persistence-type` attribute of the parent
link:#beaxq[`session-manager`] element is `replicated`.

|=======================================================================


If the `persistenceScope` store property is set to `modified-attribute`,
a web module must follow these guidelines:

* Call `setAttribute` every time the session state is modified.
* Make sure there are no cross-references between attributes. The object
graph under each distinct attribute key is serialized and stored
separately. If there are any object cross references between the objects
under each separate key, they are not serialized and deserialized
correctly.
* Distribute the session state across multiple attributes, or at least
between a read-only attribute and a modifiable attribute.

[[beaxv]][[GSDPG00280]][[stub-property]]

`stub-property`
~~~~~~~~~~~~~~~

Specifies JAX-RPC property values that are set on a `javax.xml.rpc.Stub`
object before it is returned to the web service client. The property
names can be any properties supported by the JAX-RPC `Stub`
implementation.

[[fvzgu]][[GSDPG00748]][[superelements-196]]

Superelements
^^^^^^^^^^^^^

link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvzij]][[GSDPG00749]][[subelements-188]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `stub-property`
element.

[[GSDPG1031]][[sthref229]][[fvziz]]


Table C-149 `stub-property` subelements

[width="100%",cols="23%,13%,64%",options="header",]
|=============================================
|Element |Required |Description
a|
link:#beavf[`name`]


 |only one |Specifies the name of the entity.
a|
link:#beayo[`value`]


 |only one |Specifies the value of the entity.
|=============================================


[[gawoa]][[GSDPG00750]][[properties-15]]

Properties
^^^^^^^^^^

The following table describes properties for the `stub-property`
element.

[[GSDPG1032]][[sthref230]][[gawou]]


Table C-150 `stub-property` properties

[width="181%",cols="10%,49%,41%",options="header",]
|=======================================================================
|Property |Default |Description
|`jbi-enabled` |`true` |Determines whether the visibility of this
endpoint as a Java Business Integration service is enabled or disabled.
|=======================================================================


[[fvzji]][[GSDPG00751]][[example-12]]

Example
^^^^^^^

[source,oac_no_warn]
----
<service-ref>
<service-ref-name>service/FooProxy</service-ref-name>
  <port-info>
       <service-endpoint-interface>a.FooPort</service-endpoint-interface>
       <wsdl-port>
          <namespaceURI>urn:Foo</namespaceURI>
          <localpart>FooPort</localpart>
       </wsdl-port>
       <stub-property>
          <name>javax.xml.rpc.service.endpoint.address</name>
          <value>http://localhost:8080/a/Foo</value>
       </stub-property>
  </port-info>
</service-ref>
----

[[beaxy]][[GSDPG00281]][[sun-cmp-mapping]]

`sun-cmp-mapping`
~~~~~~~~~~~~~~~~~

Specifies beans mapped to a particular database schema.


[NOTE]
=======================================================================

A bean cannot be related to a bean that maps to a different database
schema, even if the beans are deployed in the same EJB JAR file.

=======================================================================


[[fvzhh]][[GSDPG00752]][[superelements-197]]

Superelements
^^^^^^^^^^^^^

link:#beaxz[`sun-cmp-mappings`] (`sun-cmp-mappings.xml`)

[[fvzjg]][[GSDPG00753]][[subelements-189]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `sun-cmp-mapping`
element.

[[GSDPG1033]][[sthref231]][[fvzhm]]


Table C-151 `sun-cmp-mapping` Subelements

[width="100%",cols="20%,13%,67%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaxc[`schema`]


 |only one |Specifies the file that contains a description of the
database schema.

a|
link:#beasy[`entity-mapping`]


 |one or more |Specifies the mapping of a bean to database columns.
|=======================================================================


[[beaxz]][[GSDPG00282]][[sun-cmp-mappings]]

`sun-cmp-mappings`
~~~~~~~~~~~~~~~~~~

Defines the GlassFish Server specific CMP mapping configuration for an
EJB JAR file. This is the root element; there can only be one
`sun-cmp-mappings` element in a `sun-cmp-mappings.xml` file. See
link:dd-files.html#beaqn[The sun-cmp-mappings.xml File].

[[fvzix]][[GSDPG00754]][[superelements-198]]

Superelements
^^^^^^^^^^^^^

none

[[fvzjj]][[GSDPG00755]][[subelements-190]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `sun-cmp-mappings`
element.

[[GSDPG1034]][[sthref232]][[fvzin]]


Table C-152 `sun-cmp-mappings` Subelements

[width="100%",cols="32%,16%,52%",options="header",]
|=====================================================================
|Element |Required |Description
a|
link:#beaxy[`sun-cmp-mapping`]


 |one or more |Specifies beans mapped to a particular database schema.
|=====================================================================


[[beayd]][[GSDPG00283]][[table-name]]

`table-name`
~~~~~~~~~~~~

Specifies the name of a database table. The table must be present in the
database schema file. See "link:../application-development-guide/container_managed-persistence.html#GSDVG00439[Automatic Database Schema
Capture]" in GlassFish Server Open Source Edition Application
Development Guide.

[[fvzis]][[GSDPG00756]][[superelements-199]]

Superelements
^^^^^^^^^^^^^

link:#beasy[`entity-mapping`], link:#beaxe[`secondary-table`]
(`sun-cmp-mappings.xml`)

[[fvzjk]][[GSDPG00757]][[subelements-191]]

Subelements
^^^^^^^^^^^

none - contains data

[[beaye]][[GSDPG00284]][[target-server]]

`target-server`
~~~~~~~~~~~~~~~

Specifies the IIOP listener for the target server. Also specifies IIOP
endpoints used for load balancing. If the GlassFish Server instance on
which the application client is deployed participates in a cluster,
GlassFish Server finds all currently active IIOP endpoints in the
cluster automatically. However, a client should have at least two
endpoints specified for bootstrapping purposes, in case one of the
endpoints has failed.

A listener or endpoint is in the form host`:`port, where the host is an
IP address or host name, and the port specifies the port number.

Not used if the deprecated `endpoints` property is defined for load
balancing. For more information, see link:#bearr[`client-container`].

[[fvzgy]][[GSDPG00758]][[superelements-200]]

Superelements
^^^^^^^^^^^^^

link:#bearr[`client-container`] (`sun-acc.xml`)

[[fvzhi]][[GSDPG00759]][[subelements-192]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `target-server`
element.

[[GSDPG1035]][[sthref233]][[fvzhg]]


Table C-153 `target-server` subelements

[width="100%",cols="23%,14%,63%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Specifies the description of the target server.

a|
link:#beaxf[`security`]


 |zero or one |Specifies the security configuration for the IIOP/SSL
communication with the target server.
|=======================================================================


[[fvzfp]][[GSDPG00760]][[attributes-42]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `target-server`
element.

[[GSDPG1036]][[sthref234]][[fvzgg]]


Table C-154 `target-server` attributes

[width="181%",cols="7%,49%,44%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the name of the server instance accessed by the
client container.

|`address` |none |Specifies the host name or IP address (resolvable by
DNS) of the server to which this client attaches.

|`port` |none a|
Specifies the naming service port number of the server to which this
client attaches.

For a new server instance, assign a port number other than 3700. You can
change the port number in the Administration Console. Click the Help
button in the Administration Console for more information.

|=======================================================================


[[beayf]][[GSDPG00285]][[tie-class]]

`tie-class`
~~~~~~~~~~~

Specifies the automatically generated name of a tie implementation class
for a port component.

[[fvzgz]][[GSDPG00761]][[superelements-201]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvzfq]][[GSDPG00762]][[subelements-193]]

Subelements
^^^^^^^^^^^

none - contains data

[[beayg]][[GSDPG00286]][[timeout]]

`timeout`
~~~~~~~~~

Specifies the link:#bearh[`cache-mapping`] specific maximum amount of
time in seconds that an entry can remain in the cache after it is
created or refreshed. If not specified, the default is the value of the
`timeout` attribute of the link:#beard[`cache`] element.

[[fvzhc]][[GSDPG00763]][[superelements-202]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvziv]][[GSDPG00764]][[subelements-194]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvzhd]][[GSDPG00765]][[attributes-43]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `timeout` element.

[[GSDPG1037]][[sthref235]][[fvzih]]


Table C-155 `timeout` Attributes

[width="181%",cols="51%,11%,38%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies the timeout input parameter, whose value is
interpreted in seconds. The field's type must be `java.lang.Long` or
`java.lang.Integer`.

|`scope` |`request.attribute` |(optional) Specifies the scope from which
the input parameter is retrieved. Allowed values are
`context.attribute`, `request.header`, `request.parameter`,
`request.cookie`, `request.attribute`, and `session.attribute`.
|=======================================================================


[[beayh]][[GSDPG00287]][[transport-config]]

`transport-config`
~~~~~~~~~~~~~~~~~~

Specifies the security transport information.

[[fvzfo]][[GSDPG00766]][[superelements-203]]

Superelements
^^^^^^^^^^^^^

link:#beato[`ior-security-config`] (`glassfish-ejb-jar.xml`)

[[fvzhv]][[GSDPG00767]][[subelements-195]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `transport-config`
element.

[[GSDPG1038]][[sthref236]][[fvziu]]


Table C-156 `transport-config` Subelements

[width="100%",cols="30%,10%,60%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beatn[`integrity`]


 |only one |Specifies if the target supports integrity-protected
messages. The values are NONE, SUPPORTED, or REQUIRED.

a|
link:#beasc[`confidentiality`]


 |only one |Specifies if the target supports privacy-protected messages.
The values are NONE, SUPPORTED, or REQUIRED.

a|
link:#beata[`establish-trust-in-target`]


 |only one |Specifies if the target is capable of authenticating to a
client. The values are NONE, SUPPORTED, or REQUIRED.

a|
link:#beasz[`establish-trust-in-client`]


 |only one |Specifies if the target is capable of authenticating a
client. The values are NONE, SUPPORTED, or REQUIRED.
|=======================================================================


[[beayi]][[GSDPG00288]][[transport-guarantee]]

`transport-guarantee`
~~~~~~~~~~~~~~~~~~~~~

Specifies that the communication between client and server is `NONE`,
`INTEGRAL`, or `CONFIDENTIAL`.

* `NONE` means the application does not require any transport
guarantees.
* `INTEGRAL` means the application requires that the data sent between
client and server be sent in such a way that it can't be changed in
transit.
* `CONFIDENTIAL` means the application requires that the data be
transmitted in a fashion that prevents other entities from observing the
contents of the transmission.

In most cases, a value of `INTEGRAL` or `CONFIDENTIAL` indicates that
the use of SSL is required.

[[fvzhb]][[GSDPG00768]][[superelements-204]]

Superelements
^^^^^^^^^^^^^

link:#beayv[`webservice-endpoint`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvzgl]][[GSDPG00769]][[subelements-196]]

Subelements
^^^^^^^^^^^

none - contains data

[[beayk]][[GSDPG00289]][[unique-id]]

`unique-id`
~~~~~~~~~~~

Contains the unique ID for the application. This value is automatically
updated each time the application is deployed or redeployed. Do not edit
this value.

[[fvzig]][[GSDPG00770]][[superelements-205]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)

[[fvzjc]][[GSDPG00771]][[subelements-197]]

Subelements
^^^^^^^^^^^

none - contains data

[[beayl]][[GSDPG00290]][[url-pattern]]

`url-pattern`
~~~~~~~~~~~~~

Specifies a servlet URL pattern for which caching is enabled. See the
Servlet 2.4 specification section SRV. 11.2 for applicable patterns.

[[fvziw]][[GSDPG00772]][[superelements-206]]

Superelements
^^^^^^^^^^^^^

link:#bearh[`cache-mapping`] (`glassfish-web.xml`)

[[fvzfw]][[GSDPG00773]][[subelements-198]]

Subelements
^^^^^^^^^^^

none - contains data

[[giyiq]][[GSDPG00291]][[user-group]]

`user-group`
~~~~~~~~~~~~

Contains the group to which the principal belongs.

[[GSDPG1039]][[sthref237]]


[[superelements-207]]
Superelements
^^^^^^^^^^^^^

link:#giyhy[`security-map`] (`glassfish-resources.xml`)

[[GSDPG1040]][[sthref238]]


[[subelements-199]]
Subelements
^^^^^^^^^^^

none - contains data

[[beaym]][[GSDPG00292]][[use-thread-pool-id]]

`use-thread-pool-id`
~~~~~~~~~~~~~~~~~~~~

Specifies the thread pool from which threads are selected for remote
invocations of this bean.

[[fvzhz]][[GSDPG00774]][[superelements-208]]

Superelements
^^^^^^^^^^^^^

link:#beass[`ejb`] (`glassfish-ejb-jar.xml`)

[[fvzhp]][[GSDPG00775]][[subelements-200]]

Subelements
^^^^^^^^^^^

none - contains data

[[beayo]][[GSDPG00293]][[value]]

`value`
~~~~~~~

Specifies the value of the entity.

[[fvzhq]][[GSDPG00776]][[superelements-209]]

Superelements
^^^^^^^^^^^^^

link:#beari[`call-property`], link:#beaxv[`stub-property`]
(`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`); link:#beavy[`property` (with
subelements)] (`glassfish-ejb-jar.xml`)

[[fvzhe]][[GSDPG00777]][[subelements-201]]

Subelements
^^^^^^^^^^^

none - contains data

[[gikqk]][[GSDPG00294]][[valve]]

`valve`
~~~~~~~

Specifies a custom valve for this web application. You can define a
valve for all the web applications on a specific virtual server. For
details, see link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`(1)].

[[giksf]][[GSDPG00778]][[superelements-210]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`)

[[gikvt]][[GSDPG00779]][[subelements-202]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `valve` element.

[[GSDPG1041]][[sthref239]][[giktu]]


Table C-157 `valve` Subelements

[width="100%",cols="25%,12%,63%",options="header",]
|==================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Specifies a text description of this element.
a|
link:#beavx[`property` (with attributes)]


 |zero or more |Specifies a property, which has a name and a value.
|==================================================================


[[gikuo]][[GSDPG00780]][[attributes-44]]

Attributes
^^^^^^^^^^

The following table describes attributes for the `valve` element.

[[GSDPG1042]][[sthref240]][[gikqw]]


Table C-158 `valve` Attributes

[width="172%",cols="9%,46%,45%",options="header",]
|=======================================================================
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the valve.

|`class-name` |none |Specifies the fully qualified class name of the
valve. The valve class must implement the org.apache.catalina.Valve
interface from Tomcat or previous GlassFish Server releases, or the
org.glassfish.web.valve.GlassFishValve interface from the current
GlassFish Server release.
|=======================================================================


[[giksd]][[GSDPG00781]][[example-13]]

Example
^^^^^^^

[source,oac_no_warn]
----
><valve name="MyValve" classname="org.glassfish.extension.Valve">
   <property name="MyProperty1" value="MyValue1" />
   <property name="MyProperty2" value="MyValue2" />
</valve> 
----

[[gbgdw]][[GSDPG00295]][[vendor]]

`vendor`
~~~~~~~~

Specifies a vendor-specific icon, splash screen, text string, or a
combination of these for Java Web Start download and launch screens. The
complete format of this element's data is as follows:

[source,oac_no_warn]
----
<vendor>icon-image-URI::splash-screen-image-URI::vendor-text</vendor>
----

The following example vendor element contains an icon, a splash screen,
and a text string:

[source,oac_no_warn]
----
<vendor>images/icon.jpg::otherDir/splash.jpg::MyCorp, Inc.</vendor>
----

The following example vendor element contains an icon and a text string:

[source,oac_no_warn]
----
<vendor>images/icon.jpg::MyCorp, Inc.</vendor>
----

The following example vendor element contains a splash screen and a text
string; note the initial double colon:

[source,oac_no_warn]
----
<vendor>::otherDir/splash.jpg::MyCorp, Inc.</vendor>
----

The following example vendor element contains only a text string:

[source,oac_no_warn]
----
<vendor>MyCorp, Inc.</vendor>
----

The default value is the text string `Application Client`.

[[gbgdu]][[GSDPG00782]][[superelements-211]]

Superelements
^^^^^^^^^^^^^

link:#gauax[`java-web-start-access`]
(`glassfish-application-client.xml`)

[[gbgcq]][[GSDPG00783]][[subelements-203]]

Subelements
^^^^^^^^^^^

none - contains data

[[gkkfd]][[GSDPG00296]][[version-identifier]]

`version-identifier`
~~~~~~~~~~~~~~~~~~~~

Contains version information for an application or module. For more
information about application versioning, see
link:overview.html#gkhhv[Module and Application Versions].

[[GSDPG1043]][[sthref241]]


[[superelements-212]]
Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`),
link:#beayb[`glassfish-web-app`] (`glassfish-web-app.xml`),
link:#beaya[`glassfish-ejb-jar`] (`glassfish-ejb-jar.xml`),
link:#beaxx[`glassfish-application-client`]
(`glassfish-application-client.xml`)

[[GSDPG1044]][[sthref242]]


[[subelements-204]]
Subelements
^^^^^^^^^^^

none - contains data

[[beayp]][[GSDPG00297]][[victim-selection-policy]]

`victim-selection-policy`
~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies how stateful session beans are selected for passivation.
Possible values are First In, First Out (`FIFO`), Least Recently Used
(`LRU`), Not Recently Used (`NRU`). The default value is `NRU`, which is
actually pseudo-LRU.


[NOTE]
======================================================

You cannot plug in your own victim selection algorithm.

======================================================


The victims are generally passivated into a backup store (typically a
file system or database). This store is cleaned during startup, and also
by a periodic background process that removes idle entries as specified
by `removal-timeout-in-seconds`. The backup store is monitored by a
background thread (or sweeper thread) to remove unwanted entries.

Applies to stateful session beans.

[[fvzhu]][[GSDPG00784]][[superelements-213]]

Superelements
^^^^^^^^^^^^^

link:#beara[`bean-cache`] (`glassfish-ejb-jar.xml`)

[[fvzfr]][[GSDPG00785]][[subelements-205]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvzgi]][[GSDPG00786]][[example-14]]

Example
^^^^^^^

[source,oac_no_warn]
----
<victim-selection-policy>LRU</victim-selection-policy>
----

If both SSL2 and SSL3 are enabled, the server tries SSL3 encryption
first. If that fails, the server tries SSL2 encryption. If both SSL2 and
SSL3 are enabled for a virtual server, the server tries SSL3 encryption
first. If that fails, the server tries SSL2 encryption.

[[beayr]][[GSDPG00298]][[web]]

`web`
~~~~~

Specifies the application's web tier configuration.

[[fvzil]][[GSDPG00787]][[superelements-214]]

Superelements
^^^^^^^^^^^^^

link:#beaxw[`glassfish-application`] (`glassfish-application.xml`)

[[fvzge]][[GSDPG00788]][[subelements-206]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `web` element.

[[GSDPG1045]][[sthref243]][[fvzfz]]


Table C-159 `web` Subelements

[width="100%",cols="24%,11%,65%",options="header",]
|============================================================
|Element |Required |Description
a|
link:#beays[`web-uri`]


 |only one |Contains the web URI for the application.
a|
link:#beasg[`context-root`]


 |only one |Contains the web context root for the web module.
|============================================================


[[beays]][[GSDPG00299]][[web-uri]]

`web-uri`
~~~~~~~~~

Contains the web URI for the application. Must match the corresponding
element in the `application.xml` file.

[[fvzhk]][[GSDPG00789]][[superelements-215]]

Superelements
^^^^^^^^^^^^^

link:#beayr[`web`] (`glassfish-application.xml`)

[[fvzik]][[GSDPG00790]][[subelements-207]]

Subelements
^^^^^^^^^^^

none - contains data

[[beayt]][[GSDPG00300]][[webservice-description]]

`webservice-description`
~~~~~~~~~~~~~~~~~~~~~~~~

Specifies a name and optional publish location for a web service.

[[fvzjd]][[GSDPG00791]][[superelements-216]]

Superelements
^^^^^^^^^^^^^

link:#beayb[`glassfish-web-app`] (`glassfish-web.xml`),
link:#beasx[`enterprise-beans`] (`glassfish-ejb-jar.xml`)

[[fvzgs]][[GSDPG00792]][[subelements-208]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the
`webservice-description` element.

[[GSDPG1046]][[sthref244]][[fvzjb]]


Table C-160 `webservice-description` subelements

[width="100%",cols="33%,11%,56%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beayu[`webservice-description-name`]


 |only one |Specifies a unique name for the web service within a web or
EJB module.

a|
link:#beayy[`wsdl-publish-location`]


 |zero or one |Specifies the URL of a directory to which a web service's
WSDL is published during deployment.
|=======================================================================


[[beayu]][[GSDPG00301]][[webservice-description-name]]

`webservice-description-name`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Specifies a unique name for the web service within a web or EJB module.

[[fvzgp]][[GSDPG00793]][[superelements-217]]

Superelements
^^^^^^^^^^^^^

link:#beayt[`webservice-description`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvzgw]][[GSDPG00794]][[subelements-209]]

Subelements
^^^^^^^^^^^

none - contains data

[[beayv]][[GSDPG00302]][[webservice-endpoint]]

`webservice-endpoint`
~~~~~~~~~~~~~~~~~~~~~

Specifies information about a web service endpoint.

[[fvzio]][[GSDPG00795]][[superelements-218]]

Superelements
^^^^^^^^^^^^^

link:#beaxm[`servlet`] (`glassfish-web.xml`), link:#beass[`ejb`]
(`glassfish-ejb-jar.xml`)

[[fvzjp]][[GSDPG00796]][[subelements-210]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `webservice-endpoint`
element.

[[GSDPG1047]][[sthref245]][[fvzjs]]


Table C-161 `webservice-endpoint` subelements

[width="100%",cols="29%,12%,59%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beavs[`port-component-name`]


 |only one |Specifies a unique name for a port component within a web or
EJB module.

a|
link:#beasw[`endpoint-address-uri`]


 |zero or one |Specifies the automatically generated endpoint address.

a|
link:#beauk[`login-config`]


 |zero or one |Specifies the authentication configuration for an EJB web
service endpoint.

a|
link:#beaux[`message-security-binding`]


 |zero or one |Specifies a custom authentication provider binding.

a|
link:#beayi[`transport-guarantee`]


 |zero or one |Specifies that the communication between client and
server is `NONE`, `INTEGRAL`, or `CONFIDENTIAL`.

a|
link:#beaxj[`service-qname`]


 |zero or one |Specifies the WSDL service element that is being
referenced.

a|
link:#beayf[`tie-class`]


 |zero or one |Specifies the automatically generated name of a tie
implementation class for a port component.

a|
link:#beaxn[`servlet-impl-class`]


 |zero or one |Specifies the automatically generated name of the
generated servlet implementation class.

a|
link:#gaubj[`debugging-enabled`]


 |zero or one |Specifies whether the debugging servlet is enabled for
this web service endpoint. Allowed values are `true` and `false` (the
default).

a|
link:#beavx[`property` (with attributes)] (`glassfish-web.xml`)

link:#beavy[`property` (with subelements)] (`glassfish-ejb-jar.xml`)

 |zero or more |Specifies a property, which has a name and a value.
|=======================================================================


[[giyht]][[GSDPG00303]][[work-security-map]]

`work-security-map`
~~~~~~~~~~~~~~~~~~~

Defines a work security map, which maps a principal associated with an
incoming work instance to a principal in the GlassFish Server's security
domain. It is possible to map multiple EIS group or user principals to
the same GlassFish Server principal.

This is different from a link:#giyhy[`security-map`], which maps the
principal received during servlet or EJB authentication to the
credentials accepted by the EIS.

[[GSDPG1048]][[sthref246]]


[[superelements-219]]
Superelements
^^^^^^^^^^^^^

link:#giyiy[`resources`] (`glassfish-resources.xml`)

[[giyih]][[GSDPG00797]][[subelements-211]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `work-security-map`
element.

[[GSDPG1049]][[sthref247]][[sthref248]]


Table C-162 `work-security-map` Subelements

[width="100%",cols="17%,12%,71%",options="header",]
|=======================================================================
|Element |Required |Description
a|
link:#beaso[`description`]


 |zero or one |Contains a text description of this element.

a|
link:#giyif[`principal-map`]


 |zero or more |Maps an EIS principal to a principal defined in the
GlassFish Server domain.

a|
link:#giygy[`group-map`]


 |zero or more |Maps an EIS group to a group defined in the GlassFish
Server domain.
|=======================================================================


[[GSDPG1050]][[sthref249]]


[[attributes-45]]
Attributes
^^^^^^^^^^

The following table describes attributes for the `work-security-map`
element.

[[GSDPG1051]][[sthref250]][[sthref251]]


Table C-163 `work-security-map` Attributes

[width="181%",cols="13%,49%,38%",options="header",]
|===================================================================
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the work security map.
|`description` |none |Specifies a text description for this element.
|===================================================================


[[beayw]][[GSDPG00304]][[wsdl-override]]

`wsdl-override`
~~~~~~~~~~~~~~~

Specifies a valid URL pointing to a final WSDL document. If not
specified, the WSDL document associated with the `service-ref` in the
standard Java EE deployment descriptor is used.

[[fvzjl]][[GSDPG00798]][[superelements-220]]

Superelements
^^^^^^^^^^^^^

link:#beaxk[`service-ref`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`, `glassfish-application-client.xml`)

[[fvzjq]][[GSDPG00799]][[subelements-212]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvzjt]][[GSDPG00800]][[example-15]]

Example
^^^^^^^

[source,oac_no_warn]
----
// available via HTTP
<wsdl-override>http://localhost:8000/myservice/myport?WSDL</wsdl-override>

// in a file
<wsdl-override>file:/home/user1/myfinalwsdl.wsdl</wsdl-override>
----

[[beayx]][[GSDPG00305]][[wsdl-port]]

`wsdl-port`
~~~~~~~~~~~

Specifies the WSDL port.

[[fvzjo]][[GSDPG00801]][[superelements-221]]

Superelements
^^^^^^^^^^^^^

link:#beavt[`port-info`] (`glassfish-web.xml`, `glassfish-ejb-jar.xml`,
`glassfish-application-client.xml`)

[[fvzjm]][[GSDPG00802]][[subelements-213]]

Subelements
^^^^^^^^^^^

The following table describes subelements for the `wsdl-port` element.

[[GSDPG1052]][[sthref252]][[fvzju]]


Table C-164 `wsdl-port` subelements

[width="100%",cols="30%,11%,59%",options="header",]
|===============================================
|Element |Required |Description
a|
link:#beavh[`namespaceURI`]


 |only one |Specifies the namespace URI.
a|
link:#beaug[`localpart`]


 |only one |Specifies the local part of a QNAME.
|===============================================


[[beayy]][[GSDPG00306]][[wsdl-publish-location]]

`wsdl-publish-location`
~~~~~~~~~~~~~~~~~~~~~~~

Specifies the URL of a directory to which a web service's WSDL is
published during deployment. Any required files are published to this
directory, preserving their location relative to the module-specific
WSDL directory (`META-INF/wsdl` or `WEB-INF/wsdl`).

[[fvzjw]][[GSDPG00803]][[superelements-222]]

Superelements
^^^^^^^^^^^^^

link:#beayt[`webservice-description`] (`glassfish-web.xml`,
`glassfish-ejb-jar.xml`)

[[fvzjr]][[GSDPG00804]][[subelements-214]]

Subelements
^^^^^^^^^^^

none - contains data

[[fvzjn]][[GSDPG00805]][[example-16]]

Example
^^^^^^^

Suppose you have an `ejb.jar` file whose `webservices.xml` file's
`wsdl-file` element contains the following reference:

[source,oac_no_warn]
----
META-INF/wsdl/a/Foo.wsdl
----

Suppose your `glassfish-ejb.jar` file contains the following element:

[source,oac_no_warn]
----
<wsdl-publish-location>file:/home/user1/publish</wsdl-publish-location>
----

The final WSDL is stored in `/home/user1/publish/a/Foo.wsdl`.


