type=page
status=published
title=Eclipse GlassFish Server 6.1 Release Notes
prev=preface.html
~~~~~~
Eclipse GlassFish Server 6.1 Release Notes
==========================================

[[GSRLN00001]][[abppa]]


[[glassfish-server-open-source-edition-6.1-release-notes]]
1 Eclipse GlassFish Server 6.1 Release Notes
--------------------------------------------

GlassFish Server provides a lightweight, modular server for the
development of Java Platform Enterprise Edition (Java EE) 8
applications. It is the Reference Implementation for Java EE. It
delivers a highly productive platform for developing with the latest
Java EE technologies.

For any issue or information on Eclipse GlassFish Server,
see the https://javaee.github.io/glassfish/[GlassFish Server Community]
(`https://javaee.github.io/glassfish/`).

These Release Notes provide late-breaking information about GlassFish
Server 5.1 software and documentation. These Release Notes include
summaries of supported hardware, operating environments, and JDK and
JDBC/RDBMS requirements. Also included are a summary of new product
features in the 5.1 release, and descriptions and workarounds for known
issues and limitations.

Refer to this document prior to installing, configuring, or using
GlassFish Server 5.1 software. Consult this document periodically to
view the most up-to-date product information.

* link:#ghmvk["Revision History"]
* link:#glcmf["What's New in the GlassFish Server 5.1 Release?"]
* link:#abpaj["Hardware and Software Requirements"]
* link:#glcmm["Known Issues in GlassFish Server 5.1"]
* link:#ggqok["Restrictions and Deprecated Functionality"]
* link:#BABDACBE["Documentation Errata"]
* link:#giraq["Features Available Only in the Full Platform"]
* link:#gipkz["Java EE Standards Support"]
* link:#ghmtl["Java EE SDK"]
* link:#abpha["How to Report Problems and Provide Feedback"]
* link:#abphc["Additional Resources"]

[[ghmvk]][[GSRLN00128]][[revision-history]]

Revision History
~~~~~~~~~~~~~~~~

This section lists the revision history for these Release Notes.

[[sthref2]][[gabzd]]

Table 1-1 Revision History

[width="100%",cols="16%,84%",options="header",]
|=========================================================
|Date |Description of Changes
|September 2017 |Eclipse GlassFish Server 5.1.
|=========================================================


[[glcmf]][[GSRLN00129]][[whats-new-in-the-glassfish-server-5.1-release]]

What's New in the GlassFish Server 5.1 Release?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish is the Reference Implementation for Java EE. Java EE 8
introduces the JSON Binding API (JSON-B) for mapping between JSON text
and Java objects, building on the JSON Processing API (JSON-P). Servlet
has been enhanced with the addition of support for the new HTTP/2
protocol. JAX-RS adds support for server-sent events and, building on
concurrency facilities added in Java SE 8, a reactive client API. The
new Java EE Security API provides enhanced support for authentication
and authorization in web modules, and also introduces APIs for access to
identity stores. The Bean Validation facility is updated to reflect
enhancements made in Java SE 8 and to extend the range of validated
objects.

GlassFish Server 5.1 includes the following new and updated Java EE
standards.

New Features

* Java EE Security API 1.0
* Java API for JSON Binding (JSON-B) 1.0

Updated

* Java API for JSON Processing (JSON-P) 1.1
* Java API for WebSocket 1.1
* Java API for RESTful Web Services (JAX-RS) 2.1
* Contexts and Dependency Injection for Java EE (CDI) 2.0
* Java Persistence API (JPA) 2.2
* Common annotations 1.3
* JavaServer Faces (JSF) 2.3
* Java Servlet 5.1
* Bean Validation (BV) 2.0
* Interceptors 1.2
* JavaMail 1.6

For a complete list of the Java EE technologies included in GlassFish
Server 5.1, see link:#gipkz[Java EE Standards Support].


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

The main thrust of the Eclipse GlassFish Server 5.1 release
is to provide an application server for developers to explore and begin
exploiting the new and updated technologies in the Java EE 8 platform.
Thus, the following features of GlassFish Server were not a focus of
this release:

* Clusters and centralized management of standalone instances
* High availability features
* Upgrade
* Embedded Server

These features are included in the release, but they may not function
properly with some of the new features added in support of the Java EE 8
platform.

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


[[abpaj]][[GSRLN00131]][[hardware-and-software-requirements]]

