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

[CAUTION]
====
To Be Done

This page must be updated before the release!
====

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

For any issue or information on Eclipse GlassFish Server,
see the https://glassfish.org/.

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["Jakarta EE Standards Support"]
* link:#ghmtl["Jakarta 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 Jakarta EE. Jakarta EE 10
introduces ... To Be Done

GlassFish Server 7 includes the following new and updated Jakarta EE standards.

New Features

* To Be Done

Updated

* To Be Done

For a complete list of the Jakarta EE technologies included in GlassFish Server 7,
see link:#gipkz[Jakarta 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 Jakarta EE 10 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 Jakarta EE 10 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://github.com/eclipse-ee4j/glassfishdoc/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 Jakarta 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 Jakarta EE platform

[[sthref6]][[description]]

===== Description

Jakarta XML Binding (previous JAXB) and Jakarta XML Web Services (previouly JAX-WS)
are part of Jakarta 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://github.com/eclipse-ee4j/glassfishdoc/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]]

=== Jakarta EE Standards Support

link:#gjxcp[Table 1-4] lists the Jakarta 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 Jakarta EE Standards Implementations in GlassFish Server 7

[width="100%",cols="<48%,<10%,<10%,<10%",options="header",]
|===
|Jakarta EE Standard |Version |GlassFish Server 7 Full Platform |GlassFish Server 7 Web Profile

|https://jakarta.ee/specifications/platform/10/[Jakarta EE Specification]
|10
|X
|X

|https://jakarta.ee/specifications/activation/[Activation]
|2.1
|X
|-

|https://jakarta.ee/specifications/security/[Security]
|3.0
|X
|X

|https://jakarta.ee/specifications/batch/[Batch]
|2.1
|X
|-

|https://jakarta.ee/specifications/concurrency/[Concurrency]
|3.0
|X
|-

|https://jakarta.ee/specifications/jsonp/[JSON Processing]
|2.1
|X
|X

|https://jakarta.ee/specifications/jsonb/[JSON Binding]
|3.0
|X
|X

|https://jakarta.ee/specifications/websocket/[WebSocket]
|2.1
|X
|X

|https://jakarta.ee/specifications/websocket/[Servlet]
|6.0
|X
|X

|https://jakarta.ee/specifications/pages/[Server Pages]
|3.1
|X
|X

|https://jakarta.ee/specifications/expression-language/[Expression Language]
|5.0
|X
|X

|https://jakarta.ee/specifications/debugging/[Debugging Support for Other Languages]
|2.0
|X
|X

|https://jakarta.ee/specifications/tags/[Standard Tag Library]
|3.0
|X
|X

|https://jakarta.ee/specifications/mvc/[MVC]
|2.1
|X
|X

|https://jakarta.ee/specifications/faces/[JavaServer Faces]
|4.0
|X
|X

|https://jakarta.ee/specifications/annotations/[Annotations]
|2.1
|X
|X

|https://jakarta.ee/specifications/transactions/[Transactions]
|2.0
|X
|X

|https://jakarta.ee/specifications/persistence/[Persistence]
|3.1
|X
|X

|https://jakarta.ee/specifications/managedbeans/[Managed Beans]
|2.0
|X
|X

|https://jakarta.ee/specifications/interceptors/[Interceptors]
|2.0
|X
|X

|https://jakarta.ee/specifications/dependency-injection/[Dependency Injection]
|2.0
|X
|X

|https://jakarta.ee/specifications/cdi/[Contexts and Dependency Injection]
|3.0
|X
|X

|https://jakarta.ee/specifications/persistence/[Enterprise Beans]
|4.0
|X
|-

|https://jakarta.ee/specifications/restful-ws/[RESTful Web Services]
|4.0
|X
|X

|https://jakarta.ee/specifications/bean-validation/[Bean Validation]
|3.0
|X
|X

|https://jakarta.ee/specifications/connectors/[Connectors]
|2.1
|X
|X^*^

|https://jakarta.ee/specifications/xml-web-services/[XML Web Services]
|4.0
|X
|-

|https://jakarta.ee/specifications/soap-attachments/[SOAP With Attachements]
|3.0
|X
|-

|https://jakarta.ee/specifications/xml-binding/[XML Binding]
|4.0
|X
|-

|https://jakarta.ee/specifications/enterprise-ws/[Enterprise Web Services]
|2.0
|X
|-

|https://jakarta.ee/specifications/web-services-metadata/[Web Services Metadata]
|3.0
|X
|-

|https://jakarta.ee/specifications/messaging/[Messaging]
|3.1
|X
|-

|https://jakarta.ee/specifications/mail/[Mail]
|2.1
|X
|-

|https://jakarta.ee/specifications/authentication/[Authentication]
|3.0
|X
|X

|https://jakarta.ee/specifications/authorization/[Authorization]
|2.1
|X
|-

|https://jakarta.ee/specifications/deployment/[Deployment]
|1.7
|X
|-

|https://jakarta.ee/specifications/management/[Management]
|1.1
|X
|-

|https://jakarta.ee/specifications/xml-rpc/[XML RPC]
|1.1
|X
|-

|https://jakarta.ee/specifications/xml-registries/[XML Registries]
|1.0
|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.

[[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://github.com/eclipse-ee4j/glassfish[GlassFish Server Community]
(`https://github.com/eclipse-ee4j/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`)


