How To Enable SO_KEEPALIVE For The GlassFish Server ORB
Last updated on NOVEMBER 05, 2016
Applies to:Oracle GlassFish Server - Version 2.1.1 and later
Information in this document applies to any platform.
***Checked for relevance on 17-Jul-2013***
Consider a scenario where a typical application is serving a few hundred Thin Native Clients located at multiple sites of a corporate network as well as at external sites. The clients run on PCs; a running client on average has one open connection to a GlassFish's IOP-SSL port 37884, and 2 or 3 connections to the non-SSL IOP port 37886, sometimes more.
These IOP connections turn stale when a user simply switches off their PC or when a firewall has seen no traffic for a number of hours. In both cases, the GlassFish Server receives neither a TCP FIN nor a TCP Reset, so the connection stays open from GlassFish's point of view and indefinitely ties up a worker thread (if SSL) and an NIO Selector with its three associated auxiliary open file descriptors. Available worker threads would soon be exhausted, necessitating a GlassFish restart.
The GlassFish ORB needs a way to enable SO_KEEPALIVE, so that stale connections will be detected and closed after a few hours, and the associated resources freed.
Sign In with your My Oracle Support account
Don't have a My Oracle Support account? Click to get started
Million Knowledge Articles and hundreds of Community platforms