Hardware and Software Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This section lists the requirements that must be met before installing
Eclipse GlassFish Server Release 5.1 software.

The following topics are addressed here:

* link:#abpak[Required JDK Versions]
* link:#ggppy[Required Disk Space]
* link:#ggpoq[Required Free Ports]
* link:#gkxlg[Message Queue Broker Requirements]
* link:#gfgps[Paths and Environment Settings for the JDK Software]

[[abpak]][[GSRLN00246]][[required-jdk-versions]]

Required JDK Versions
^^^^^^^^^^^^^^^^^^^^^

Eclipse GlassFish Server Release 5.1 requires Oracle JDK 8
Update 144 or later.

Also be sure to see link:#gfgps[Paths and Environment Settings for the
JDK Software] for important JDK configuration instructions.


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

It is recommended that any machine that is hosting a GlassFish Server
DAS or server instance have a minimum of 1 GB RAM.

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


[[ggppy]][[GSRLN00248]][[required-disk-space]]

Required Disk Space
^^^^^^^^^^^^^^^^^^^

The download sizes for GlassFish Server 5.1 vary depending on the
package you choose. The following are the approximate sizes of the ZIP
packages for the Full and Web profiles:

* Full `*.zip`: 114 MB (136 MB unzipped)
* Web `*.zip`: 64.9 MB (82.9 MB unzipped)

The installation sizes will vary depending on your configuration, but
the approximate amount of disk space used by GlassFish Server 5.1 is as
follows:

* Full: 138 MB
* Web: 84.4 MB

[[ggpoq]][[GSRLN00249]][[required-free-ports]]

Required Free Ports
^^^^^^^^^^^^^^^^^^^

You must have sixteen unused ports available for the ports GlassFish
Server uses. The installation program automatically detects ports that
are in use and suggests currently unused ports for the default settings.
The initial default port assignments are listed in the following table.
If these default port numbers are in use, the installation program
assigns a randomly selected port number from the dynamic port range. The
selected port number might not be the next available port number.

[[sthref3]][[ggpmu]]

Table 1-2 Default Port Assignments for GlassFish Server 5.1

[width="100%",cols="52%,48%",options="header",]
|=======================================================================
|Port Number |Usage
|4848 a|
Administration Console


|8080 |HTTP

|8081 |HTTPS

|8686 |Pure JMX clients

|3700 |IIOP

|3820 |IIOP/SSL

|3920 |IIOP/SSL with mutual authentication

|22 |SSH port

|9009 |Java debugger

|7676 |JMS provider

|Auto-generated from the operating system's dynamic port range |Message
Queue TCP port

|Auto-generated from the operating system's dynamic port range |Message
Queue Admin port

|9090 |GMS TCP start port

|9200 |GMS TCP end port

|Auto-generated between GMS TCP start and end ports |GMS listener port

|Auto generated between 2048 and 49151 |GMS multicast port
|=======================================================================


In some situations, such as when multiple domains are running on a
single host, port conflicts can arise in the auto-generated ports used
by Message Queue and the GMS. To avoid these conflicts, you can
configure the JMS host and the GMS to use specific ports.

[[sthref4]][[to-configure-specific-ports-for-a-jms-host]]

To Configure Specific Ports for a JMS Host
++++++++++++++++++++++++++++++++++++++++++

When you create a JMS Host, GlassFish server automatically selects ports
for the JMS provider (called the portmapper port in Message Queue
terminology), the Message Queue TCP port and the Message Queue admin
port.

To provide specific values for these ports, use the `--mqport` and
`--property` options when creating the JMS host:

[source,oac_no_warn]
----
asadmin> create-jms-host --mqhost hostName --mqport portNumber \
--mquser adminUser --mqpassword adminPassword --target glassfishTarget \
--property imq\\.jms\\.tcp\\.port=tcpPort:imq\\.admin\\.tcp\\.port=adminPort \
jms-host-name
----

`--mqport` `portNumber`::
  This option specifies the JMS provider port number.
`--property imq\\.jms\\.tcp\\.port=``tcpPort``:imq\\.admin\\.tcp\\.port=``adminPort`::
  The `imq.jms.tcp.port` and `imq.admin.tcp.port` properties specify the
  TCP port and the admin port numbers. The double backslashes (`\\`) are
  used in the `--properties` option to escape the dots in the property
  names.

[[sthref5]][[to-configure-specific-gms-ports-for-a-cluster]]

