type=page
status=published
title=GlassFish Server Upgrade Compatibility Issues
next=upgrading-legacy-installation.html
prev=preface.html
~~~~~~

GlassFish Server Upgrade Compatibility Issues
=============================================

[[GSUPG00002]][[abmaq]]


[[glassfish-server-upgrade-compatibility-issues]]
1 GlassFish Server Upgrade Compatibility Issues
-----------------------------------------------

This section describes some compatibility issues between GlassFish
Server 7 and earlier product releases. This section also describes
some compatibility issues that affect Java applications that run on
earlier product releases with which Oracle GlassFish Server 7 is
binary-compatible. When you upgrade to GlassFish Server 7, you must
address these issues.

The following topics are addressed here:

* link:#gjwpd[Binary-Compatible Releases For GlassFish Server 7]
* link:#gkric[New Default Installation Directory]
* link:#gklhr[Changes to Group Management Service Settings]
* link:#geyyk[Application Client Interoperability]
* link:#gktad[Node Agent Support]
* link:#gkrjm[HADB and `hadbm` Command Support]
* link:#abmbc[Command Line Interface: The `asadmin` Command]
* link:#gflnv[Applications That Use Java DB]
* link:#gjizi[Applications That Use Persistence]
* link:#gjiqj[HTTP Service to Network Service Changes]
* link:#gktkt[NSS Cryptographic Token Support]

[[gjwpd]][[GSUPG00028]][[binary-compatible-releases-for-glassfish-server]]

Binary-Compatible Releases For GlassFish Server 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server Open Source Edition 7 is NOT binary-compatible with the
following earlier releases of the software:

* Sun GlassFish Enterprise Server v2.1.1 (Enterprise and Developer Profiles)
* Sun GlassFish Enterprise Server v3
* GlassFish Server Open Source Edition 3.0.1
* GlassFish Server Open Source Edition 3.1
* GlassFish Server Open Source Edition 3.1.1

Java applications that run on these releases also work on GlassFish
Server Open Source Edition 7 except for the compatibility issues that
are listed in the remainder of this chapter.


[NOTE]
====
The compatibility issues that are listed in the remainder of this
chapter do not affect Java applications that run on Sun GlassFish
Enterprise Server v3 and GlassFish Server 3.0.1. The differences between
GlassFish Server 7 and the Enterprise Server v3 releases do not affect
applications and data.
====


[[gkric]][[GSUPG00029]][[new-default-installation-directory]]

New Default Installation Directory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The default GlassFish Server 7 installation directories are as follows:

Solaris, Linux, and Mac OS X systems::
[source]
----
user-home-directory/glassfish7
----
Windows systems::
[source]
----
SystemDrive\glassfish7
----

In GlassFish Server 3.0.1 and Enterprise Server v3, the default
installation root directory was `glassfishv3`.

[[gklhr]][[GSUPG00030]][[changes-to-group-management-service-settings]]

Changes to Group Management Service Settings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The functionality of the Group Management Service (GMS) has not changed
since Sun GlassFish Enterprise Server v2.1.1, but the names of GMS
settings have been changed in the Administration Console to make them
more understandable. These changes are made automatically during the
upgrade process.

Changes to settings on the Edit Group Management Service page in the
Administration Console are summarized in the following table.

[[sthref3]][[gklho]]

Table 1-1 GMS Administration Console Settings Changes from 2.1.1 to 4.0

[width="100%",cols="<50%,<50%",options="header",]
|===
|Old Setting Name |New Setting Name
|Protocol Maximum Trial |Maximum Missed Heartbeats
|Protocol Timeout |Heartbeat Frequency
|Ping Timeout |Group Discovery Timeout
|Verified Timeout |Failure Verification Wait Time
|===


The Merge Protocol settings from Sun GlassFish Enterprise Server v2.1.1
are not supported and have been removed.

[[geyyk]][[GSUPG00031]][[application-client-interoperability]]

