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

Код: 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
05.06.2018, 14:50
    #39655649
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTFul и Jasperreports
Музаффар,
А отладка где?
ЗЫ.
Ты можешь его просто по урл вызвать. Без сервлета.
...
Рейтинг: 0 / 0
05.06.2018, 14:51
    #39655650
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTFul и Jasperreports
Petro123А отладка где?тьфу, логгер где?
...
Рейтинг: 0 / 0
05.06.2018, 14:54
    #39655654
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTFul и Jasperreports
Petro123Музаффар,
А отладка где?
ЗЫ.
Ты можешь его просто по урл вызвать. Без сервлета.

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

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

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

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

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

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

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

Код: 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
06.06.2018, 09:51
    #39656141
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTFul и Jasperreports
Музаффар,

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

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

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

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

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

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

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

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


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