To Configure Specific GMS Ports for a Cluster
+++++++++++++++++++++++++++++++++++++++++++++

When you create a cluster, GlassFish server automatically selects a port
for GMS multicast that does not conflict with the GMS multicast port of
any other cluster in the domain. Additionally, when you start a cluster,
the GMS automatically selects an available port in a specific range for
its TCP listener.

If two or more domains are running on the same host, configure the
clusters in the domains to ensure that no GMS port conflicts can arise
among the clusters. To avoid possible port conflicts, use the
`--multicast` and `--properties` options when creating the cluster:

[source,oac_no_warn]
----
asadmin> create-cluster --multicastport multicast-port \
--properties GMS_TCPSTARTPORT=start-port:GMS_TCPENDPORT=end-port \
cluster-name
----

`--multicastport` `multicast-port`::
  This option specifies the port number for the GMS to use for UDP
  multicast.
`--properties GMS_TCPSTARTPORT=``start-port``:GMS_TCPENDPORT=``end-port`::
  The `GMS_TCPSTARTPORT` and `GMS_TCPENDPORT` properties specify the
  range of port numbers the GMS is to use when selecting an available
  port for its TCP listener. +

[width="100%",cols="100%",]
|=======================================================================
a|
Note:

Though you can create a cluster, there is no support for
configuration, as this has not been tested.

|=======================================================================


[[gkxlg]][[GSRLN00250]][[message-queue-broker-requirements]]

Message Queue Broker Requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server 5.1 is now bundled with Message Queue (MQ) Broker
5.1.1. Refer to the
https://javaee.github.io/glassfish/doc/5.1/mq-release-notes.pdf[`Open Message Queue Release Notes`]
for complete information about MQ Broker requirements.

[[gfgps]][[GSRLN00252]][[paths-and-environment-settings-for-the-jdk-software]]

Paths and Environment Settings for the JDK Software
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ensure that your JDK configuration settings on all local and remote
GlassFish Server hosts adhere to the guidelines listed below. Failure to
adhere to these guidelines can cause various problems that may be
difficult to trace.

The following topics are addressed here:

* link:#gldjj[Use the JDK Binaries]
* link:#gldgl[Set the `JAVA_HOME` Environment Variable]
* link:#gldho[Set Other Environment Variables As Necessary]

[[gldjj]][[GSRLN00155]][[use-the-jdk-binaries]]

Use the JDK Binaries
++++++++++++++++++++

The following binary files that are used with GlassFish Server must come
from the JDK software, not the Java Runtime Environment (JRE) software:

* `java`
* `keytool`

To meet this requirement, ensure that the `bin` directory for the JDK
software precedes the `bin` directory for the JRE software in your path.

[[gldgl]][[GSRLN00156]][[set-the-java_home-environment-variable]]

Set the `JAVA_HOME` Environment Variable
++++++++++++++++++++++++++++++++++++++++

Before performing any GlassFish Server installation or configuration
procedures, set the `JAVA_HOME` environment variable on the GlassFish
Server host machine to point to the correct Java version. Also be sure
to add the `JAVA_HOME/bin` directory to the `PATH` variable for your
environment. The `JAVA_HOME` variable must be set on all local and
remote GlassFish Server hosts.

[[gldho]][[GSRLN00157]][[set-other-environment-variables-as-necessary]]

Set Other Environment Variables As Necessary
++++++++++++++++++++++++++++++++++++++++++++

All remote `asadmin` subcommands require the correct version of Java to
be available on the affected remote machine. For example, when creating
a cluster or server instance on a remote machine, the remote machine
uses its local default Java installation, not the Java installation that
is on the DAS. Errors will therefore occur if the remote machine uses
the wrong Java version.

Depending on the remote subcommand, the errors may not occur when the
subcommand is executed, but may occur later, when interacting with a
configuration or resource created or modified by the subcommand. For
example, when creating a clustered server instance on a remote machine,
the error may only first appear when you attempt to deploy an
application on that server instance.

This issue is more likely to be encountered when GlassFish Server is
installed on the remote server by means of a ZIP file package as you do
not have the option to specifically choose your Java version while
unzipping a ZIP file.

Depending on what shell is invoked via SSH on the remote host, the
`JAVA_HOME` and `PATH` environment variables may need to be explicitly
set in `.bashrc`, `.cshrc`, or some other shell configuration file. This
configuration file may differ from the one that is used when you log in
to the machine, such as `.profile`.

