Comecei a usar JRDataSource como dados do meu relatório, porém ele funciona apenas na primeira vez.Depois tenho que restarta o projeto para gerar outro relatório.
Li que não se pode reutilizar o JRDataSource, esse é o problema.Porém não achei uma solução, nem o google está ajudando 
Consegui, resolver em relação ao relatório principal.
Porém nesse relatório, o page header é um sub-relatório ele é exibido apenas na primeira página.
eu passo o datasource por parametro assim:
parametros.put(“EMPRESA_DATA_SOURCE”, factory_empresa.createDatasource());
Alguém sabe como passar um parametro de array para os sub-relatórios?