Search By Google
Komentar
    Kalender
    Nopember 2009
    S S R K J S M
    « Feb    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30  
    Ngobrol Yuks
    Category
    Buy Your Wordpress E-commerce Theme. Buy Now



    Proactol







    UniqueHoodia



    PenisHealth



    MoreNiche



    SizeGenetics



    AppStore Charts

    Archive for the ‘utility framework’ Category

    JAVA : How to use Grizzly framework

    Rabu, Nopember 19th, 2008

    Dalam artikel ini akan dijelaskan bagaimana menggunakan Grizzly. Grizzly mempermudah kita dalam managemen NIO.

    1. Membuat class GrizzlyConnectionListener, bertugas me-listen pesan pada port tertentu apabila ada pesan yang
    masuk.

    public class GrizzlyConnectionListener {
    private static final int PORT=8000;
    /**
    * Init
    */
    public void init() {

    System.out.println(”listening for incomming TCP Connections on port : ” + f_port);
    try {
    //[1].
    Controller controller = new Controller();
    TCPSelectorHandler tcpSelectorHandler = new TCPSelectorHandler();
    tcpSelectorHandler.setPort(PORT); // TODO: abstract to JMX configuration

    Pipeline pipeline = new DefaultPipeline();
    pipeline.setMaxThreads(5); // TODO: abstract to JMX configuration
    controller.setPipeline(pipeline);

    // we need to create a listener that will not impose a timeout value, hence a BaseSelectionKeyHandler object is defined
    // refer to: http://www2.sebastiendionne.ca:8282/grizzly/grizzly-migration-guide-part-3/print.html
    BaseSelectionKeyHandler keyHandler = new BaseSelectionKeyHandler();
    tcpSelectorHandler.setSelectionKeyHandler(keyHandler);
    controller.addSelectorHandler(tcpSelectorHandler);

    final ProtocolChain protocolChain = new DefaultProtocolChain();

    protocolChain.addFilter(new TacProtocolFilter());
    //protocolChain.addFilter(new TacManagerFilter());
    protocolChain.addFilter(new TacValidatorFilter());
    ((DefaultProtocolChain)protocolChain).setContinuousExecution(true);

    ProtocolChainInstanceHandler pciHandler = new DefaultProtocolChainInstanceHandler() {
    public ProtocolChain poll() {
    return protocolChain;
    }

    public boolean offer(ProtocolChain instance) {
    return true;
    }
    };

    controller.setProtocolChainInstanceHandler(pciHandler);

    try {
    controller.start();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    System.out.println(”Starting Grizzly Listener …. on port “+PORT);
    System.out.println(”Waiting for connection ……!”);
    init();
    }

    Sedikit penjelasan tentang code diatas, lihat comment number :
    [1]. Start grizzly untuk listen pesan yang datang melalui koneksi TCP.

    Controller controller = new Controller();
    TCPSelectorHandler tcpSelectorHandler = new TCPSelectorHandler();
    tcpSelectorHandler.setPort(f_port);
    controller.addSelectorHandler(tcpSelectorHandler);

    Jika ingin menggunakan koneksi UDP atau SSL tambahkan SelectorHandler baru.
    Grizzly menangani beberapa protocol handler : TCPSelectorHandler, UDPSelectorHandler, SSLSelectorHandler. Kita juga bisa membuatt handler sendiri jika diinginkan dengan cara implements SelectorHandler.

    I said that Grizzly came with lot of default settings that will do the job for most of us. One of these settings is the build in ThreadPool. In Grizzly it’s called : Pipeline. You can change the Pipeline in the controller with a few lines.

    Pipeline pipeline = new DefaultPipeline();
    pipeline.setMaxThreads(5);
    controller.setPipeline(pipeline);

    Secara default SelectionKeyHandler pada Grizzly mempunyai timeout koneksi. Kita bisa mengubah timeout koneksi ini sesuai dengan yang kita inginkan, atau membuat permanen koneksi dengan server.
    Gunakan kode di bawah ini bila ingin mengubah nilai timeout :

    DefaultSelectionKeyHandler keyHandler = new DefaultSelectionKeyHandler();
    //keep connection for 30 minutes
    keyHandler.setTimeout(30 * 1000 * 60);

    tcpSelectorHandler.setSelectionKeyHandler(keyHandler);

    Pada contoh class listener di atas menciptakan koneksi yang permanen, tidak menggunakan timeout jadi harus menggunakan handler : BaseSelectionKeyHandler.

    tcpSelectorHandler.setSelectionKeyHandler(new BaseSelectionKeyHandler());

    2. Bagaimana kita membaca pesan dari client dan bagaimana kita memberi respon kepada mereka.
    ada 3 langkah :

    Pertama : buat sebuah class ParserProtocolFilter : Class filter ini akan mem-parse pesan yang datang dari client dan meng-extract kueri yang valid.

    Kedua : buat sebuah class ProtocolFilter : Class filter ini akan menerima kueri yang dikirimkan oleh filter sebelumnya dan akan memproses kueri.

    Ketiga : buat sebuah class ProtocolHandler yang akan menangani filter sebelumnya dan menentukan urutan

    final ProtocolChain protocolChain = new DefaultProtocolChain();

    protocolChain.addFilter(new ParserProtocolFilter());
    //protocolChain.addFilter(new TacManagerFilter());
    protocolChain.addFilter(new ProtocolFilter());
    ((DefaultProtocolChain)protocolChain).setContinuousExecution(true);

    ProtocolChainInstanceHandler pciHandler = new DefaultProtocolChainInstanceHandler() {
    public ProtocolChain poll() {
    return protocolChain;
    }

    public boolean offer(ProtocolChain instance) {
    return true;
    }
    };

    controller.setProtocolChainInstanceHandler(pciHandler);

    (lagi…)