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].
