type=page
status=published
title=Quick Start for Basic Features
prev=preface.html
~~~~~~

= Quick Start for Basic Features

[[GSQSG00003]][[aboaa]]


[[quick-start-for-basic-features]]
== 1 Quick Start for Basic Features

Eclipse GlassFish Server provides a server for the
development and deployment of Java Platform, Enterprise Edition (Jakarta EE
platform) applications and web technologies based on Java technology.
GlassFish Server 7 provides the following:

* A lightweight and extensible core based on OSGi Alliance standards
* A web container
* An easy-to-use Administration Console for configuration and management
* Update Tool connectivity for updates and add-on components
* Support for high availability clustering and load balancing

The following topics are addressed here:

* link:#ghgpe[About This Quick Start Guide]
* link:#ghpfg[Default Paths and File Names]
* link:#gixue[Default Administration Values]
* link:#gglog[Starting and Stopping the Default Domain]
* link:#gglmh[Starting and Stopping the Database Server]
* link:#ggllq[Starting the Administration Console]
* link:#geyvr[Deploying and Undeploying Applications]
* link:#gktqx[High Availability Clustering and Load Balancing]
* link:#ggkzh[For More Information]

[[ghgpe]][[GSQSG00030]][[about-this-quick-start-guide]]

=== About This Quick Start Guide

Eclipse GlassFish Server 7 Quick Start Guide demonstrates
key features of the GlassFish Server product and enables you to quickly
learn the basics. Step-by-step procedures introduce you to product
features and enable you to use them immediately.

This guide assumes that you have already obtained and installed the
GlassFish Server 7 software. For more information about installing
GlassFish Server 7, see the
https://github.com/eclipse-ee4j/glassfishdocumentation[GlassFish Server Open
Source Edition Installation Guide].

Instructions and examples in this guide that apply to all supported
operating systems use the forward slash character (`/`) as path
separators in all file names and commands. Ensure that you use the
correct character for the system on which GlassFish Server is installed.
For example:

* UNIX, Linux, or Mac OS X systems: as-install`/bin/asadmin`
* Windows systems: as-install`\bin\asadmin`

This guide provides basic information only. For comprehensive
information about GlassFish Server and other entities mentioned in this
guide, see link:#ggkzh[For More Information].

To review additional details about this release before you begin using
the software, see the link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition
Release Notes]. The Release Notes provide important information about
the GlassFish Server 7 release, including details about new features,
information about known issues and possible workarounds, and tips for
installing and working with GlassFish Server 7 software.

[[ghpfg]][[GSQSG00031]][[default-paths-and-file-names]]

=== Default Paths and File Names

The following table describes the default paths and file names that are
used in this book.

[[sthref3]][[sthref4]]

Table 1-1 Default Paths and File Names

[width="100%",cols="14%,35%,51%",options="header",]
|===
|Placeholder |Description |Default Value

|as-install
|Represents the base installation directory for GlassFish Server.
a|Installations on the Oracle Solaris operating system, Linux operating
system, and Mac OS operating system:

user's-home-directory``/glassfish7/glassfish``

Installations on the Windows operating system:

SystemDrive``:\glassfish7\glassfish``

|as-install-parent
|Represents the parent of the base installation directory for GlassFish Server.
a|Installations on the Oracle Solaris operating system, Linux operating
system, and Mac operating system:

user's-home-directory``/glassfish7``

Installations on the Windows operating system:

SystemDrive``:\glassfish7``

|domain-root-dir
|Represents the directory in which a domain is created by default.
|as-install``/domains/``

|domain-dir
|Represents the directory in which a domain's configuration is stored.
|domain-root-dir``/``domain-name

|instance-dir
|Represents the directory for a server instance.
|domain-dir``/``instance-name
|===


[[gixue]][[GSQSG00032]][[default-administration-values]]

=== Default Administration Values

The following table lists default administration values for GlassFish
Server. See link:#ghpfg[Default Paths and File Names] for more
information about the as-install and domain-dir placeholders.

[[sthref5]][[gixxy]]

Table 1-2 Default Administration Values

[width="100%",cols="50%,50%",options="header",]
|===
|Item |Default Value or Location
|Domain name |`domain1`

|Master password |`changeit`

|https://github.com/eclipse-ee4j/glassfishdoc/5.0/reference-manual.pdf[
`asadmin`(1M)] command-line utility
|as-install`/bin`

