Насколько потокобезопасен является бережливость? re: Кажется, у меня есть запросы, мешающие друг другу

править

Очевидно, то, что я надеялся сделать, выходит за рамки бережливости ... Если я позабочусь о том, чтобы в порту никогда не было более одного клиента, все в порядке.

    Client dpayClient = null;
    if(dpay != null
            && (dpayClient = dpay.getClient()) != null) {

        try {
            dpayClient.pvCheck(requestParameters.getId());
        } catch (DPNoToolException e) {
            return;
        } catch (TException e) {
            log.warn("pvCheck had an exception", e);
        } finally {
            if(dpayClient != null) {
                dpay.returnClient(dpayClient);
            }
        }
    }

Фактическая бережливость повышается следующим образом.

private boolean initThrift(int port, Configuration conf) {
    TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();
    DPaymentHandler handler = new DPaymentHandler(conf);

    DumboPayment.Processor processor = 
        new DumboPayment.Processor(handler);

    InetAddress listenAddress;
    try {
        listenAddress = InetAddress.getLocalHost();
    } catch (UnknownHostException e) {
        LOG.error("Failed in thrift init", e);
        return false;
    }
    TServerTransport serverTransport;
    try {
        serverTransport = new TServerSocket(
                new InetSocketAddress(listenAddress, port));
    } catch (TTransportException e) {
        LOG.error("Failed in thrift init", e);
        return false;
    }

    TTransportFactory transportFactory = new TTransportFactory();
    TServer server = new TThreadPoolServer(processor, serverTransport,
            transportFactory, protocolFactory);

    LOG.info("Starting Dumbo Payment thrift server on " + 
            listenAddress + ":" + Integer.toString(port));
    server.serve();

    return true;
}

Наконец

На какое-то время застрял на этом ... Вполне может быть, я упускаю что-то очевидное. Я буду очень признателен за любую помощь с этим.

Если потребуется дополнительная информация, дайте мне знать. Там есть целый рот, поэтому я хотел постараться, чтобы материал был наиболее (надеюсь) актуальным.

9
задан juhanic 22 November 2010 в 10:47
поделиться