至于为什么使用BIRT我想在这里也不用过多说明了,公司从去年底(2013年)开始引入了BIRT,使用过程中也比较顺利,对于技术人员也比较容易上手。
使用BIRT做的第一个主要工作就是将原有项目中的报表分离为独立的服务(原有项目历时时间较久,且项目很大,各类报表有近百张,全是通过累代码的方式处理的,其实这个项目是做业务处理的,只不过也有报表要求,如此多的功能叠加给系统造成了极大的压力)。
报表顺利开发完成,可是部署时遇到了麻烦,由于项目很大,现场是使用集群部署的(4台WEB),本打算单独部署一个BIRT服务器用于报表展示,业务系统的4台WEB直接访问BIRT服务器,此时就出现了令人讨厌的
The viewing session is not available or has expired
“聪明的”技术人员查阅了一些资料后确定此问题为BIRT的BUG,将BIRT服务与项目服务部署在一起即可解决,这个方案当然会受到现场运维人员的极力反对,此后一度陷入僵局,技术人员无法解决,现场人员不愿意按此部署。
按照经验,session无效或者过期一般都是客户端设置问题,比如安全级别、隐私设置等等,于是去瞄了一眼,发现浏览器确实报错了:
果然是cookie设置问题!cookie禁用导致session无效,允许会话cookie,设置完就可以访问了:
坑爹啊,耗了一周了呀!
当然了,我们项目是企业内部使用,还可以控制用户的浏览器,但是如果是公网访问,无法控制用户浏览器怎么办呢?
查了BIRT相关的网站,这确实是个BUG,主要原因就是访问服务器只有通过IP访问导致的!(内网不都是这么干的么),公网访问想解决此问题也简单,将IP改为域名就好了!
不知道BIRT什么时候会修复此BUG,不过至少目前内、外网都能解决,解不解决也不该关心了(也行BIRT的研发团队也是这么想的)