JMJ CLOUD
  • Home
  • Projects
  • Blog
  • About Us
  • Contact Us

Our Blog

For ORDS, It's Time to Move from GlassFish to Tomcat

1/15/2018

2 Comments

 

Introduction

Picture
If you have looked at the release notes for ORDS 17.4, you will have noticed that as of the next release of Oracle REST Data Services (ORDS), GlassFish will no longer be supported as a container for ORDS. So long GlassFish, we knew thee well.

While 17.4 continues to support Glassfish (4.1.2 and later), support for Glassfish will be removed in a future release. Use of Oracle WebLogic, ORDS Standalone Mode or Apache Tomcat is recommended instead.
Picture
This leaves you with three options for running ORDS. 1) Pay for WebLogic (I don't think so) 2) Run ORDS standalone (this option looks better and better every release of ORDS) or 3) Switch to Tomcat. As I have just finished moving a client from GlassFish to Tomcat, I am going to focus on Tomcat in this post.

Install on a New Server

Picture
If possible, fire up a new server (or VM) and complete your Tomcat and ORDS install on the new server. This will allow you to complete the install process without disturbing your existing server. If you are able to talk your Sysadmin into more CPU and Memory, this option may also give you some more horsepower to work with.

One caveat to this approach is if you are upgrading ORDS at the same time as moving to Tomcat. In this case, you can complete the Tomcat install on the new server but won't be able to complete the ORDS install until your final cutover. This is because the install of a new version of ORDS upgrades objects on the database. You should not have two servers using different versions of ORDS hitting the same database.

Don't forget to locate the server as close as possible to the database server. Distance between your app server and your database will kill performance.

Preparation

Picture

​Take some time before you start the install and make sure you have the following information at hand:

  • Information from all the databases serviced by your current ORDS server:
    • Passwords for the ORDS database accounts in all of your databases (ORDS_PUBLIC_USER, ORDS_PUBLIC_USER, APEX_LISTENER and APEX_REST_PUBLIC_USER).
    • The SYS password.
    • Database server names, ports and SIDs.
  • ORDS Configuration files from your old install. Also, take note of your jdbc connection pool settings, specifically (jdbc.InitialLimit, jdbc.MinLimit and jdbc.MaxLimit).
  • A detailed run book which documents the steps you need to take to complete the install. You will be refining this before you do the PROD install, but it's good to have a starting point before you start DEV/TEST.
  • Identify and download the latest stable versions of the software you will need:
    • Java JDK
    • Tomcat
    • ORDS
  • Run load tests on the old environment to get a performance benchmark.

Get on the Latest Version of ORDS

Picture
This is a great time to move to the latest version of ORDS. A number of great new features have been released in the past few versions, including REST enabled SQL and Open API 2.0 Support (Swagger Documentation for your APIs). There have also been a number of performance enhancements including faster JSON parsing which you can take advantage of.

Revisit Your ORDS Settings

Picture
The number of users using APEX and accessing REST services on your ORDS server will most likely be very different now than it was when you did your original GlassFish and ORDS install. Take this opportunity to revisit and fine tune your ORDS settings, especially your jdbc connection pool settings.

In addition, if you are installing a new version of ORDS, make sure you are aware of any new settings that have been introduced. Make sure you are not running on default values.

Revisit Your Server Directory Structure

Picture
Are you completely happy with the way you have your directories laid out on the older server? Did you remember to keep the logs on a different volume than the OS? If not, now is the time to take some time and map out the perfect directory structure, before you start the new install.

Upgrade Java

Might as well install the latest version of the JDK.

Don't Overcomplicate It

Do not over complicate the migration. I know APEX probably needs upgrading as well and it's tempting to do it at the same time, but I would advise against it. Take care of the Tomcat move first and then do the APEX upgrade afterward.

Tune Tomcat 

Picture
Out of the box, Tomcat is tuned for development use. As with GlassFish, there are a number of configurations you need to change to make sure you have a stable and scalable environment for ORDS to run in. Take a look at our post tuning-tomcat-for-apexords-in-production.html for some ideas.

Also, don't just convert your old GlassFish settings to their Tomcat equivalents. This is especially true if you did decide to move to a new server. If the new server has more memory then you can dedicate some more memory to the JVM. If the new server has an extra CPU then you can bump up the 'acceptorThreadCount' to increase throughput.

Re-Run Your Load Tests

Picture
Once the install is complete in your DEV/TEST environment, re-run the load tests you ran in the preparation step and compare the results. At worst, you should be matching the performance of your old GlassFish setup. I would, however, challenge yourself to deliver significant improvements given you will be running with the latest versions of the JDK, ORDS and Tomcat.

Keep tuning your Tomcat and ORDS configuration and re-running your load tests until you get the performance you need.

Conclusion

Migrating from GlassFish to Tomcat was probably not what you were hoping to be doing in 2018. If you approach the move with careful planning and solid execution, you can come out the other end with a more performant environment, happier users, and a platform to build on for the future.

Don't wait until you are forced to make the move, plan and execute your migration now, while you are able to decide the when. ​
2 Comments
Tiago
9/12/2018 11:47:14 am

Obrigado. Muito bom!

Reply
Leticia Campos
9/8/2020 06:56:22 pm

Thanks for this post. I was trying to replace my ORDS standalone with a new VM Tomcat/ORDS. Luckly it didnt connect to the database as it would have destroyed the ORDS objects.
Now I know I have to make a snapshot backup first of the database VM

Reply

Your comment will be posted after it is approved.


Leave a Reply.

    RSS Feed

    Popular Posts

    - APEX Dog Food
    - Cloud ERP & APEX Mashup
    - Modernizing EBS with APEX
    - Easy APEX_WEB_SERVICE
    - Running APEX in RDS
    - ORDS What & Why?

    Categories

    All
    APEX
    AWS
    Fusion Cloud ERP
    INTEGRATION
    MS GRAPH
    OCI
    ORDS
    PaaS
    RAD
    REST
    SOAP

    Archives

    October 2021
    February 2021
    January 2021
    October 2020
    September 2020
    June 2020
    May 2020
    April 2020
    February 2020
    January 2020
    October 2019
    September 2019
    August 2019
    July 2019
    June 2019
    April 2019
    March 2019
    February 2019
    January 2019
    December 2018
    November 2018
    October 2018
    September 2018
    August 2018
    July 2018
    June 2018
    May 2018
    April 2018
    March 2018
    February 2018
    January 2018
    September 2017
    August 2017
    July 2017
    June 2017
    February 2017
    January 2017
    December 2016
    November 2016
    October 2016
    September 2016
    August 2016
    July 2016

Company

About
Contact
Blog
  • Home
  • Projects
  • Blog
  • About Us
  • Contact Us