Application Client Interoperability
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The Jakarta EE 6 platform specification imposes stricter requirements than
Jakarta EE 5 did on which JAR files can be visible to various modules
within an EAR file. In particular, application clients must not have
access to EJB JAR files or other JAR files in the EAR file unless they
use a `Class-Path` header in the manifest file, or unless references use
the standard Java SE mechanisms (extensions, for example), or use the
Jakarta EE `library-directory` mechanism. Deployed Jakarta EE 5 applications
that are upgraded to GlassFish Server 7 will have the `compatibility`
property set to `v2` and will run without change on GlassFish Server 7. You may, however, want to consider modifying the applications to
conform to Jakarta EE 6 requirements.

If your upgrade includes a deployed application with an application
client, you will need to retrieve the client stubs using GlassFish
Server 7 in order to run the client. Use the
`asadmin get-client-stubs` command.

If you try to run the application client before retrieving the client
stubs, you will see the following error message:

[source]
----
Invalid or corrupt jarfile jar-file-name
----

If you commonly distribute application clients to remote systems from
which users will run them, you must not only retrieve the client stubs,
but you must also run the `package-appclient` utility for GlassFish
Server 7 to upgrade the GlassFish Server system files. This utility
creates a JAR file, which you can then expand on the remote systems.

Application clients use EJBs, web services, or other enterprise
components that are in the application server (on the server side). The
application client and the application server must use the same version
and implementation of the RMI-IIOP protocol. GlassFish Server 7 does
not support communication between different versions of the protocol
implementation. You cannot run application clients with one version of
the application server runtime with a server that has a different
version. Most often, this would happen if you upgraded the server but
had not upgraded all the application client installations. If you run
the `package-appclient` utility, this issue will not arise.

You can use the Java Web Start support to distribute and launch the
application client. If the runtime on the server has changed since the
end-user last used the application client, Java Web Start automatically
retrieves the updated runtime. Java Web Start enables you to keep the
clients and servers synchronized and using the same runtime.

[[gktad]][[GSUPG00032]][[node-agent-support]]

Node Agent Support
~~~~~~~~~~~~~~~~~~

GlassFish Server 7 does not support node agents. When updating from
installations of earlier product versions in which node agents were
configured, the cluster definitions will be migrated, but the clustered
instances themselves must be manually re-created. See
link:upgrading-legacy-installation.html#gfybw[Upgrading Clusters and Node
Agent Configurations] for more information.

[[gkrjm]][[GSUPG00033]][[hadb-and-hadbm-command-support]]

HADB and `hadbm` Command Support
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server 7 does not support HADB or the `hadbm` management command.

Instead of HADB, GlassFish Server 7 supports high availability
clustering by means of in-memory session state replication and
ActiveCache for GlassFish.
See "link:../ha-administration-guide/overview.html#GSHAG00002[
High Availability in GlassFish Server]" in
GlassFish Server Open Source Edition High Availability Administration Guide
for more information.

[[abmbc]][[GSUPG00034]][[command-line-interface-the-asadmin-command]]

Command Line Interface: The `asadmin` Command
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following sections describe changes to the command line utility `asadmin`:

* link:#abmbd[Deprecated `asadmin` Subcommands]
* link:#abmbf[Deprecated, Unsupported, and Obsolete Options]

For more information about `asadmin` and its subcommands, see the
link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual].

[[abmbd]][[GSUPG00053]][[deprecated-asadmin-subcommands]]

Deprecated `asadmin` Subcommands
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In GlassFish Server 7, it is recommended that utility options of the
`asadmin` command precede the subcommand. Utility options are options
that control the behavior of the `asadmin` utility, as distinguished
from subcommand options. Use of the following options after the
subcommand is deprecated.

* `--host`
* `--port`
* `--user`
* `--passwordfile`
* `--terse`
* `--secure`
* `--echo`
* `--interactive`

[[abmbf]][[GSUPG00054]][[deprecated-unsupported-and-obsolete-options]]

Deprecated, Unsupported, and Obsolete Options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Options in link:#gaeki[Table 1-2] are deprecated or no longer supported,
or are obsolete and are ignored.

[[sthref4]][[gaeki]]

Table 1-2 Deprecated, Unsupported, and Obsolete Options for `asadmin`
and Subcommands

[width="100%",cols="<33%,<67%",options="header",]
|===
|Option |Affected Subcommands

|`--acceptlang`
|Unsupported for the `create-virtual-server` subcommand.

