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

Eclipse GlassFish Server 7 Release Notes
========================================

[[GSRLN00001]][[abppa]]


[[glassfish-server-open-source-edition-release-notes]]
1 Eclipse GlassFish Server 7 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 7
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 7 release, and descriptions and workarounds for known
issues and limitations.

Refer to this document prior to installing, configuring, or using
GlassFish Server 7 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 7 Release?"]
* link:#abpaj["Hardware and Software Requirements"]
* link:#glcmm["Known Issues in GlassFish Server 7"]
* 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%",options="header",]
|===
|Date |Description of Changes
|September 2017 |Eclipse GlassFish Server 7.
|===


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

What's New in the GlassFish Server 7 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 7 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 7,
see link:#gipkz[Java EE Standards Support].


[NOTE]
====
The main thrust of the Eclipse GlassFish Server 7 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 7 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 7 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 7 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 7 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 7

[width="100%",cols="63%,37%",options="header",]
|===
|Port Number |Usage
|4848 |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]
----
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]
----
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.
+

[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 7 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 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This section describes known issues and any available workarounds for
Eclipse GlassFish Server 7 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 7. 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 7, 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 7.

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 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]][[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 7 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 7. 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]
----
asadmin start-database --dbhome c:\glassfish\databases
----
2. After upgrade, start GlassFish Server 7.

[[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 7. 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 7 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 7
====


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

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

The following features of GlassFish Server 7 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 7 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 7. 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 7

[width="100%",cols="48%,24%,16%,12%",options="header",]
|===
|Java EE Standard |Java Specification Request (JSR)
|GlassFish Server 7 Full Platform |GlassFish Server 7 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 7 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 7 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 7. 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 7
  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 7, 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`)


