bidiDemo.server.Server.java Source code

Java tutorial

Introduction

Here is the source code for bidiDemo.server.Server.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package bidiDemo.server;

import bidiDemo.common.MessageService;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.thrift.TProcessor;
import org.apache.thrift.TProcessorFactory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;

/**
 *
 * @author rarora
 */
public class Server {
    private int port;
    private TServerTransport transport;

    public Server(int p) throws TTransportException {
        port = p;
        transport = new TServerSocket(port);
    }

    public void init() {
        System.out.println("Initializing server...");

        final MessageDistributorAndHandler mdh = new MessageDistributorAndHandler();
        //new Thread(mdh.new Messenger()).start();

        // Using our own TProcessorFactory gives us an opportunity to get
        // access to the transport right after the client connection is
        // accepted.
        TProcessorFactory processorFactory = new TProcessorFactory(null) {
            @Override
            public TProcessor getProcessor(TTransport trans) {
                MessageServiceClient msgClient = new MessageServiceClient(trans);
                mdh.addClient(msgClient);
                System.out.println("Client added to list.");
                return new MessageService.Processor(mdh.new MessageServiceHandler(msgClient));
            }
        };

        TThreadPoolServer.Args serverArgs = new TThreadPoolServer.Args(transport);
        serverArgs.processorFactory(processorFactory);
        TServer server = new TThreadPoolServer(serverArgs);
        System.out.println("Server started.");
        server.serve();
    }

    public static void main(String[] args) {
        try {
            Server server = new Server(9091);
            server.init();
        } catch (TTransportException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}