Share on Social Media

Learn how to install GlassFish Server on CentOS 8 with this step-by-step guide. Set up a robust Java EE application server on your CentOS system efficiently. #centlinux #linux #glassfish

What is GlassFish Server?

GlassFish Server is an open-source application server that is designed for deploying and managing Java EE (Enterprise Edition) applications. It is developed by the Eclipse Foundation and was originally created by Sun Microsystems. GlassFish provides a robust and scalable platform for building enterprise-level applications, offering a variety of features that support the full Java EE specification.

Key Features of GlassFish Server:

  1. Java EE Compliance: GlassFish fully supports the Java EE standards, providing implementations of Java EE technologies such as Servlets, JSP, EJB, JPA, and more.
  2. Modularity: Built on a modular architecture using the OSGi framework, GlassFish allows you to install and use only the components you need, making it lightweight and customizable.
  3. Administration Console: GlassFish includes an easy-to-use web-based administration console for managing and configuring the server and deployed applications.
  4. Developer-Friendly: It integrates well with popular IDEs like Eclipse and NetBeans, facilitating a smoother development and deployment process for Java developers.
  5. High Availability and Clustering: GlassFish supports clustering and high availability features, ensuring that applications remain available and scalable.
  6. Performance Monitoring and Management: It provides tools for monitoring server performance and managing resources efficiently.
  7. Community and Commercial Support: While GlassFish has an active open-source community, Oracle also offers commercial support through its Oracle GlassFish Server version.

GlassFish Server is widely used in enterprise environments for hosting large-scale, mission-critical applications due to its compliance with Java EE standards, rich feature set, and scalability.

Glassfish Server vs Tomcat

GlassFish Server and Apache Tomcat are both popular choices for Java application deployment, but they serve different purposes and offer distinct features. Here’s a comparison to help you understand their differences and choose the right one for your needs:

GlassFish Server

Overview:

  • GlassFish is a full-fledged Java EE (Enterprise Edition) application server.
  • Developed by the Eclipse Foundation (originally by Sun Microsystems and later Oracle).

Key Features:

  1. Full Java EE Support: Implements the entire Java EE specification, including EJB, JPA, JMS, and more.
  2. Modularity: Uses a modular architecture based on OSGi, allowing for a customizable installation.
  3. Administration Console: Provides a comprehensive web-based administration console for easy server and application management.
  4. High Availability and Clustering: Supports clustering and high availability configurations for robust enterprise applications.
  5. Advanced Features: Includes additional enterprise features like JTA (Java Transaction API), JAX-WS (Java API for XML Web Services), and more.
  6. Developer Tools: Integrates well with IDEs such as NetBeans and Eclipse, offering tools for easier development and deployment.

Use Cases:

  • Ideal for enterprise applications requiring full Java EE support.
  • Suitable for applications needing advanced features like distributed transactions and messaging.

Apache Tomcat

Overview:

  • Tomcat is a lightweight servlet container and web server.
  • Developed and maintained by the Apache Software Foundation.

Key Features:

  1. Servlet/JSP Container: Primarily implements the Java Servlet and JavaServer Pages (JSP) specifications.
  2. Lightweight: Smaller footprint compared to full-fledged application servers, making it faster and easier to set up.
  3. Ease of Use: Simple to configure and manage, often used for smaller applications and development purposes.
  4. Performance: High performance for web applications, with efficient handling of servlets and JSP.
  5. Community Support: Strong community support and extensive documentation.

Use Cases:

  • Best for web applications that only require Servlet and JSP support.
  • Suitable for smaller applications or development environments where a full Java EE server is not necessary.
  • Preferred for microservices and RESTful services due to its lightweight nature.

Summary

Choosing Between GlassFish and Tomcat:

  • GlassFish: Opt for GlassFish if you need comprehensive Java EE support, advanced enterprise features, and robust clustering capabilities. It is well-suited for large-scale, mission-critical enterprise applications.
  • Tomcat: Choose Tomcat if your application primarily uses Servlets and JSP, and you prefer a lightweight, easy-to-manage solution. Tomcat is ideal for smaller web applications, development environments, and situations where a quick setup is beneficial.