Alternatively, you can specifically set the Java path with the `AS_JAVA`
property in the in the as-install`/config/asenv.conf` file.

[[glcmm]][[GSRLN00253]][[known-issues-in-glassfish-server-5.1]]

Known Issues in GlassFish Server 5.1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This section describes known issues and any available workarounds for
Eclipse GlassFish Server 5.1 software.

The following topics are addressed here:

* link:#CHDIBHHF[JAXB and JAX-WS no longer part of Java EE platform]
* link:#CHDIBEAJ[Resource validation property is enabled in the JVM
option for deployment]
* link:#CHDBJDGF[Update Tool and pkg Command no longer part of GlassFish
Server]
* link:#CHDJGJHD[Java DB has been replaced by Apache Derby]

[[CHDIBHHF]][[jaxb-and-jax-ws-no-longer-part-of-java-ee-platform]]

JAXB and JAX-WS no longer part of Java EE platform
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref6]][[description]]

Description
+++++++++++

Jakarta XML Binding (previous JAXB) and Jakarta XML Web Services (previouly JAX-WS) are part of Java EE platform,
but as optional technologies. However, the jars are packaged in GlassFish.


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

These jars are present only in the full profile of GlassFish and
not part of web profile.

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


[[sthref7]][[workaround]]

Workaround
++++++++++

None

[[CHDIBEAJ]][[resource-validation-property-is-enabled-in-the-jvm-option-for-deployment]]

Resource validation property is enabled in the JVM option for deployment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref8]][[description-1]]

Description
+++++++++++

A new JVM option for deployment - deployment.resource.validation is
introduced in GlassFish Server 5.1. This property is set to True by
default so that each resource is validated during deployment time. This
ensures that all resources are created beforehand. This property is
applicable for administration server as well as instances when clusters
are involved.


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

However, for deployment of applications containing embedded resource
adapter, a connector resource is created after deployment. For the
deployment of such applications to succeed, the server(s) must be
started with this property set to false. For more information on JVM
deployment options see
https://javaee.github.io/glassfish/doc/5.1/administration-guide.pdf#G11.998994[`Administering JVM Options.`]

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


[[sthref9]][[workaround-1]]

Workaround
++++++++++

In case you do not want the resource validation to take place during the
deployment, you can set this property value to False.

[[CHDBJDGF]][[update-tool-and-pkg-command-no-longer-part-of-glassfish-server]]

Update Tool and pkg Command no longer part of GlassFish Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref10]][[description-2]]

Description
+++++++++++

In previous releases, you could update your GlassFish Server software
using the pkg command and the Update tool. Since the recent release of
GlassFish server does not require the use of these features, they have
been removed from the GlassFish server installation.

[[sthref11]][[workaround-2]]

Workaround
++++++++++

No workaround.

[[CHDJGJHD]][[java-db-has-been-replaced-by-apache-derby]]

Java DB has been replaced by Apache Derby
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[[sthref12]][[description-3]]

Description
+++++++++++

In the previous releases, Java DB was used as the database for GlassFish
servers. With the release of GlassFish Server 5.1, Apache Derby
10.13.1.1 has replaced Java DB as the database for GlassFish servers.

[[sthref13]][[workaround-3]]

Workaround
++++++++++

No workaround.

[[ggqok]][[GSRLN00133]][[restrictions-and-deprecated-functionality]]

Restrictions and Deprecated Functionality
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This section describes restrictions and deprecated functionality in
Oracle GlassFish Server 5.1.

The following topics are addressed here:

* link:#ggqoc[`asadmin` Subcommands]
* link:#abmbf[Deprecated, Unsupported, and Obsolete Options]
* link:#gkueg[Applications That Use Apache Derby]
* link:#ghpen[No Support for Client VM on Windows AMD64]
* link:#gkwbd[Metro Reliable Messaging in `InOrder` Delivery Mode]

[[ggqoc]][[GSRLN00258]][[asadmin-subcommands]]

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

In GlassFish Server 5.1, 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]][[GSRLN00259]][[deprecated-unsupported-and-obsolete-options]]

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

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

[[sthref14]][[gaeki]]

Table 1-3 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.