|`--acls`
|Unsupported for the `create-virtual-server` subcommand.

|`--adminpassword`
|Unsupported for all relevant subcommands. Use `--passwordfile` instead.

|`--autoapplyenabled`
|Obsolete for the `create-http-lb` subcommand.

|`--autohadb`
|Obsolete for the `create-cluster` subcommand.

|`--autohadboverride`
|Obsolete for the `start-cluster` subcommand and the `stop-cluster` subcommand

|`--blockingenabled`
|Unsupported for the `create-http-listener` subcommand.

|`--configfile`
|Unsupported for the `create-virtual-server` subcommand.

|`--defaultobj`
|Unsupported for the `create-virtual-server` subcommand.

|`--defaultvs`
|Deprecated for the `create-http-listener` subcommand. Use `--default-virtual-server` instead.

|`--description`
|Obsolete for the `restore-domain` subcommand.

|`--devicesize`
|Obsolete for the `create-cluster` subcommand.

|`--haadminpassword`
|Obsolete for the `create-cluster` subcommand.

|`--haadminpasswordfile`
|Obsolete for the `create-cluster` subcommand.

|`--haagentport`
|Obsolete for the `create-cluster` subcommand.

|`--haproperty`
|Obsolete for the `create-cluster` subcommand.

|`--heartbeataddress`
|Deprecated for the `create-cluster` subcommand. Use `--multicastaddress` instead.

|`--heartbeatport`
|Deprecated for the `create-cluster` subcommand. Use `--multicastport` instead.

|`--hosts`
|Obsolete for the `create-cluster` subcommand.

|`--ignoreDescriptorItem`
|Replaced by the all lowercase option `--ignoredescriptoritem`
in the `set-web-context-param` subcommand and the `set-web-env-entry` subcommand.

|`--mime`
|Unsupported for the `create-virtual-server` subcommand.

|`--password`
|Unsupported for all remote subcommands. Use `--passwordfile` instead.

|`--path`
|Unsupported for the `create-domain` subcommand. Use `--domaindir` instead.

|`--portbase`
|Obsolete only for the `create-cluster` subcommand.
This option is still valid in other subcommands such as `create-domain`,
`create-instance`, and `create-local-instance`.

|`--resourcetype`
|Unsupported for all relevant subcommands. Use `--restype` instead.

|`--retrievefile`
|Obsolete for the `export-http-lb-config` subcommand.

|`--setenv`
|Obsolete for the `start-instance` subcommand.

|`--target`
a|Obsolete only for the following subcommands:

* `create-connector-connection-pool`
* `create-resource-adapter-config`
* `delete-connector-connection-pool`
* `delete-connector-security-map`
* `delete-jdbc-connection-pool`
* `delete-resource-ref`

Replaced by an operand in the `list-custom-resources` subcommand and the
`list-jndi-entries` subcommand.
|===


[[gflnv]][[GSUPG00035]][[applications-that-use-java-db]]

Applications That Use Java DB
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The directory location of Java DB in GlassFish Server 7 has changed
from its location in previous installations. Suppose that you have
deployed applications that use Java DB databases in your previous server
installation, and you upgrade your existing installation to GlassFish
Server 7. If you run the `asadmin start-database` command and
successfully start Java DB, you could run into problems while trying to
run applications that were deployed on your previous server
installation.

To solve this problem, you can copy the `databases` directory from your
previous installation to as-install`/databases`. Make sure the database
is not running when you do this.

Alternatively, you can perform these steps:

1. Use the `asadmin start-database` command with the `--dbhome` option
pointing to the `databases` directory in the older version of Java DB.
For example:
+
[source]
----
asadmin start-database --dbhome c:\glassfish\databases
----
2. After upgrade, start GlassFish Server 7.

[[gjizi]][[GSUPG00036]][[applications-that-use-persistence]]

Applications That Use Persistence
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server 7 and 3.0.1, and Sun GlassFish Enterprise Server v3
use the persistence provider EclipseLink, while earlier versions used
TopLink Essentials.

An application that uses the container to create an `EntityManager` or
`EntityManagerFactory` and that used Toplink Essentials as its provider
will work in GlassFish Server 7. The container creates an
`EntityManager` if the application uses the `@PersistenceContext`
annotation to inject an `EntityManager`, as in the following example:

