Слишком много файлов открываются при использовании универсального упаковщика с внешним файлом packager.xml - PullRequest
0 голосов
/ 26 апреля 2019

Я использую jpos 2.1.0, где я использую xml-файл внешнего упаковщика для клиента iso8583.Из-за большого количества запросов в течение двух или трех дней я столкнулся с «Открыто слишком много файлов», и я установил ulimit -n = 50000. Я сомневаюсь, что файлы упаковщика не были закрыты должным образом из-за превышения этого лимита.Пожалуйста, помогите мне правильно закрыть открытый файл.

    JposLogger logger = new JposLogger(isoLogLocation);
    org.jpos.iso.ISOPackager customPackager = new GenericPackager(isoPackagerLocation+iso8583Properties.getPackager());
    BaseChannel channel = new ASCIIChannel(iso8583Properties.getServerIp(), Integer.parseInt(iso8583Properties.getServerPort()), customPackager);
    logger.jposlogconfig(channel);

    try {
        channel.setTimeout(45000);
        channel.connect();
    }catch(Exception ex) {
        log4j.error(ex.getMessage());
        throw new ConnectIpsException("Unable to establish connection with bank.");
    }

    log4j.info("Connection established using ASCIIChannel");

    ISOMsg m = new ISOMsg();
    m.set(0, "1200");
            ........
    m.set(126, "connectIPS");

    m.setPackager(customPackager);
    log4j.info(ISOUtil.hexdump(m.pack()));
    channel.send(m);
    log4j.info("Message has been send");

    ISOMsg r = channel.receive();
    r.setPackager(customPackager);
    log4j.info(ISOUtil.hexdump(r.pack()));
    String actionCode = (String) r.getValue("39");

    channel.disconnect();
    return bancsxfr;
}

1 Ответ

0 голосов
/ 27 апреля 2019

Вы знаете, когда вы открываете файл, сокет или канал, вам нужно закрыть его, верно?

Я не вижу finally в вашей попытке закрыть канал.

У вас там огромная утечка.

...