润乾V3.55,V4.5双引擎在项目中的集成以及V4.5缓存同步设置
V3.55及v4.5双引擎及缓存同步设置 |
项目背景
武汉公积金项目中的报表系统使用的是润乾报表3.55版本,为了满足项目中新的需求,希望使用V4.5版本的功能,同时又想避免3.55版本升级到4.5的工作量。为了实现这一要求,要在项目中使用V3.55,V4.5双引擎。
为了减轻服务器的负载压力,新添加一台服务器做负载均衡,V4.5完成的报表可以实现集群时的缓存同步,能够更好地适应负载均衡的需求。所以用v4.5实现的新的报表需求还要用上缓存同步的技术。
搭建双引擎的项目环境
已经阶段性完成的项目是V3.55的环境,现在要将v4.5的报表配置集成到原来的项目中。在此使用设计器提供的集成到项目的功能来实现,集成步骤如下:
打开V4.5报表设计器,使用集成到项目功能。
如下图
设置项目集成目录及授权
进入项目所在目录,发现V4.5的配置文件以及报表引擎jar包并没有集成进来,通过设计器控制台发现是jar包拒绝访问导致,如下图
解决办法:
将lib下的所有jar包的只读属性去掉,如下图所示:
去掉只读属性后重新集成到项目即可
集成完成后的核对过程
必要的配置文件
集成完成检查必要的配置文件以及jar包时候正确集成,如下图看到的v4.5的配置文件
报表引擎jar包
可以看到V4.0使用的jar包已经集成进来。
检查web.xml中配置
1:是否配置了reportServlet
2:是否配置了configFile
3:是否引入了v4.5使用的tag标签tld文件
检查是否集成了v4.5的打印使用的jar包runqianReport4Applet.jar
注意:V4.5对于数据源的配置是在reportConfig.xml中,修改其中的dataSource参数值正确配置数据源。
对v4.5报表集群时缓存同步的配置
使用缓存同步的原因以及润乾的解决办法
为什么时候缓存同步
早期的服务器集群,一个客户端在一个访问周期里,总是固定访问一台服务器,以保持session的一致。可是随着对负载均衡的要求越来越高,这种模式不再能满足需求。举例来说,同时有100个客户端访问服务器,共有5台服务器集群,因此每台服务器分配了20个客户端,一段时间以后,陆续有80个客户端终止访问,剩余的20个客户端碰巧都是同一台服务器上的。此时这台服务器很忙,而别的服务器很闲。
润乾的解决办法
润乾报表提供了集群服务器之间通讯的能力,彻底解决了负载均衡时服务器之间跳转访问带来的缓存同步的问题。其原理是:
首先,客户端第一次访问报表服务器,A机器计算了报表并在A机器作了缓存,当客户端第二次访问时,例如此时跳转到B机器,B机器根据缓存id判断出是A机器做的缓存,于是B机器向A机器发送缓存请求,A机器读取缓存并把缓存结果发送给B机器,B机器再把结果返回给客户端。
优势
1、 应用服务器可以使用更加先进的集群能力,可以实现更加合理的负载均衡
2、 在集群过程中,不仅仅实现了session同步,还实现了报表缓存同步
3、 缓存同步使得服务器的运算次数大大减少,比如客户端一共访问了N次报表,每个报表执行了M次的翻页导出打印等操作,如有缓存同步,服务器只需要运算N次;如果没有缓存同步,而碰巧每一次翻页等操作都跳转到别的服务器(假设最糟糕的情况),服务器需要运算N*M次。
配置缓存同步的实现步骤
在reportConfig.xml文件中做如下配置:
<config> <!– 配置缓存机器和缓存端口号–>
<name>clusterMember</name>
<value>A,192.168.0.59,8087;B,192.168.0.48,8087;</value>
</config>
<config> <!– 配置是否共享缓存目录–>
<name>isCachedFileShared</name>
<value>yes</value>
</config>
<config> <!– 配置缓存共享目录–>
<name>cachedReportDir</name>
<value>\\192.168.0.59\cached</value>
</config>
重起服务器,即可实现集群时缓存同步。
双引擎集成完毕后的测试
报表展示
V3.55发布的报表:展示正常
V4.5发布的报表:展示正常
报表打印
V3.55发布的报表:打印正常
V4.5发布的报表:打印正常
报表导出
V3.55发布的报表:导出到pdf,word,excel,txt正常
V4.5发布的报表:导出到pdf,word,excel,txt正常
报表填报
V3.55发布的报表:填报正常
V4.5发布的报表:填报正常