[source,java]
----
@PersistenceContext
EntityManager em;
----

The container creates an `EntityManagerFactory` if the application uses
the `@PersistenceUnit` annotation to inject an `EntityManagerFactory`,
as in the following example:

[source,java]
----
@PersistenceUnit
EntityManagerFactory emf;

EntityManager em = emf.createEntityManager();
----

When the application is loaded, GlassFish Server 7 will translate the
provider to EclipseLink and will also translate `toplink.*` properties
in the `persistence.xml` to corresponding EclipseLink properties. (The
actual `persistence.xml` file remains unchanged.)

Under certain circumstances, however, you may have to modify the
`persistence.xml` file or your code:

* If your application uses Java SE code to create the
`EntityManagerFactory`, you will need to change your `persistence.xml`
file for both the `provider` element and for any `toplink.*` properties
to use the EclipseLink equivalents. An application uses Java SE code if
it uses the `javax.persistence.Persistence` class to create the
`EntityManagerFactory`, as in the following example:
+
[source,java]
----
EntityManagerFactory emf =
    javax.persistence.Persistence.createEntityManagerFactory("Order");
EntityManager em = emf.createEntityManager();
----
In this case, change the `provider` element to specify the following:
+
[source,xml]
----
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
----
* If the application itself contains any TopLink Essentials-specific
code and therefore contains casts to `oracle.toplink.\*`, you must change
the code to cast to `org.eclipse.persistence.*`. You can use the package
renamer tool described on the
http://wiki.eclipse.org/EclipseLink/Examples/MigratingFromOracleTopLink#Rename_Packages[
Eclipse wiki]
to do this. This tool is not provided with GlassFish Server 7,
however, so you must obtain it from the EclipseLink project download site.

[[gjiqj]][[GSUPG00037]][[http-service-to-network-service-changes]]

HTTP Service to Network Service Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In GlassFish Server 7, most HTTP Service settings are defined in the
Network Service configuration that was introduced in Sun GlassFish
Enterprise Server v3.

The changes are described in the following sections.

* link:#gipsa[Changes to Dotted Names]
* link:#giprg[Changes to `asadmin` Subcommands]
* link:#gipfo[Remapping of HTTP Service Attributes and Properties]
* link:#gipcg[New Network Service Elements and Attributes]

[[gipsa]][[GSUPG00055]][[changes-to-dotted-names]]

Changes to Dotted Names
^^^^^^^^^^^^^^^^^^^^^^^

The dotted name hierarchy for the HTTP Service configuration in
GlassFish Server 7 is shown below. Elements that are no longer
supported are `request-processing`, `keep-alive`, `connection-pool`,
`http-protocol`, `http-file-cache`, and `http-listener`. During the
upgrade process, these discontinued elements are remapped to the new
configuration automatically and then deleted.

[source]
----
config
    http-service
        access-log
        request-processing
        keep-alive
        connection-pool
        http-protocol
        http-file-cache
        http-listener
            ssl
            property
        virtual-server
            http-access-log
            property
        property
    thread-pools
        thread-pool
----

The dotted name hierarchy for the GlassFish Server 7 Network Service
and HTTP Service configurations is shown below. The `network-config`
element and all its children are new except for `ssl`.

[source]
----
config
    network-config
        transports
            selection-key-handler
            transport
        protocols
            protocol
                http
                    file-cache
                port-unification
                    protocol-finder
                protocol-chain-instance-handler
                    protocol-chain
                protocol-filter
                ssl
        network-listeners
            network-listener
    http-service
        access-log
        virtual-server
            http-access-log
            property
        property
    thread-pools
        thread-pool
----

The following example compares the commands for setting a listener port
for Sun GlassFish Enterprise Server v3 and GlassFish Server 7. Note
that the configuration for Enterprise Server v3 also applies to all
earlier Enterprise Server 2.x releases.

* Command for Sun GlassFish Enterprise Server v3 and earlier:
+
[source]
----
asadmin set server-config.http-service.http-listener.http-1.listenerport=4321
----
* Command for GlassFish Server 7:
+
[source]
----
asadmin set server-config.network-config.network-listeners.network-\
listener.http-1.listenerport=4321
----

