润乾V3.55,V4.5双引擎在项目中的集成以及V4.5缓存同步设置

V3.55v4.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的打印使用的jarrunqianReport4Applet.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发布的报表:导出到pdfwordexceltxt正常

V4.5发布的报表:导出到pdfwordexceltxt正常

报表填报

V3.55发布的报表:填报正常

V4.5发布的报表:填报正常

热门文章