[ 
https://issues.apache.org/jira/browse/HTTPCORE-127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12545510
 ] 

Oleg Kalnichevski commented on HTTPCORE-127:
--------------------------------------------

Hi Asankha

If you do not want to close the selector just don't. Just closing the server 
channel seems perfectly sufficient. The code below seems to work for me just 
fine (Ubuntu 7.10 / Sun JRE 1.5.0.11).

=====================================
        SelectionKey key = null;
        Selector selector = Selector.open();

        ServerSocketChannel serverChannel = ServerSocketChannel.open();
        serverChannel.configureBlocking(false);
        serverChannel.socket().bind(new InetSocketAddress(8080));
        key = serverChannel.register(selector, SelectionKey.OP_ACCEPT);
        System.out.println("Started... sleeping 5s");
        Thread.sleep(5000);

        // This will cause the server to stop accepting connections on port 8080
        key.cancel();
        serverChannel.close();
        //selector.close(); 
        System.out.println("Stopped... sleeping 10s");
        Thread.sleep(10000);

        // This will cause the server to resume accepting connections on port 
8080
        serverChannel = ServerSocketChannel.open();
        serverChannel.configureBlocking(false);
        serverChannel.socket().bind(new InetSocketAddress(8080));
        key = serverChannel.register(selector, SelectionKey.OP_ACCEPT);
        System.out.println("Re-Started... sleeping 10s");
        Thread.sleep(10000);
=====================================

Oleg

> Expose improved API for lifecycle management
> --------------------------------------------
>
>                 Key: HTTPCORE-127
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-127
>             Project: HttpComponents Core
>          Issue Type: Improvement
>          Components: HttpCore NIO
>    Affects Versions: 4.0-alpha6
>            Reporter: Asankha C. Perera
>             Fix For: 4.0-beta1
>
>
> Apache Synapse uses HttpCore and we would like to stop accepting new 
> connections to put our servers into a "maintenance" mode. In this mode any 
> in-flight requests already being served will continue as normal (i.e. 
> reading, writing etc) but new connections should be rejected, so that a load 
> balancer could direct new connections to another instance in the cluster. The 
> requirement is to then update configuration, apply patches or cleanly 
> shutdown etc. for maintenance without effecting any in-flight requests.
> Implementation wise I think this would be fairly straightforward as we can 
> remove OP_ACCEPT from the interested ops.
> On the mailing list Odi suggested that we tackle this at a broader level by 
> exposing lifecycle management APIs
> "I suggest create, start, stop, destroy methods in some classes/APIs 
> (semantics of JBoss Service MBeans)"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to