[[giprg]][[GSUPG00056]][[changes-to-asadmin-subcommands]]

Changes to `asadmin` Subcommands
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

To accommodate the move of HTTP Service into the new Network Service
configuration, link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] subcommands are changed as
follows:

* The link:../reference-manual/create-ssl.html#GSRFM00058[`create-ssl`] subcommand has a new `--type`
parameter value, `network-listener`.
* The link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`] SUBcommand has a new
parameter, `--networklisteners`.
* The link:../reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`] subcommand adds a
`network-listener` element to the domain configuration. The syntax and
options of this commands are unchanged.

[[gipfo]][[GSUPG00057]][[remapping-of-http-service-attributes-and-properties]]

Remapping of HTTP Service Attributes and Properties
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The following tables describe how attributes and properties in the HTTP
Service configuration for GlassFish Server 7 are remapped to
attributes in the Network Service configuration for older product
releases. If you use a configuration from a Sun GlassFish Enterprise
Server v2 or v3 release, this remapping happens automatically and then
discontinued elements are deleted.

[[sthref5]][[gipfy]]

Table 1-3 `com.sun.grizzly` Property Remapping

[width="100%",cols="<33%,<26%,<41%",options="header",]
|===
|`com.sun.grizzly` Property |New Owning Element |New Attribute Name
|`selector.timeout` |`transport` |`selector-poll-timeout-millis`
|`displayConfiguration` |`transport` |`display-configuration`
|`enableSnoop` |`transport` |`snoop-enabled`
|`readTimeout` |`transport` |`read-timeout-millis`
|`writeTimeout` |`transport` |`write-timeout-millis`
|===


[[sthref6]][[gipfn]]

Table 1-4 `connection-pool` Attribute Remapping

[width="100%",cols="<41%,<19%,<40%",options="header",]
|===
|`connection-pool` Attribute |New Owning Element |New Attribute Name
|`queue-size-in-bytes` |`thread-pool` |`max-queue-size`

|`max-pending-count` |`transport` |`max-connections-count`

|`receive-buffer-size-in-` `bytes` |`http` |`request-body-buffer-size-`
`bytes`

|`send-buffer-size-in-bytes` |`http` |`send-buffer-size-bytes`
|===


[[sthref7]][[gipcv]]

Table 1-5 `http-file-cache` Attribute Remapping

[width="100%",cols="<50%,<17%,<33%",options="header",]
|===
|`http-file-cache` Attribute |New Owning Element |New Attribute Name
|`file-caching-enabled` |`file-cache` |`enabled`
|`max-age-in-seconds` |`file-cache` |`max-age-seconds`
|`medium-file-space-in-bytes` |`file-cache` |`max-cache-size-bytes`
|`max-files-count` |`file-cache` |`max-files-count`
|`globally-enabled` |none |not supported
|`medium-file-size-limit-in-bytes` |none |not supported
|`small-file-size-limit-in-bytes` |none |not supported
|`small-file-space-in-bytes` |none |not supported
|`file-transmission-enabled` |none |not supported
|`hash-init-size` |none |not supported
|===


[[sthref8]][[gipev]]

Table 1-6 `http-listener` Attribute Remapping

[width="100%",cols="<37%,<27%,<36%",options="header",]
|===
|`http-listener` Attribute |New Owning Element |New Attribute Name
|`id` |`network-listener` |`name`
|`address` |`network-listener` |`address`
|`port` |`network-listener` |`port`
|`enabled` |`network-listener` |`enabled`
|`acceptor-threads` |`transport` |`acceptor-threads`
|`security-enabled` |`protocol` |`security-enabled`
|`default-virtual-server` |`http` |`default-virtual-server`
|`server-name` |`http` |`server-name`
|`redirect-port` |`http` |`redirect-port`
|`xpowered-by` |`http` |`xpowered-by`
|`external-port` |none |not supported
|`family` |none |not supported
|`blocking-enabled` |none |not supported
|===


[[sthref9]][[gipdo]]

Table 1-7 `http-listener` Property Remapping

