powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / RESTFul и Jasperreports
25 сообщений из 26, страница 1 из 2
RESTFul и Jasperreports
    #39655612
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здравствуйте всем!
ребята подскажите что делаю не так? ошибок/исключений нет но и данных тоже нет )))

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
@Path("/reports")
public class Reports {
    @Context
    private HttpServletResponse response;

    CurrStateWagsDao cswd = new CurrStateWagsDaoImpl();

    JasperPrint jasperPrint;
    JasperReport jasperReport;

    @GET
    @Path("/pdfCurStateByOwner")
    public Response getPDFCurStateOwnerWags(@QueryParam("p") int p) {

        List<ByOwnerOfWags> wagsList = cswd.ownerWagsOnRoad(p);
        try {
            JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(wagsList);
            InputStream reportPath =
                    getClass().getClassLoader().getResourceAsStream("reports/CurrState.jasper");

            jasperPrint = JasperFillManager.fillReport(reportPath, new HashMap(), beanCollectionDataSource);
            response.setHeader("Cache-Control", "no-cache");
            response.setContentType("application/pdf");
            //            response.addHeader("Content-Disposition", "attachment; filename=report.pdf");
            response.addHeader("Content-Disposition", "inline; filename=report.pdf");
            ServletOutputStream servletOutputStream = response.getOutputStream();
            JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);

            servletOutputStream.flush();
            servletOutputStream.close();

        } catch (JRException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return Response.ok(jasperPrint).type("application/pdf").build();
    }
}
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655649
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
А отладка где?
ЗЫ.
Ты можешь его просто по урл вызвать. Без сервлета.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655650
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А отладка где?тьфу, логгер где?
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655654
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Музаффар,
А отладка где?
ЗЫ.
Ты можешь его просто по урл вызвать. Без сервлета.

извините за нубские вопросы (уже башка не шарит походу...)
отладка чего?

можете по подробнее на счет урл?
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655674
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помоему танцы с HttpServletResponse лишние. Я бы экспортнул во временный файл и файл бы отдал в Response.ok()
Content-Type лучше через аннотацию указать.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655680
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффарможете по подробнее на счет урл?Этот отчетник умеет быть сервером и отдавать pdf, word просто по урл в браузере. САМ!
http:127.0.0.1/jasper/myOtchet?param=123
Поиск.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655684
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

т.е. создать на сервере файл? и ссылку дать клиенту?
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655689
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
а для этого Jasperreports Server не нужен?
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655692
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МузаффарPetro123,
а для этого Jasperreports Server не нужен?
У нас в продакшене вроде утилита была какая то. Висела на порту.
Могу поискать.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655693
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо варник в томкат)
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655696
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39655703
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МузаффарBlazkowicz,

т.е. создать на сервере файл? и ссылку дать клиенту?
Ну, какую ещё ссылку??
Убираете всё что касается HttpServletResponse.
PDF экспортируете в файл, а не в outputstream
http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperExportManager.html
Временный файл создаёте средствами Java: File.createTempFile()
В Response.ok скармливаете этот файл.

Единственная проблема в том чтобы подчищать эти файлы, потому что вы не знаете в этом коде когда файл уже отправен клиенту.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656058
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

как я понимаю при file.deleteOnExit() удаляется только тогда когда программа/система завершится так?
и если программа работает то метод не будет работать... думаю это не совсем айс.

блин года 5 назад с сервлетами делал вроде никаких проблем не были... а тут вчера потратил пол дня и ещё не решил
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656129
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал чуть по другому,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
List<ByOwnerOfWags> wagsList = cswd.ownerWagsOnRoad(p);
        try {
            JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(wagsList);
            InputStream reportPath =
                    getClass().getClassLoader().getResourceAsStream("reports/test.jasper");

            jasperPrint = JasperFillManager.fillReport(reportPath, new HashMap(), beanCollectionDataSource);

            response = Response.ok(JasperExportManager.exportReportToPdf(jasperPrint));
            response.header("Content-Disposition", "inline; filename=\"report.pdf\"");
        } catch (JRException e) {
            e.printStackTrace();
        }
        return response.build();



вроде все проходит успешно, но застопорился при обработке на javascript'е ))))

хотя когда создал сервлет и по нему передавал все норм проработало, вот только там обращение было через a href, а тут из ajax хотел...
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656141
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,

Ну, это не очень хорошее решение по памяти. Каждый PDF документ целиком загоняется в память и только потом отправляется.
Сотня параллельных запросов и толстый PDF просто уложат ваш сервер.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656149
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
+1
Отчетные сстемы должны быть отделены от ИС как принтер отделен от ПВЭМ)))
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656167
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

а когда работать через ТемпФайл вроде тоже самое будет, или несовсем так?

Petro123,
т.е. все таки лучше поднять отдельный сервер отчетов? а что он будет возвращать? целый документ или что? как то не свосем соображаю пока
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656182
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффара когда работать через ТемпФайл вроде тоже самое будет, или несовсем так?

Ну, 100Gb RAM и 100Gb HDD это таки разные вещи. Но вы отчасти правы. В идеале формирование файла и его скачивание нужно разделять. Потому что как бы не разумно формировать один и тот же файл на каждую попытку скачивания.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффара что он будет возвращать?
При клике на кнопку Отчет запрос get и открытие pdf в этом же окне или рядом.
В твой ИС только урл на кнопку повесить с именем отчета.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656214
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока оставляю таким каким уже есть, пока что работает (знаю что как вы уже сказали проблемы могут быть с памятью)

З.Ы. конечно этот вопрос подходит больше фрондщикам, но все же позвольте спросить
у меня Content-Disposition ==> inline стоит т.е. на том же месте где был контент открывается результат которого не совсем хотел, как можно добиться чтоб открылся как во window.print();

и ещё один вопрос, пока работает по ссылке т.е. <a href="reports/pdfCurStateByOwner?p=0">PDF</a> можно ли сделать этот запрос через ajax?
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656217
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл сказать ещё одно

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
$.ajax({
          url: "reports/pdfCurStateByOwner", 
          data: {p: document.getElementsByClassName('active')[0].dataset.idrju}, 
          success: function (data) {
                              console.log(data);
                              window.print(data);
          }
})



когда принт то на печать дается вся страница а не ответ от сервера...
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656645
Ilya007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПомоему танцы с HttpServletResponse лишние. Я бы экспортнул во временный файл и файл бы отдал в Response.ok()
Content-Type лучше через аннотацию указать.
Еще и зазиповать можно сразу, и отдавать архив. И передаваться по сети будет быстрее и для хранения меньше места.
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656652
Ilya007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya007Еще и зазиповать можно сразу, и отдавать архив. И передаваться по сети будет быстрее и для хранения меньше места.
глупость написал, это же .pdf
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39656703
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так и растёт поколение, которое даже не слышало про Content-Encoding ...
...
Рейтинг: 0 / 0
RESTFul и Jasperreports
    #39657020
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

а что это даст в моем случае? если
то что формирует и то что console.log(data) пишет одинаковые, и когда сервирасами онлайн декодер пропускаю то получаю желанный пдф файл, но когда я передаю data на печать то получаю почему то всю страницу... вот и вопрос в чем дело?
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / RESTFul и Jasperreports
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]