|Configuration files |domain-dir`/config`

|Log files |domain-dir`/logs`

|Administration server port |`4848`

|HTTP port |`8080`

|HTTPS port |`8181`

|Pure JMX clients port |`8686`

|Message Queue port |`7676`

|IIOP port |`3700`

|IIOP/SSL port |`3820`

|IIOP/SSL port with mutual authentication |`3920`
|===


[[gglog]][[GSQSG00033]][[starting-and-stopping-the-default-domain]]

=== Starting and Stopping the Default Domain

When you install GlassFish Server, a default domain named `domain1` is
created. The following procedures describe how to start and stop
`domain1` when it is the only domain. For information about starting and
stopping a domain when there are multiple domains, see
"link:../administration-guide/domains.html#GSADG00006[Administering Domains]" in GlassFish Server Open
Source Edition Administration Guide.

[[ggmpd]][[GSQSG00005]][[to-start-the-default-domain]]

==== To Start the Default Domain

[[sthref6]]

Before You Begin

GlassFish Server software must be installed before you start the domain.

Run the `asadmin start-domain` command without an operand:

[source]
----
as-install/bin/asadmin start-domain
----

The command starts the default domain, `domain1`.

[[ggmsx]][[GSQSG00006]][[to-stop-the-default-domain]]

==== To Stop the Default Domain

Run the `asadmin stop-domain` command without an operand:

[source]
----
as-install/bin/asadmin stop-domain
----

The command stops the default domain, `domain1`.


[TIP]
====
To determine whether a domain is running, use the `asadmin list-domains`
command:

[source]
----
as-install/bin/asadmin list-domains
----
====


[[gglmh]][[GSQSG00034]][[starting-and-stopping-the-database-server]]

=== Starting and Stopping the Database Server

A database server is not started by default when you start the GlassFish
Server domain. If your applications require a database back end, you
must start and stop the database server manually.

The following procedures describe how to start and stop the Apache Derby
server that is bundled with GlassFish Server. For information about
starting and stopping other database servers, see the documentation for
your specific product.

For the list of database products supported in this release, see the
https://github.com/eclipse-ee4j/glassfishdocumentation[GlassFish Server Open
Source Edition Release Notes].

For more information about database connectivity, see
"https://github.com/eclipse-ee4j/glassfishdocumentation[Administering Database
Connectivity]" in Eclipse GlassFish Server Administration Guide.

[[ggncr]][[GSQSG00007]][[to-start-the-apache-derby-server]]

==== To Start the Apache Derby Server

[[sthref7]]

Before You Begin

At least one GlassFish Server domain must be started before you start
the database server.

Run the `asadmin start-database` command.

The general form for the command is as follows:

[source]
----
as-install/bin/asadmin start-database --dbhome directory-path
----

For example, to start the Apache Derby server from its default location:

[source]
----
as-install/bin/asadmin start-database --dbhome as-install-parent/javadb
----

[[ggnez]][[GSQSG00008]][[to-stop-the-apache-derby-server]]

==== To Stop the Apache Derby Server

Run the `asadmin stop-database` command:

[source]
----
as-install/bin/asadmin stop-database
----

[[ggllq]][[GSQSG00035]][[starting-the-administration-console]]

=== Starting the Administration Console

The GlassFish Server Administration Console provides a browser interface
for configuring, administering, and monitoring GlassFish Server.

[[ggnbp]][[GSQSG00009]][[to-start-the-administration-console]]

==== To Start the Administration Console

[[sthref8]]

Before You Begin

At least one GlassFish Server domain must be started.

1. Type the URL in your browser.
+
The default URL for the Administration Console on the local host is as follows:
+
[source]
----
http://localhost:4848
----

2. If prompted, log in to the Administration Console.
+
You will be prompted to log in if you chose to require an administration
password at the time GlassFish Server was installed.

[[sthref9]]

See Also

For more information, see the Administration Console online help.

[[geyvr]][[GSQSG00036]][[deploying-and-undeploying-applications]]

=== Deploying and Undeploying Applications

The process of configuring and enabling applications to run within the
GlassFish Server framework is referred to as deployment.

This section explains how to deploy, list, and undeploy applications.
The procedures in this section use the `hello.war` sample application.
The following topics are addressed here:

