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
Table of Contents
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:
- Java EE Compliance: GlassFish fully supports the Java EE standards, providing implementations of Java EE technologies such as Servlets, JSP, EJB, JPA, and more.
- 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.
- Administration Console: GlassFish includes an easy-to-use web-based administration console for managing and configuring the server and deployed applications.
- Developer-Friendly: It integrates well with popular IDEs like Eclipse and NetBeans, facilitating a smoother development and deployment process for Java developers.
- High Availability and Clustering: GlassFish supports clustering and high availability features, ensuring that applications remain available and scalable.
- Performance Monitoring and Management: It provides tools for monitoring server performance and managing resources efficiently.
- 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:
- Full Java EE Support: Implements the entire Java EE specification, including EJB, JPA, JMS, and more.
- Modularity: Uses a modular architecture based on OSGi, allowing for a customizable installation.
- Administration Console: Provides a comprehensive web-based administration console for easy server and application management.
- High Availability and Clustering: Supports clustering and high availability configurations for robust enterprise applications.
- Advanced Features: Includes additional enterprise features like JTA (Java Transaction API), JAX-WS (Java API for XML Web Services), and more.
- 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:
- Servlet/JSP Container: Primarily implements the Java Servlet and JavaServer Pages (JSP) specifications.
- Lightweight: Smaller footprint compared to full-fledged application servers, making it faster and easier to set up.
- Ease of Use: Simple to configure and manage, often used for smaller applications and development purposes.
- Performance: High performance for web applications, with efficient handling of servlets and JSP.
- 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)
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
Read Also: How to install Payara Server on CentOS 7
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.
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.
Login as Admin user with password, that we have set in previous steps.
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.
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.