第十六章 BIRT疑难杂惑清理

报表session与应用session常识普及 报表集成到项目中可能会有一个疑问就是系统应用和报表应用在一个web服务器下,那系统session和报表session是不是一个session呢?如果不是那会不会有冲突呢? 立即下载

第十四十五章还在书写中,先就目前BIRT比较集中的一些疑难杂惑进行解决。

问题一:把runtime包中自带的birt.war发布到Tomcat6上,运行后,首页面可以显示,但当点击"

View Example "时,加载报表就报错.错误内容如下:


或者在运行过程中出现:Caused by: java.lang.OutOfMemoryError: PermGen space

问题原因:java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法: 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 或者set JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

最佳实践:尽量用公用库,用户库只保留必须的极简化包。


问题二:集群环境访问报表出现birt the viewing session is not avaliable or has expired

问题描述:

http://11.23.26.3:8084/biReport/frameset?__report=VIP_kefu.rptdesign&__masterpage=true&__format=html&__parameterpage=true&__toolbar=true&__showtitle=false

我采用上面的url,在一个项目中访问另一个项目birtReport中的birt报表,发生错误:

birt the viewing session is not avaliable or has expired

问题原因:session 失效

BIRT源码中session来自如下这段代码:

public static final String GENERAL_ERROR_NO_VIEWING_SESSION = "birt.viewer.error.noviewingsession";

birt.viewer.error.noviewingsession=The viewing session is not available or has expired.

ViewingSessionUtil.getSession( request );

如果在WEB-INF\viewer.properties 进行了如下的设置

# [VIEWING SESSION CONFIGURATION]
# The BIRT viewing session is a sub-session of the HTTP session.
# An HTTP session can have multiple BIRT viewing sessions.
# Each time a new viewer is opened, a new viewing session is created. 
# The following parameters are used to configure the viewing session
# management.
# If the matching HTTP session expires, all the viewing sessions
# attached to it will expire as well.

# Timeout value in seconds after which a viewing session will expire.
# The value 0 means that a session will never expire, and the cached files
# will never be cleant unless the belonging HTTP session expires.
viewer.session.timeout=1800
# [VIEWING SESSION CONFIGURATION]
# The BIRT viewing session is a sub-session of the HTTP session.
# An HTTP session can have multiple BIRT viewing sessions.
# Each time a new viewer is opened, a new viewing session is created. 
# The following parameters are used to configure the viewing session
# management.
# If the matching HTTP session expires, all the viewing sessions
# attached to it will expire as well.
# Timeout value in seconds after which a viewing session will expire.
# The value 0 means that a session will never expire, and the cached files
# will never be cleant unless the belonging HTTP session expires.
viewer.session.timeout=1800
# Timeout value in seconds after which a viewing session will expire.
# The value 0 means that a session will never expire, and the cached files
# will never be cleant unless the belonging HTTP session expires.
viewer.session.timeout=1800

在tomcat或者weblogic中也设置了session timeout时间,依然不能解决这个问题,

那么需要设置你的IE,用cookie来保持session

方法如下:

IE - Intetnet 选项 - 隐私 - 设置:这里有个拉动条,可以设置IE的cookie。将它调到“低”或者“最低”,可以达到解决问题的目的。

但客户通常是懒惰的,这个时候还有一种方案,用hostname代替前面的IP来访问报表
http://bi2.query.com:8084/biReport/frameset?__report=VIP_kefu.rptdesign&__masterpage=true&__format=html&__parameterpage=true&__toolbar=true&__showtitle=false


问题三:javascript出现失效,自定义的javascript无法访问

解决方案:设置默认的render格式为html,注意在designer中的javascript路径和tomcat的javascript路径是不同的,尽量配置使用相对路径

 问题四:怎么自定义打印

问题描述:想不使用birtviewer提供的打印工具栏,自己在页面上或者定义一个工具栏,那么可以参考birtviewer提供的jsp页面自己写一份,也可以利用动态文本在html代码中书写如下内容的鼠标触发事件:

<script>
self.moveTo(622,722);
self.resizeTo(1,1);
document.execCommand('print','true','true');
window.opener="anyone";
window.close();
</script>
window.open(path + '/output?__report=/report/oms/report.rptdesign&orderId=' + orderId);

问题五:导出Excel出现空行

这是java类库在导出microsoft excel时出现的错误,根源不在BIRT,而在microsoft office的闭源,导致java excel类库不完善。

解决方案,先用html格式的render打印;在制作报表的时候,分组信息尽量不要单独成一行,表头表尾,单元格头尾尽量去掉。

后面还会继续就BIRT问题提供解决方案。


从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南 本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。 阅读详情

相关推荐

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

birt session 过期问题,跨域问题

The viewing session is not available or has expired   最近研究birt的使用,发现birt不支持集群。 所以我就另外搭建了一个tomcat,做专门的birt报表服务器。那么我就需要把它继承在现有的web程序中。用的是iframe。 发现,还是有问题,总是报错“The viewing session is not available or...

kanpiaoxue的专栏 606

C++五子棋人机对战

使用C++,开发五子棋人机对战,快速提升C++项目开发能力。

程序员Rock的博客 5万+

birt跨域session失效问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33696106的博客 477

[附源码]计算机毕业设计Python财务管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程项目运行环境配置:Pychram社区版+py项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;3.mysql环境:建议是用5.7版本均可。

巧灵计算机程序设计 1067

新手小白如何学习编程