* link:#ghgis[To Obtain the Sample Application]
* link:#gkpao[Deploying and Undeploying the Sample Application From the Command Line]
* link:#gkpau[Deploying and Undeploying Applications by Using the Administration Console]
* link:#gkpaa[Deploying and Undeploying the Sample Application Automatically]

[[ghgis]][[GSQSG00010]][[to-obtain-the-sample-application]]

==== To Obtain the Sample Application

1. Download a copy of the `hello.war` sample application from
`https://github.com/eclipse-ee4j/glassfishdownloads/quickstart/hello.war`.

2. Save the `hello.war` file in the directory of your choice.
+
This directory is referred to as sample-dir.

[[gkpao]][[GSQSG00044]][[deploying-and-undeploying-the-sample-application-from-the-command-line]]

==== Deploying and Undeploying the Sample Application From the Command Line

GlassFish Server provides `asadmin` subcommands for performing the
following deployment-related tasks:

* link:#ggndq[To Deploy the Sample Application From the Command Line]
* link:#ggnco[To List Deployed Applications From the Command Line]
* link:#ggnbm[To Undeploy the Sample Application From the Command Line]

[[ggndq]][[GSQSG00011]][[to-deploy-the-sample-application-from-the-command-line]]

===== To Deploy the Sample Application From the Command Line

[[sthref10]]

Before You Begin

The sample application must be available before you start this task. To
download the sample, see link:#ghgis[To Obtain the Sample Application].
At least one GlassFish Server domain must be started before you deploy
the sample application.

1. Run the `asadmin deploy` command.
+
The general form for the command is as follows:
+
[source]
----
as-install/bin/asadmin deploy war-name
----
To deploy the `hello.war` sample, the command is as follows:
+
[source]
----
as-install/bin/asadmin deploy sample-dir/hello.war
----

2. Access the `hello` application by typing the following URL in your
browser:
+
[source]
----
http://localhost:8080/hello
----
The application's start page is displayed, and you are prompted to type
your name.
+
[source]
----
Hi, my name is Duke. What's yours?
----

3. Type your name and click Submit.
+
The application displays a customized response, giving you a personal
`Hello`.

[[sthref11]]

See Also

For more information about the `deploy` subcommand, see
link:../reference-manual/deploy.html#GSRFM00114[`deploy`(1)].

For more information about deploying applications from the command line,
see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application
Deployment Guide].

[[ggnco]][[GSQSG00012]][[to-list-deployed-applications-from-the-command-line]]

===== To List Deployed Applications From the Command Line

Run the `asadmin list-applications` command:

[source]
----
as-install/bin/asadmin list-applications
----

[[ggnbm]][[GSQSG00013]][[to-undeploy-the-sample-application-from-the-command-line]]

===== To Undeploy the Sample Application From the Command Line

Run the `asadmin undeploy` command.

The general form for the command is as follows:

[source]
----
as-install/bin/asadmin undeploy war-name
----

For war-name, use the literal `hello`, not the full `hello.war` name.

For the `hello.war` example, the command is as follows:

[source]
----
as-install/bin/asadmin undeploy hello
----

[[sthref12]]

See Also

For more information about the `undeploy` subcommand, see
link:../reference-manual/undeploy.html#GSRFM00244[`undeploy`(1)].

[[gkpau]][[GSQSG00045]][[deploying-and-undeploying-applications-by-using-the-administration-console]]

==== Deploying and Undeploying Applications by Using the Administration Console

The graphical Administration Console of GlassFish Server enables you to
perform the following deployment-related tasks:

* link:#ggnbn[To Deploy the Sample Application by Using the Administration Console]
* link:#ggncd[To View Deployed Applications in the Administration Console]
* link:#ggneh[To Undeploy the Sample Application by Using the Administration Console]

[[ggnbn]][[GSQSG00014]][[to-deploy-the-sample-application-by-using-the-administration-console]]

===== To Deploy the Sample Application by Using the Administration Console

[[sthref13]]

Before You Begin

The sample application must be available before you start this task.
To download the sample, see link:#ghgis[To Obtain the Sample Application].
At least one GlassFish Server domain must be started before you deploy
the sample application.

1. Launch the Administration Console by typing the following URL in
your browser:
+
[source]
----
http://localhost:4848
----

2. Click the Applications node in the tree on the left.
+
The Applications page is displayed.

3. Click the Deploy button.
+
The Deploy Applications or Modules page is displayed.

4. Select Packaged File to be Uploaded to the Server, and click Browse.

