Предел размера JasperReport - PullRequest
2 голосов
/ 13 февраля 2009

Есть ли способ установить ограничение на размер JasperReport? Мы только что посмотрели на Heapdump WebSphere 6.1, и кто-то попытался создать отчет, а в куче было 1,5 ГБ памяти. И это поставило наш сервер Websphere на колени. Спасибо, T

Ответы [ 3 ]

2 голосов
/ 13 февраля 2009

Я не знаком с JasperReports, но вы можете обернуть свои потоки ввода / вывода , чтобы гарантировать, что объем данных, считываемых / записываемых, не превышает определенный предел.

OutputStream пример:

public class LimitedSizeOutputStream extends OutputStream {

    private final OutputStream delegate;
    private final long limit;
    private long written = 0L;

    /**
     * Creates a stream wrapper that will throw an IOException if the write
     * limit is exceeded.
     * 
     * @param delegate
     *            the underlying stream
     * @param limit
     *            the maximum number of bytes this stream will accept
     */
    public LimitedSizeOutputStream(OutputStream delegate, long limit) {
        this.delegate = delegate;
        this.limit = limit;
    }

    private void checkLimit(long byteCount) throws IOException {
        if (byteCount + written > limit) {
            throw new IOException("Exceeded stream size limit");
        }
        written += byteCount;
    }

    @Override
    public void write(int b) throws IOException {
        checkLimit(1);
        delegate.write(b);
    }

    @Override
    public void write(byte[] b) throws IOException {
        checkLimit(b.length);
        delegate.write(b);
    }

    @Override
    public void write(byte[] b, int off, int len) throws IOException {
        checkLimit(len);
        delegate.write(b, off, len);
    }

    @Override
    public void close() throws IOException {
        delegate.close();
    }

}

Так же просто обернуть InputStream .

1 голос
/ 20 февраля 2010

JasperReports теперь имеет «регуляторы отчетов», которые ограничивают размер вывода отчета. Например, вы можете установить следующие параметры конфигурации:

net.sf.jasperreports.governor.max.pages.enabled=[true|false]

net.sf.jasperreports.governor.max.pages=[integer]

См. эту публикацию на форумах JasperReports для получения дополнительной информации.

0 голосов
/ 02 июня 2009

Вы пытались ограничить количество строк в наборе записей, возвращаемых из базы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...