|`--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:

|=======================================================================


[[gkueg]][[GSRLN00260]][[applications-that-use-apache-derby]]

Applications That Use Apache Derby
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The directory location of Apache Derby in GlassFish Server 5.1 has
changed from its location in previous installations. Suppose that you
have deployed applications that use Apache Derby databases in your
previous server installation, and you upgrade your existing installation
to GlassFish Server 5.1. If you run the `asadmin start-database` command
and successfully start Apache Derby, 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 Apache
Derby. For example: +
[source,oac_no_warn]
----
asadmin start-database --dbhome c:\glassfish\databases
----
2.  After upgrade, start GlassFish Server 5.1.

[[ghpen]][[GSRLN00261]][[no-support-for-client-vm-on-windows-amd64]]

No Support for Client VM on Windows AMD64
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

By default, the GlassFish Server DAS uses the Client VM to achieve best
startup and deployment performance. If you are using Windows AMD64, edit
the `domain.xml` file to remove the line
`<jvm-options>-client<jvm-options>`. In this case, JVM ergonomics
chooses the appropriate kind of VM for the given platform. Note that
server instances use the Server VM by default.

For more information about platform support, see
http://www.oracle.com/technetwork/java/ergo5-140223.html[Ergonomics in
the 5.1 Java Virtual Machine].

[[gkwbd]][[GSRLN00262]][[metro-reliable-messaging-in-inorder-delivery-mode]]

Metro Reliable Messaging in `InOrder` Delivery Mode
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The Metro Reliable Messaging in `InOrder` Delivery mode has not been
tested for high availability in GlassFish Server 5.1. The feature may
work, but it has not been formally tested and is therefore not a
supported feature.

[[glgiy]][[GSRLN00263]][[no-support-for-kerberos-on-aix]]

No Support for Kerberos on AIX
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server 5.1 does not support Kerberos on the AIX platform.

For the complete report about this issue, see
https://github.com/javaee/glassfish/issues/16728[`Issue-16728`]

[[BABDACBE]][[documentation-errata]]

Documentation Errata
~~~~~~~~~~~~~~~~~~~~

This section describes documentation errata.

* link:#BABIDEHD[Upgrading to Oracle GlassFish Server Is Not Necessary]

[[BABIDEHD]][[upgrading-to-oracle-glassfish-server-is-not-necessary]]

Upgrading to Oracle GlassFish Server Is Not Necessary
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The Eclipse GlassFish Server Administration Guide discusses
upgrading Eclipse GlassFish Server to Oracle GlassFish
Server. GlassFish Server 4.x is only an open source release, so this
upgrade is not necessary.


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

Upgrading may not work for GlassFish Server 5.1

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


[[giraq]][[GSRLN00135]][[features-available-only-in-the-full-platform]]

Features Available Only in the Full Platform
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following features of GlassFish Server 5.1 are available only in the
Full Platform:

* EJB features that make up the full EJB 3.2 API, such as remote EJB
components, message-driven beans, web service EJB endpoints, and the EJB
Timer Service +
The EJB 3.2 Lite specification is supported in the Web Profile. This
specification allows enterprise beans within web applications and
includes support for local stateless session beans, stateful session
beans, and singleton session beans.
* Application Client Container
* JMS resources
* Web services +
In the Web Profile, a servlet or EJB component cannot be a web service
endpoint. The `sun-web.xml` and `sun-ejb-jar.xml` elements that are
related to web services are ignored.
* Message security
* JavaMail resources

Connector modules that use only outbound communication features and
work-management that does not involve inbound communication features are
supported in the Web Profile. Other connector features are supported
only in the Eclipse GlassFish Server 5.1 full platform.

[[gipkz]][[GSRLN00136]][[java-ee-standards-support]]

Java EE Standards Support
~~~~~~~~~~~~~~~~~~~~~~~~~

link:#gjxcp[Table 1-4] lists the Java EE standards implemented in
GlassFish Server 5.1. The table also indicates the distributions in
which the implementation of a standard is available.

* X indicates that the implementation is available in the distribution.
* - indicates that the implementation is not available in the
distribution.

[[sthref15]][[gjxcp]]

Table 1-4 Java EE Standards Implementations in GlassFish Server 5.1

[width="100%",cols="48%,24%,16%,12%",options="header",]
|=======================================================================
|Java EE Standard |Java Specification Request (JSR) |GlassFish Server
5.1 Full Platform |GlassFish Server 5.1 Web Profile
|https://javaee.github.io/javaee-spec/javadocs/[Java Platform,
Enterprise Edition 8] `(https://javaee.github.io/javaee-spec/javadocs/)`
|http://jcp.org/en/jsr/detail?id=366[JSR 366] |X |X

|Java EE Security API |http://jcp.org/en/jsr/detail?id=375[JSR 375] |X
|X

|Batch Applications for the Java Platform 1.0
|http://jcp.org/en/jsr/detail?id=352[JSR 352] |X |-

|Concurrency Utilities for Java EE 1.0
|http://jcp.org/en/jsr/detail?id=236[JSR 236] |X |-

|Java API for JSON Processing 1.1
|http://jcp.org/en/jsr/detail?id=374[JSR 374] |X |X

|Java API for JSON Binding 1.0 |http://jcp.org/en/jsr/detail?id=367[JSR
367] |X |X