5. Navigate to the location in which you saved the `hello.war` sample,
select the file, and click Open.
+
You are returned to the Deploy Applications or Modules page.

6. Specify a description in the Description field, for example:
+
`hello`

7. Accept the other default settings, and click OK.
+
You are returned to the Applications page.

8. Select the check box next to the `hello` application and click the
Launch link to run the application.
+
The default URL for the application is as follows:
+
[source]
----
http://localhost:8080/hello/
----

[[sthref14]]

See Also

For more information, see the Administration Console online help.

[[ggncd]][[GSQSG00015]][[to-view-deployed-applications-in-the-administration-console]]

===== To View Deployed Applications in the Administration Console

1. Launch the Administration Console by typing the following URL in
your browser:
+
[source]
----
http://localhost:4848
----

2. Click the Applications node in the tree on the left.
+
Expand the node to list deployed applications. Deployed applications are
also listed in the table on the Applications page.

[[ggneh]][[GSQSG00016]][[to-undeploy-the-sample-application-by-using-the-administration-console]]

===== To Undeploy the Sample Application by Using the Administration Console

1. Launch the Administration Console by typing the following URL in your browser:
+
[source]
----
http://localhost:4848
----

2. Click the Applications node in the tree on the left.
+
The Applications page is displayed.

3. Select the check box next to the `hello` sample application.

4. Remove or disable the application.
* To remove the application, click the Undeploy button.
* To disable the application, click the Disable button.

[[sthref15]]

See Also

For more information, see the Administration Console online help.

[[gkpaa]][[GSQSG00046]][[deploying-and-undeploying-the-sample-application-automatically]]

==== Deploying and Undeploying the Sample Application Automatically

GlassFish Server enables you to performing the following
deployment-related tasks automatically:

* link:#geyvj[To Deploy the Sample Application Automatically]
* link:#ggncw[To Undeploy the Sample Application Automatically]

[[geyvj]][[GSQSG00017]][[to-deploy-the-sample-application-automatically]]

===== To Deploy the Sample Application Automatically

You can deploy applications automatically by placing them in the
domain-dir`/autodeploy` directory, where domain-dir is the directory of
the domain for which you want to configure automatic deployment. For
this example, use the default domain, `domain1`, in the default
domain-root-dir, which is as-install`/domains`:

[source]
----
as-install/domains/domain1/autodeploy
----

[[sthref16]]

Before You Begin

The sample application must be available before you start this task. To
download the sample, see link:#ghgis[To Obtain the Sample Application].

Copy the application WAR file to the domain-dir`/autodeploy` directory.

* On UNIX, Linux, and Mac OS X systems, type this command:
+
[source]
----
cp sample-dir/hello.war as-install/domains/domain-dir/autodeploy
----
* On Windows systems, type this command:
+
[source]
----
copy sample-dir\hello.war as-install\domains\domain-dir\autodeploy
----

GlassFish Server automatically discovers and deploys the application.
The default URL for the application is as follows:

[source]
----
http://localhost:8080/hello/
----

[[ggncw]][[GSQSG00018]][[to-undeploy-the-sample-application-automatically]]

===== To Undeploy the Sample Application Automatically

1. Change to the domain's `autodeploy` directory.
+
[source]
----
cd as-install\domains\domain-dir\autodeploy
----

2. Delete the sample application's WAR file to undeploy and remove the application.
* On UNIX, Linux, and Mac OS X systems, type this command:
+
[source]
----
rm hello.war
----
* On Windows systems, type this command:
+
[source]
----
del hello.war
----

[[gktqx]][[GSQSG00037]][[high-availability-clustering-and-load-balancing]]

=== High Availability Clustering and Load Balancing

GlassFish Server enables multiple GlassFish Server instances to be
clustered to provide high availability through failure protection,
scalability, and load balancing. The subsections that follow provide an
overview of high availability clustering and load balancing for
GlassFish Server.

[[gktob]][[GSQSG00047]][[clusters-of-glassfish-server-instances]]

==== Clusters of GlassFish Server Instances

A cluster is a collection of GlassFish Server instances that work
together as one logical entity. A cluster provides a runtime environment
for one or more Java Platform, Enterprise Edition (Jakarta EE)
applications. A cluster provides high availability through failure
protection, scalability, and load balancing.