In essence, the choice between GlassFish and Tomcat depends on the specific needs of your application and the level of Java EE support required.

Recommended Books: Jakarta EE Cookbook: (PAID LINK) Practical recipes for enterprise Java developers to deliver large scale applications with Jakarta EE, 2nd Edition by Packt Publishing
Recommended Online Training: Glassfish Server Administration for Beginners (Step-By-Step)

2577620 5ffd 2show?id=oLRJ54lcVEg&offerid=1074652.2577620&bids=1074652

Environment Specification

We are using a minimal RHEL 8 virtual machine with following specifications.

  • CPU – 3.4 Ghz (2 cores)
  • Memory – 2 GB
  • Storage – 20 GB
  • Operating System – Red Hat Enterprise Linux 8.5
  • Hostname – glassfish-01.centlinux.com
  • IP Address – 192.168.116.243 /24

Update Linux Software Packages

By using a SSH client, connect with glassfish-01.centlinux.com as root user.

Build cache of your enabled yum repositories.

# dnf makecache

Execute following dnf command to update installed software packages in you Linux server.

# dnf update -y

If the above command updates your Linux Kernel then you should reboot your Linux operating system with the new Kernel.

# reboot

After installation and reboot, verify the Linux operating system and Linux Kernel versions.

# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)

# uname -r
4.18.0-348.7.1.el8_5.x86_64

Install GlassFish Prerequisites

You are required wget and unzip commands to download and extract GlassFish installation files.

Therefore, install wget and unzip now by using dnf command.

# dnf install -y wget unzip

Eclipse GlassFish Server 6.2 requires Java JDK 11.

You can either install Oracle JDK or use OpenJDK instead.

Both works fine for Eclipse GlassFish Server 6.2.

Here, we are installing OpenJDK 11 from default Red Hat repositories.

# dnf install -y java-11-openjdk

After successful installation of Java Development Kit (JDK), verify the version of Java by using following command.

# java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

Create Linux User and Group

Create a Linux user to own GlassFish software and processes.

# useradd -s /sbin/nologin glassfish

Install GlassFish Server on CentOS 8

You can download GlassFish Server from their Official website.

Glassfish Server Downloads
Glassfish Server Downloads

Copy the URL from the above download page and then execute following wget command at Linux CLI to download GlassFish software.

# wget https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.2.3.zip -O ~/glassfish-6.2.3.zip
--2021-12-21 14:27:40--  https://www.eclipse.org/downloads/download.php?file=/ee4j/glassfish/glassfish-6.2.3.zip
Resolving www.eclipse.org (www.eclipse.org)... 198.41.30.198
Connecting to www.eclipse.org (www.eclipse.org)|198.41.30.198|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://download.eclipse.org/ee4j/glassfish/glassfish-6.2.3.zip [following]
--2021-12-21 14:27:42--  https://download.eclipse.org/ee4j/glassfish/glassfish-6.2.3.zip
Resolving download.eclipse.org (download.eclipse.org)... 198.41.30.199
Connecting to download.eclipse.org (download.eclipse.org)|198.41.30.199|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 118233273 (113M) [application/zip]
Saving to: ‘/root/glassfish-6.2.3.zip’

/root/glassfish-6.2 100%[===================>] 112.76M   921KB/s    in 1m 49s

2021-12-21 14:29:33 (1.03 MB/s) - ‘/root/glassfish-6.2.3.zip’ saved [118233273/118233273]

After successful download, extract the downloaded file by using unzip command.

# unzip -d /opt/ glassfish-6.2.3.zip

Change the ownership of GlassFish software by executing following Linux command.

# chown -R glassfish:glassfish /opt/glassfish6/

Create Systemd Service Unit

To configure autostart of Eclipse GlassFish server, you need to create a Systemd service unit.

Use vim text editor to create a Systemd service unit as follows.

# vi /usr/lib/systemd/system/glassfish.service

Add following lines in this file.

[Unit]
Description = GlassFish Server v6.2
After = syslog.target network.target

[Service]
User = glassfish
ExecStart = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking

[Install]
WantedBy = multi-user.target

Enable and start GlassFish service.

