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
`javax.jms.TopicConnectionFactory` or
`javax.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
`javax.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
`javax.jms.TopicConnectionFactory` or
`javax.jms.QueueConnectionFactory`.

|`Password` |`guest` |Specifies the password for connecting to the
Message Queue software. For JMS resources of the Type
`javax.jms.TopicConnectionFactory` or
`javax.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 JavaMail (`javax.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 JavaMail `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 JavaMail `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 JavaMail
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 JavaMail `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 JavaMail properties, see
http://javamail.kenai.com/nonav/javadocs/index.html[JavaMail API
Documentation] (`http://javamail.kenai.com/nonav/javadocs/index.html`).

[[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 JavaMail 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`.