|Java API for WebSocket 1.1 |http://jcp.org/en/jsr/detail?id=356[JSR
356] |X |X

|https://javaee.github.io/servlet-spec/[Java Servlet Technology
5.1]`(https://javaee.github.io/servlet-spec/)/`
|http://jcp.org/en/jsr/detail?id=369[JSR 369] |X |X

|JavaServer Pages 2.3 |http://jcp.org/en/jsr/detail?id=245[JSR 245] |X
|X

|Expression Language 3.0 |http://jcp.org/en/jsr/detail?id=341[JSR 341]
|X |X

|Debugging Support for Other Languages 1.0
|http://jcp.org/en/jsr/detail?id=45[JSR 45] |X |X

|Standard Tag Library for JavaServer Pages 1.2
|http://jcp.org/en/jsr/detail?id=52[JSR 52] |X |X

|http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html[JavaServer
Faces 2.3]`(https://github.com/javaserverfaces/)`
|http://jcp.org/en/jsr/detail?id=372[JSR 372] |X |X

|Common Annotations for the Java Platform 1.2
|http://jcp.org/en/jsr/detail?id=250[JSR 250] |X |X

|https://github.com/javaee/jta-spec[Java Transaction API 1.2]
`(https://github.com/javaee/jta-spec)`
|http://jcp.org/en/jsr/detail?id=907[JSR 907] |X |X

|https://github.com/javaee/jpa-spec[Java Persistence API 2.2]
`(https://github.com/javaee/jpa-spec)`
|http://jcp.org/en/jsr/detail?id=338[JSR 338] |X |X

|Managed Beans 1.0 |http://jcp.org/en/jsr/detail?id=316[JSR 316] |X |X

|Interceptors 1.2 |http://jcp.org/en/jsr/detail?id=318[JSR 318] |X |X

|Dependency Injection for Java 1.0
|http://jcp.org/en/jsr/detail?id=330[JSR 330] |X |X

|https://github.com/javaee/ejb-spec[Enterprise JavaBeans 3.2 Lite]
`(https://github.com/javaee/ejb-spec)`
|http://jcp.org/en/jsr/detail?id=345[JSR 345] |X |X

|https://github.com/javaee/ejb-spec[Enterprise JavaBeans 3.2 Full
API]`(https://github.com/javaee/ejb-spec)`
|http://jcp.org/en/jsr/detail?id=345[JSR 345] |X |-

|Contexts and Dependency Injection for Java EE 2.0
|http://jcp.org/en/jsr/detail?id=365[JSR 365] |X |X

|Java API for RESTful Web Service (JAX-RS) 2.1
|http://jcp.org/en/jsr/detail?id=370[JSR 370] |X |X

|Bean Validation 2.0 |http://jcp.org/en/jsr/detail?id=349[JSR 380] |X |X

|https://github.com/javaee/connector-spec[Java EE Connector Architecture
1.7]`(https://github.com/javaee/connector-spec)`
|http://jcp.org/en/jsr/detail?id=322[JSR 322] |X |X^*^

|https://github.com/javaee/metro-jax-ws[Java API for XML-Based Web
Services (JAX-WS) 2.3]`(https://github.com/javaee/metro-jax-ws)`
|http://jcp.org/en/jsr/detail?id=224[JSR 224] |X |-

|https://github.com/javaee/jaxb-v2[Java Architecture for XML Binding
(JAXB) 2.2]`(https://github.com/javaee/jaxb-v2)`
|http://jcp.org/en/jsr/detail?id=222[JSR 222] |X |-

|Implementing Enterprise Web Services 1.4
|http://jcp.org/en/jsr/detail?id=109[JSR 109] |X |-

|Web Services Metadata for the Java Platform 2.1
|http://jcp.org/en/jsr/detail?id=181[JSR 181] |X |-

