Subversion Repositories SmartDukaan

Rev

Rev 4644 | Rev 4651 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.payment.service;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocolFactory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.server.TThreadPoolServer.Args;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
import org.apache.thrift.transport.TTransportFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import in.shop2020.payment.service.handler.PaymentServiceHandler;
import in.shop2020.payments.PaymentService.Iface;
import in.shop2020.payments.PaymentService.Processor;
import in.shop2020.thrift.clients.config.ConfigClient;
import in.shop2020.utils.ConfigClientKeys;

public class PaymentServer {
        private static Logger logger = LoggerFactory.getLogger(PaymentServer.class);
        
        private static PaymentServiceHandler handler;
        
        private static Processor<Iface> processor;
        
        public static String dbHost;
        
        public static void main(String[] args){
                try{
                        int port = 9012;
                        try {
                            dbHost = "jdbc:mysql://" + ConfigClient.getClient().get(ConfigClientKeys.payments_service_db_hostname.toString()) + "/payment";
                            String portNo = ConfigClient.getClient().get(ConfigClientKeys.payments_service_server_port.toString());
                            port = Integer.parseInt(portNo);
                        }catch(Exception e){
                            logger.warn("Unable to get port number from the Config server because of:", e);
                        }

                        // Setting dbHost env property to make this value accessible in context.xml 
                        // while spring context creation.
                        System.setProperty("dbHost", dbHost);
                        
                        
                handler = new PaymentServiceHandler();
                processor = new Processor<Iface>(handler);

                logger.info("DB Connection String is: " + dbHost);
                org.apache.commons.dbcp.BasicDataSource ds = (org.apache.commons.dbcp.BasicDataSource)handler.context.getBean("dataSource");
                logger.info("URL read by data source before setting is: " + ds.getUrl());
                ds.setUrl(dbHost);
                logger.info("URL read by data source after setting is: " + ds.getUrl());
                
                        TServerTransport serverTransport = new TServerSocket(port);
                        TTransportFactory tFactory = new TFramedTransport.Factory();
                        TProtocolFactory pFactory = new TBinaryProtocol.Factory();
                        
                        Args serverParams = new Args(serverTransport);
                        serverParams.processor(processor);
                        serverParams.transportFactory(tFactory);
                        serverParams.protocolFactory(pFactory);
                        TServer server = new TThreadPoolServer(serverParams);
                        
                        logger.info("Payment service started on port 9012");
                        server.serve();
                }catch(Exception ex){
                        ex.printStackTrace();
                }
        }
}