[width="100%",cols="<43%,<15%,<42%",options="header",]
|===
|`http-listener` Property |New Owning Element |New Attribute Name
|`maxKeepAliveRequests` |`http` |`max-connections`

|`authPassthroughEnabled` |`http` |`auth-pass-through-enabled`

|`compression` |`http` |`compression`

|`compressableMimeType` |`http` |`compressable-mime-type`

|`noCompressionUserAgents` |`http` |`no-compression-user-agents`

|`compressionMinSize` |`http` |`compression-min-size-bytes`

|`restrictedUserAgents` |`http` |`restricted-user-agents`

|`cometSupport` |`http` |`comet-support-enabled`

|`connectionUploadTimeout` |`http` |`connection-upload-timeout-`
`millis`

|`disableUploadTimeout` |`http` |`upload-timeout-enabled`

|`chunkingDisabled` |`http` |`chunking-enabled`

|`uriEncoding` |`http` |`uri-encoding`

|`traceEnabled` |`http` |`trace-enabled`

|`rcmSupport` |`http` |`rcm-support-enabled`

|`jkEnabled` |`network-` `listener` |`jk-enabled`

|`crlFile` |`ssl` |`crl-file`

|`trustAlgorithm` |`ssl` |`trust-algorithm`

|`trustMaxCertLength` |`ssl` |`trust-max-cert-length-bytes`

|`tcpNoDelay` |`transport` |`tcp-no-delay`

|`bufferSize` |`transport` |`buffer-size-bytes`

|`use-nio-direct-bytebuffer` |`transport` |`byte-buffer-type`

|`proxyHandler` |none |not supported

|`proxiedProtocols` |none |not supported

|`recycle-objects` |none |not supported

|`reader-threads` |none |not supported

|`acceptor-queue-length` |none |not supported

|`reader-queue-length` |none |not supported

|`connectionTimeout` |none |not supported

|`monitoring-cache-enabled` |none |not supported

|`monitoring-cache-refresh-in-` `millis` |none |not supported

|`ssl-cache-entries` |none |not supported

|`ssl3-session-timeout` |none |not supported

|`ssl-session-timeout` |none |not supported
|===


[[sthref10]][[gipel]]

Table 1-8 `http-protocol` Attribute Remapping

[width="100%",cols="<34%,<33%,<33%",options="header",]
|===
|`http-protocol` Attribute |New Owning Element |New Attribute Name
|`version` |`http` |`version`
|`forced-response-type` |`http` |`forced-response-type`
|`default-response-type` |`http` |`default-response-type`
|`dns-lookup-enabled` |none |not supported
|`ssl-enabled` |none |not supported
|===


[[sthref11]][[gipfa]]

Table 1-9 `http-service` Property Remapping

[width="100%",cols="<34%,<33%,<33%",options="header",]
|===
|`http-service` Property |New Owning Element |New Attribute or Property
Name
|`accessLoggingEnabled` |`http-service`, `virtual-server`
|`access-logging-enabled` attribute

|`ssl-cache-entries` |`http-service` |unchanged property

|`ssl3-session-timeout` |`http-service` |unchanged property

|`ssl-session-timeout` |`http-service` |unchanged property

|`proxyHandler` |`http-service` |unchanged property

|`connectionTimeout` |`http-service` |unchanged property

|all other properties |none |not supported
|===


[[sthref12]][[gipea]]

Table 1-10 `keep-alive` Attribute Remapping

[width="100%",cols="<34%,<33%,<33%",options="header",]
|===
|`keep-alive` Attribute |New Owning Element |New Attribute Name
|`max-connections` |`http` |`max-connections`
|`timeout-in-seconds` |`http` |`timeout-seconds`
|`thread-count` |none |not supported
|===


[[sthref13]][[gipdh]]

Table 1-11 `request-processing` Attribute Remapping

[width="100%",cols="<43%,<18%,<39%",options="header",]
|===
|`request-processing` Attribute |New Owning Element |New Attribute Name
|`thread-count` |`thread-pool` |`max-thread-pool-size`
|`initial-thread-count` |`thread-pool` |`min-thread-pool-size`
|`header-buffer-length-in-bytes` |`http` |`header-buffer-length-bytes`
|`request-timeout-in-seconds` |`http` |`request-timeout-seconds`
|`thread-increment` |none |not supported
|===