|https://javaee.github.io/jms-spec/[Java Message Service
2.0]`(https://javaee.github.io/jms-spec/)`
|http://jcp.org/en/jsr/detail?id=343[JSR 343] |X |-

|https://javaee.github.io/javamail/[JavaMail
1.6]`(https://javaee.github.io/javamail/)`
|http://jcp.org/en/jsr/detail?id=919[JSR 919] |X |-

|https://javaee.github.io/jacc-spec/[Java Authorization Contract for
Containers 1.5]`(https://javaee.github.io/jacc-spec/)`
|http://jcp.org/en/jsr/detail?id=115[JSR 115] |X |-

|Java Authentication Service Provider Interface for Containers 1.1
|http://jcp.org/en/jsr/detail?id=196[JSR 196] |X |-

|Java EE Application Deployment 1.2
|http://jcp.org/en/jsr/detail?id=88[JSR 88] |X |-

|J2EE Management 1.1 |http://jcp.org/en/jsr/detail?id=77[JSR 77] |X |-

|https://github.com/javaee/jax-rpc-ri[Java API for XML-Based Remote
Procedure Calls (JAX-RPC) 1.1]`(https://github.com/javaee/jax-rpc-ri/)`
|http://jcp.org/en/jsr/detail?id=101[JSR 101] |X |-

|Java API for XML-Based Registries (JAXR) 1.0
|http://jcp.org/en/jsr/detail?id=93[JSR 93] |X |-
|=======================================================================


^*^ Standalone Connector 1.7 Container only.

Building on these standards, GlassFish Server 5.1 provides a number of
extensions, including the following:

* Ajax (asynchronous JavaScript and XML): Retrieves and displays new
data for a portion of a web page without affecting the rest of the page.
* Metro: A web services stack that implements Java Architecture for XML
Binding (JAXB) and Java APIs for XML Web Services 2.3 (JAX-WS 2.3).
* Grizzly: A framework for building scalable and robust servers using
New I/O (NIO) APIs, which make scaling to thousands of users possible.
The ability to embed components that support HTTP, Bayeux Protocol, Java
Servlet API, and Comet is provided.

[[ghmtl]][[GSRLN00137]][[java-ee-sdk]]

Java EE SDK
~~~~~~~~~~~

GlassFish Server 5.1 is available as part of the Java EE 8 SDK. The
following versions of the Java EE 8 SDK are available:

* Java EE 8 SDK: This version includes GlassFish Server 5.1. This
version is designed for developers who require the full set of Java EE
APIs for enterprise application development.
* Java EE 8 Web Profile SDK: This version includes GlassFish Server 5.1
Web Profile. This version contains web technologies that are subset of
the Full Platform and is designed for developers who do not require the
full set of Java EE APIs.

More information about the Java EE SDK distributions are available at
http://www.oracle.com/technetwork/java/javaee/documentation/index.html[Java
EE Reference at a Glance]
(`http://www.oracle.com/technetwork/java/javaee/documentation/index.html`).
Java EE SDK distributions are available from the
http://www.oracle.com/technetwork/java/javaee/downloads/index.html[Java
EE SDK Downloads page]
(`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`).

[[abpha]][[GSRLN00138]][[how-to-report-problems-and-provide-feedback]]

How to Report Problems and Provide Feedback
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you have problems with GlassFish Server 5.1, provide feedback through
one of the following mechanisms:

* https://javaee.groups.io/g/glassfish[GlassFish Server forum]
(`https://javaee.groups.io/g/glassfish`) — A variety of GlassFish Server
community for various interests and feedback
* https://github.com/javaee/glassfish/issues[GlassFish Issue track]er
(`https://github.com/javaee/glassfish/issues`) — GlassFish Server
project dashboards and issue tracking database

[[abphc]][[GSRLN00139]][[additional-resources]]

Additional Resources
~~~~~~~~~~~~~~~~~~~~

Useful information can be found at the following locations:

* https://javaee.github.io/glassfish/[GlassFish Server Community]
(`https://javaee.github.io/glassfish/`)
* http://www.oracle.com/technetwork/index.html[Oracle Developer
Information] (`http://www.oracle.com/technetwork/index.html`)
* http://www.oracle.com/technetwork/indexes/documentation/index.html[Oracle
product documentation]
(`http://www.oracle.com/technetwork/indexes/documentation/index.html`)


