users@grizzly.java.net

Re: Socket TCP/IP KeepAlive

From: Ray Racine <ray.racine_at_gmail.com>
Date: Tue, 30 Mar 2010 11:40:18 -0400

Oleksly,

Thanks for the fast replies.

From SelectorThread.java

 /**
     * Sets the number of seconds before a keep-alive connection that has
     * been idle times out and is closed.
     *
     * @param timeout Keep-alive timeout in number of seconds
     */
    public void setKeepAliveTimeoutInSeconds(int timeout) {
        keepAliveStats.setKeepAliveTimeoutInSeconds(timeout);
        if (keyHandler != null) {
            keyHandler.setTimeout(timeout == -1
                    ? SelectionKeyAttachment.UNLIMITED_TIMEOUT: timeout *
1000L);
        }
    }

Between the client and the server is a NATing Load Balancer. This appliance
_will_ timeout and sever an idle connection unless some activity is induced,
e.g., a zero data packet. See
http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html Section 2.4 as the
use-case.

Say I use the above code and setKeepAliveTimeoutInSeconds(-1) // infinite
Will Grizzly send some sort of nuance packet to prevent the NAT/Load
Balancer from timing out my idle TCP connection?

I know adjustments can be done directly on the NATing appliance but I'd
still like to do it at the code level.

In other words, does setting the above achieve the same effect as
http://java.sun.com/javase/6/docs/api/java/net/Socket.html#setKeepAlive(boolean)
?

Sorry for so many questions today :)

Thanks,

Ray

On Tue, Mar 30, 2010 at 11:15 AM, Oleksiy Stashok
<Oleksiy.Stashok_at_sun.com>wrote:

> Ok, so to set idle timeout please use:
> gws.getSelectorThread().setKeepAliveTimeoutInSeconds(timeout);
>
> if you want to disable timeout - set "-1".
>
> WBR,
> Alexey.
>
> On Mar 30, 2010, at 16:59 , Ray Racine wrote:
>
> I'm configuring everything directly at the SelectorThread API using
> examples like GrizzlyWebServer.java, GrizzlyEmbeddedHttp.java etc.
>
> Ray
>
> On Tue, Mar 30, 2010 at 9:22 AM, Oleksiy Stashok <Oleksiy.Stashok_at_sun.com>wrote:
>
>> Hi Ray,
>>
>> in Grizzly we don't turn on standard socket keepalive mechanism, but use
>> our own (via SelectionKeyHandler API).
>>
>> If you'd share your Grizzly initialization code - I'll help to change keep
>> alive settings.
>>
>> WBR,
>> Alexey.
>>
>>
>>
>> On Mar 30, 2010, at 14:12 , Ray Racine wrote:
>>
>> I notice a number of KeepAlive values in Grizzly, however, I've been
>>> unable to find where in Grizzly at the socket level where Socket s,
>>> s.setKeepAlive (true) is invoked. My use case is to prevent the NAT from
>>> timing out an idle TCP/IP connection.
>>>
>>> In this case I'm seeking to sustain a dedicated connection between client
>>> and server with basic HTTP req/resp. I'd like to set the socket TCP keep
>>> alive but I don't see where to do it.
>>>
>>> Thanks,
>>>
>>> Ray
>>>
>>> --
>>> The object of life is not to be on the side of the majority, but to
>>> escape finding oneself in the ranks of the insane. - Marcus Aurelius
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>
>>
>
>
> --
> The object of life is not to be on the side of the majority, but to escape
> finding oneself in the ranks of the insane. - Marcus Aurelius
>
>
>


-- 
The object of life is not to be on the side of the majority, but to escape
finding oneself in the ranks of the insane. - Marcus Aurelius