学习目标推荐第一门语言优势网站 / APP 开发(前端)JavaScript浏览器原生支持,能快速做出可视化效果后端 / 服务器 / 数据分析Python语法简洁像英语,库多、应用广(入门友好)游戏开发先用电竞入门,再转专业引擎硬件 / 嵌入式(比如单片机)C 语言贴近硬件,行业标准办公自动化(Excel / 文档处理)Python快速解决重复工作(比如批量改文件)👉新手首选推荐。

2501_94331842的博客 2232

基于Eclipse的Birt报表开发常见问题

最近因为工作需要,开始研究基于Eclipse的birt报表开发,由于以前未曾接触过,在研究的过程中遇到一些问题,现将其整理成文,以作备忘,也希望对初次接触birt的人有一些帮助(我想对于初次接触birt的人很可能也遇到这些问题)。   这篇文章不是一步一步地学习birt,但你在学习birt的过程中很可能遇到我下面整理出来的这些问题和提到的注意事项。  对于birt的介绍,大家上网去搜索,比...

JavaKeeper 940

汽车IVI中控开发入门及进阶(九):显示屏

显示屏Display panel和触控屏Touch panel,可以说随着汽车四化的进展,屏越来越多,越来越大,越来越高清,成为IVI中控、智能座舱系统的重要组成部分。比如如下一个电阻触摸屏。正文:显示屏主要功能就是显示,车载内容和信息的传递全靠显示屏,目前车载显示屏的种类可以分为:LCD液晶显示屏(TFT(薄膜晶体管)驱动的有源矩阵液晶显示,再细分IPS、TFT、SLCD,这几个子类)、LED显示屏(用 LED发光二极管作为背光光源)、OLED 显示屏。

码农17年的博客 2526

birt报表视图区不可用或者已经过期解决办法

问题 : - 视图区不可用或者已经过期。 org.eclipse.birt.report.exception.ViewerException: 视图区不可用或者已经过期。 场景 : 我的报表项目和工程项目是独立的,报表是iframe嵌入到项目中的 ,部署在tomcat7下的,winows2003服务器,放在同一tomcat下,IE,火狐,谷歌访问都没问题,部署在不同机器上的tomc...

友 善 ,分 享 ,非 诚 ,勿 扰 1014

芒果YOLO11改进12:即插即用 | 独家原创改进最新PWConv核心结构|来自最新CVPR2023顶会,

即插即用 | 独家原创改进最新PWConv核心结构|来自最新CVPR2023顶会,

包括YOLOv5、YOLOv7、YOLOv8等模型改进 558

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(三)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)A.错误B.正确参考答案:BA.getB.try_getC.peekD.put参考答案:B。

qq_42135020的博客 1917

第十六章 BIRT报表疑难杂惑清理(续)

16.2 关于BIRT分组报表打印或者导出EXCEL出现空白行的解决方案 上一节讲过怎么去除页眉页脚,组眉组脚的空行,不过这还不足以满足中国式复杂的报表。BIRT分组报表是一个非常好用的分组利器,无奈客户通常要求直接导出或者打印的EXCEL就格式良好,不允许有空行。俗话说懒人创造生活,背后的意思的勤快的人被生活创造。程序员通常就是被生活创造的那一种人。之前第十一章讲过可以在脚本中定义变量,可

huazaichang的专栏 1948

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

data+scenario+science+insight 649

第十六章 BIRT报表疑难杂惑清理(续2)

16.3 复杂的中国式报表统计 在现实生活中我们会遇到很多复杂的中国式报表,例如在一个报表中,根据某一列进行统计的前十名后十名,还有根据另外一列统计的前十名后十名,比较离奇的是,不同列的前十名后十名需要放在同一行,整合在同一个表中。又比如存在这样一种动态的情况,比如汇率牌价,利率牌价,股价等,需要统计某一币种某一日的初始价,结束价,最高价,最低价,而且这些数值也是需要放在同一行。这种情况下,

huazaichang的专栏 795

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

BIRT 错误:The viewing session is not available or has expired

找了好多,就这个解决了!感谢。 原文出错:http://kanpiaoxue.iteye.com/blog/1258590 转载于:https://www.cnblogs.com/KeepYongth/p/6900814.html

793

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

org.eclipse.birt.report.exception.ViewerException: The report file does not exist or contains erro

birt部署到本地项目中, 出现了如上

birdCcc的专栏 3307

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

BIRT Viewer 参数配置详解

 一.web.xml1> 参数配置context-param      Default locale setting.     设置默认的Locale信息。 -->   BIRT_VIEWER_LOCALE  en-US        Default timezone setting.     Examples: "Europe/Paris"

山的那边 1万+

birt合并单元格

设置rowspan和show字段 DisTime disTime = this.disTimeService.queryDisTime(schoolYearCode, semesterCode, campusCode); List&lt;ClassLessonVo&gt; list = null; if(disTime!=null){ list = this.classTimet...

u011375315的博客 2724

birt学习笔记(连载)

一、去掉Birt表格下自动生成的日期时间 在报表下点击Xml Source标签,打开xml,找到                                                         html                     new Date()]]>

Hello World! 7553

birt报表插件,实现数据报表(二)

之前简单的写了下基于jdbc数据源的报表使用,但是发现图片上传不上去,不知怎么回事...... 对于birt布局展现部分就不说了,大致看一下就知道,但是数据源这个方面用过的人应该都有些麻烦, 1,用jdbc只能通过sql语句查询的结果填充到表中,如果一条语句不能解决问题,或者需要写很复杂的sql语句也是不容易 2,使用scripted data source 这个可以解决上面的问题,...

沉浮 724
上一篇: 第十五章 高级特性-开放源码:BIRT报表CVS构建
下一篇: 精通BIRT:Eclipse商务智能报表工具开发实践指南 (1-16章的目录明细)
freedom1993
博客等级 码龄12年 25粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值