A GlassFish Server instance is a single Virtual Machine for the Java
platform (Java Virtual Machine or JVM machine) on a single node in which
GlassFish Server is running. A node defines the host where the GlassFish
Server instance resides. The JVM machine must be compatible with the
Java Platform, Enterprise Edition (Jakarta EE).

GlassFish Server instances form the basis of an application deployment.
An instance is a building block in the clustering, load balancing, and
session persistence features of GlassFish Server. Each instance belongs
to a single domain and has its own directory structure, configuration,
and deployed applications. Every instance contains a reference to a node
that defines the host where the instance resides.

For more information, see the following documentation:

* "link:../ha-administration-guide/nodes.html#GSHAG00004[Administering GlassFish Server Nodes]" in GlassFish
Server Open Source Edition High Availability Administration Guide
* "link:../ha-administration-guide/clusters.html#GSHAG00005[Administering GlassFish Server Clusters]" in
Eclipse GlassFish Server High Availability Administration Guide
* "link:../ha-administration-guide/instances.html#GSHAG00006[Administering GlassFish Server Instances]" in
Eclipse GlassFish Server High Availability Administration Guide

[[gktpt]][[GSQSG00048]][[session-persistence-and-failover]]

==== Session Persistence and Failover

Storing session state data enables the session state to be recovered
after the failover of an instance in a cluster. Recovering the session
state enables the session to continue without loss of information.
GlassFish Server supports in-memory session replication on other servers
in the cluster for maintaining HTTP session and stateful session bean data.

For more information, see "link:../ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High
Availability Session Persistence and Failover]" in GlassFish Server Open
Source Edition High Availability Administration Guide.

[[gksbz]][[GSQSG00049]][[load-balancing-for-clustered-configurations]]

==== Load Balancing for Clustered Configurations

GlassFish Server supports web server and hardware-based load balancing
for clustered configurations. A load balancer is deployed with a
cluster, and provides the following features:

* Allows an application or service to be scaled horizontally across
multiple physical (or logical) hosts yet still present the user with a single URL
* Insulates the user from host failures or server crashes when used with
session persistence
* Enhances security by hiding the internal network from the user

Eclipse GlassFish Server is compatible with the Apache HTTP
server `mod_jk` module for load balancing.

GlassFish Server load balancing configurations can vary widely depending
on the needs of your enterprise. For complete information about
configuring load balancing in GlassFish Server, see the following
documentation:

* "link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[
Configuring HTTP Load Balancing]" in
GlassFish Server Open Source Edition High Availability Administration Guide
* "link:../ha-administration-guide/rmi-iiop.html#GSHAG00013[
RMI-IIOP Load Balancing and Failover]" in
GlassFish Server Open Source Edition High Availability Administration Guide

[[ggkzh]][[GSQSG00040]][[for-more-information]]

=== For More Information

Additional resources are available to help you learn more about
GlassFish Server 7 and related technologies.

The following resources are described here:

* link:#ghhir[Product Documentation]
* link:#giyjo[Tutorials]
* link:#gintm[Jakarta EE Examples]

[[ghhir]][[GSQSG00050]][[product-documentation]]

==== Product Documentation

Comprehensive product documentation is available and includes the
following.

* link:../release-notes/toc.html#GSRLN[GlassFish Server Open Source Edition Release Notes]:
Latest details about new features, known issues, and tips for installing
and working with GlassFish Server software.
* https://glassfish.org/docs/[{productName}]

[[giyjo]][[GSQSG00052]][[tutorials]]

==== Tutorials

The following tutorials provide working examples and detailed
instructions for creating enterprise applications for the Jakarta EE platform.

* https://github.com/eclipse-ee4j/jakartaee-firstcup-examples[Your First Cup: An
Introduction to the Jakarta EE Platform]. For beginning Jakarta EE
programmers, this short tutorial explains the entire process for
developing a simple enterprise application. The sample application is a
web application that consists of a component that is based on the
Enterprise JavaBeans specification, a JAX-RS web service, and a
JavaServer Faces component for the web front end.
* https://eclipse-ee4j.github.io/jakartaee-tutorial/[The Jakarta EE Tutorial].
This comprehensive tutorial explains how to use Jakarta EE platform technologies
and APIs to develop Jakarta EE applications.

[[gintm]][[GSQSG00053]][[jakarta-ee-examples]]

==== Jakarta EE Examples

https://github.com/eclipse-ee4j/jakartaee-examples[Jakarta EE Examples] -
The example applications demonstrate Jakarta EE technologies.