[[sthref14]][[gipdv]]

Table 1-12 `ssl` Attribute Changes

[width="100%",cols="<34%,<22%,<44%",options="header",]
|===
|Previous Attribute or Property |Previous Owning Element |New `ssl`
Attribute
|none |none |`key-store`

|none |none |`trust-store`

|`crlFile` property |`http-listener` |`crl-file`

|`trustAlgorithm` property |`http-listener` |`trust-algorithm`

|`trustMaxCertLength` property |`http-listener`
|`trust-max-cert-length-bytes`

|all other `ssl` attributes |`ssl` |unchanged
|===


[[sthref15]][[gipcj]]

Table 1-13 `thread-pool` Attribute Changes

[width="100%",cols="<44%,<17%,<39%",options="header",]
|===
|Previous Attribute |Previous Owning Element |New `thread-pool`
Attribute
|none |none |`classname`

|none |none |`max-queue-size`

|`thread-pool-id` |`thread-pool` |`name`

|`idle-thread-timeout-in-seconds` |`thread-pool`
|`idle-thread-timeout-seconds`

|`num-work-queues` |`thread-pool` |not supported

|all other `thread-pool` attributes |`thread-pool` |unchanged
|===


[[sthref16]][[gipep]]

Table 1-14 `virtual-server` Attribute Changes

[width="100%",cols="<39%,<24%,<37%",options="header",]
|===
|Previous Attribute or Property |Previous Owning Element |New
`virtual-server` Attribute
|`http-listeners` attribute |`virtual-server` |`network-listeners`

|`accessLoggingEnabled` property |`http-service`
|`access-logging-enabled`

|`sso-enabled` property |`virtual-server` |`sso-enabled`

|`ssoCookieSecure` property |`virtual-server` |`sso-cookie-secure`

|all other `virtual-server` attributes |`virtual-server` |unchanged

|all other `virtual-server` properties |`virtual-server` |unchanged,
still properties
|===


[[gipcg]][[GSUPG00058]][[new-network-service-elements-and-attributes]]

New Network Service Elements and Attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The following tables describe the Network Service elements and
attributes that were introduced in Sun GlassFish Enterprise Server v3.
For attributes and properties remapped from discontinued elements to new
elements, see link:#gipfo[Remapping of HTTP Service Attributes and
Properties].

The new `file-cache` element has no new attributes. All of its
attributes are remapped from the `http-file-cache` element. For details,
see link:#gipcv[Table 1-5].

[[sthref17]][[gipds]]

Table 1-15 New `http` Attributes

[width="100%",cols="<28%,<32%,<40%",options="header",]
|===
|Attribute |Default |Description
|`adapter` |`com.sun.grizzly.tcp. StaticResourcesAdapter` |(Optional)
Specifies the class name of the static resources adapter.

|`max-post-size-bytes` |`2097152` |(Optional) Specifies the maximum size
of `POST` actions.
|===


For remapped `http` attributes, see link:#gipfn[Table 1-4],
link:#gipev[Table 1-6], link:#gipdo[Table 1-7], link:#gipel[Table 1-8],
link:#gipea[Table 1-10], and link:#gipdh[Table 1-11].

[[sthref18]][[gipey]]

Table 1-16 New `network-listener` Attributes

[width="100%",cols="<18%,<11%,<71%",options="header",]
|===
|Attribute |Default |Description
|`protocol` |none |Specifies the `name` of the `protocol` associated
with this `network-listener`. Although this attribute is required, a
`protocol` is automatically created with the same `name` as the
`network-listener` when you use `asadmin create-http-listener` to create
a `network-listener`.

|`thread-pool` |none |(Optional) Specifies the `name` of the
`thread-pool` associated with this `network-listener`.

|`transport` |none |Specifies the `name` of the `transport` associated
with this `network-listener`. Although this attribute is required, the
default `transport` is used when you use `asadmin create-http-listener`
to create a `network-listener`.
|===


For remapped `network-listener` attributes, see link:#gipev[Table 1-6].

[[sthref19]][[gipfg]]

Table 1-17 New `port-unification` Attributes