# systemctl enable --now glassfish.service
Created symlink /etc/systemd/system/multi-user.target.wants/glassfish.service → /usr/lib/systemd/system/glassfish.service.

Verify the status of GlassFish service.

# systemctl status glassfish.service
● glassfish.service - GlassFish Server v6.2
   Loaded: loaded (/usr/lib/systemd/system/glassfish.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-12-21 14:43:23 EST; 11s ago
  Process: 3149 ExecStart=/usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain (code=ex>
 Main PID: 3168 (java)
    Tasks: 100 (limit: 12267)
   Memory: 335.3M
   CGroup: /system.slice/glassfish.service
           └─3168 /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java -cp /opt/glassfish6/glassfish/modules/>

Dec 21 14:43:12 glassfish-01.centlinux.com systemd[1]: Starting GlassFish Server v6.2...
Dec 21 14:43:22 glassfish-01.centlinux.com java[3149]: Waiting for domain1 to start .........
Dec 21 14:43:22 glassfish-01.centlinux.com java[3149]: Successfully started the domain : domain1
Dec 21 14:43:22 glassfish-01.centlinux.com java[3149]: domain  Location: /opt/glassfish6/glassfish/domains/domain1
Dec 21 14:43:22 glassfish-01.centlinux.com java[3149]: Log File: /opt/glassfish6/glassfish/domains/domain1/logs/server.log
Dec 21 14:43:22 glassfish-01.centlinux.com java[3149]: Admin Port: 4848
Dec 21 14:43:22 glassfish-01.centlinux.com java[3149]: Command start-domain executed successfully.
Dec 21 14:43:23 glassfish-01.centlinux.com systemd[1]: Started GlassFish Server v6.2.

Configure Linux Firewall

Eclipse GlassFish Server uses following service ports.

  • 4848 – Administration Console
  • 8080 – HTTP Service
  • 8181 – HTTPS Service

Therefore, allow these ports in Linux Firewall to make GlassFish Server accessible across the network.

# firewall-cmd --permanent --add-port={4848,8080,8181}/tcp
success
# firewall-cmd --reload
success

Set GlassFish Admin Password

Add GlassFish binaries in PATH environment variable, to make them executable from any path.

# sed -i 's/^PATH=*/PATH=/opt/glassfish6/bin:/g' ~/.bash_profile
# source ~/.bash_profile

Note: Default password for admin user is blank.

Use asadmin command and set a password for GlassFish Admin user.

# asadmin --port 4848 change-admin-password
Enter admin user name [default: admin]>
Enter the admin password>
Enter the new admin password>
Enter the new admin password again>
Command change-admin-password executed successfully.

Configure HTTPS for GlassFish Server

By default, Glassfish Admin Console is running as a clear text HTTP service. Run following command to enable secure administration console.

# asadmin --host glassfish-01.centlinux.com --port 4848 enable-secure-admin
Enter admin user name>  admin
Enter admin password for user "admin">
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

Restart GlassFish server to apply changes.

# systemctl restart glassfish.service

Browse URL https://glassfish-01.centlinux.com:4848/ from a client’s browser. You have to ignore certificate warning and add exception in your browser.

GlassFish Server Login
GlassFish Server Login

Login as Admin user with password, that we have set in previous steps.

GlassFish - Common Tasks
GlassFish – Common Tasks

You have successfully login to Glassfish Admin Console.

Now, Browse URLs http://glassfish-01.centlinux.com/ and https://glassfish-01.centlinux.com/ from a client’s browser.

Both URLs will bring you to the same page. The only difference is that, former will serve you a clear text HTTP version, however the later will serve an encrypted HTTPS version of the same web page.

GlassFish Server Status
GlassFish Server Status

Final Thoughts

Installing GlassFish Server on CentOS 8 can be straightforward if you follow the right steps. This guide provides a comprehensive approach to get your server up and running smoothly. However, if you encounter any issues or prefer professional assistance, I’m here to help.

Visit my Fiverr profile to explore my service offerings. I provide expert installation and configuration of GlassFish Server, as well as other server and application setup services tailored to your needs. Let me handle the technical details so you can focus on your project.

Leave a Reply

Your email address will not be published. Required fields are marked *