[width="100%",cols="<19%,<16%,<65%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `port-unification`.

|`classname` |none |Specifies the class name of the `port-unification`
implementation.
|===


[[sthref20]][[gipdj]]

Table 1-18 New `protocol` Attributes

[width="100%",cols="<18%,<17%,<65%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `protocol`.
|===


For remapped `protocol` attributes, see link:#gipev[Table 1-6].

[[sthref21]][[gipcr]]

Table 1-19 New `protocol-chain` Attributes

[width="100%",cols="<19%,<17%,<64%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `protocol-chain`.

|`classname` |none |Specifies the class name of the `protocol-chain`
implementation.

|`type` |`STATELESS` |Specifies the type of protocol chain.
|===


[[sthref22]][[gipfq]]

Table 1-20 New `protocol-chain-instance-handler` Attributes

[width="100%",cols="<19%,<17%,<64%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the
`protocol-chain-instance-handler`.

|`classname` |none |Specifies the class name of the
`protocol-chain-instance-handler` implementation.
|===


[[sthref23]][[gipeq]]

Table 1-21 New `protocol-filter` Attributes

[width="100%",cols="<19%,<17%,<64%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `protocol-filter`.

|`classname` |none |Specifies the class name of the `protocol-filter`
implementation.
|===


[[sthref24]][[gipfd]]

Table 1-22 New `protocol-finder` Attributes

[width="100%",cols="<19%,<17%,<64%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `protocol-finder`.

|`classname` |none |Specifies the class name of the `protocol-finder`
implementation.

|`protocol` |none |Specifies the `name` of the `protocol` associated
with this `protocol-finder`.
|===


[[sthref25]][[gipft]]

Table 1-23 New `selection-key-handler` Attributes

[width="100%",cols="<19%,<16%,<65%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `selection-key-handler`.

|`classname` |none |Specifies the class name of the
`selection-key-handler` implementation.
|===


[[sthref26]][[gipfi]]

Table 1-24 New `ssl` Attributes

[width="100%",cols="<19%,<17%,<64%",options="header",]
|===
|Attribute |Default |Description
|`key-store` |none |(Optional) Specifies a key store.
|`trust-store` |none |(Optional) Specifies a trust store.
|===


For remapped `ssl` attributes, see link:#gipdv[Table 1-12].

[[sthref27]][[gipcc]]

Table 1-25 New `thread-pool` Attributes

[width="100%",cols="<21%,<32%,<47%",options="header",]
|===
|Attribute |Default |Description
|`classname` |`com.sun.grizzly.http.StatsThreadPool` |(Optional)
Specifies the class name of the `thread-pool` implementation.

|`max-queue-size` |`-1` |(Optional) Specifies the maximum number of
messages that can be queued until threads are available to process them.
A value of `-1` specifies no limit.
|===


For remapped `thread-pool` attributes, see link:#gipfn[Table 1-4],
link:#gipdh[Table 1-11], and link:#gipcj[Table 1-13].

[[sthref28]][[gipem]]

Table 1-26 New `transport` Attributes

[width="100%",cols="<35%,<27%,<38%",options="header",]
|===
|Attribute |Default |Description
|`name` |none |Specifies a unique name for the `transport`.

|`classname` |`com.sun.grizzly. TCPSelectorHandler` |(Optional)
Specifies the class name of the `transport` implementation.

|`selection-key-handler` |none |(Optional) Specifies the `name` of the
`selection-key-handler` associated with this `transport`.

|`idle-key-timeout-seconds` |`30` |(Optional) Specifies the idle key
timeout.
|===


For remapped `transport` attributes, see link:#gipfy[Table 1-3],
link:#gipfn[Table 1-4], link:#gipev[Table 1-6], and link:#gipdo[Table
1-7].

[[gktkt]][[GSUPG00038]][[nss-cryptographic-token-support]]

NSS Cryptographic Token Support
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server 7 does not support Network Security Services (NSS)
cryptographic tokens. When upgrading to GlassFish Server 7 from
Enterprise Server v2.x, additional manual configuration steps must be
performed. These steps are explained later in this guide, in
link:upgrading-legacy-installation.html#gktnh[Upgrading Installations
That Use NSS Cryptographic Tokens].
