GitHub

您所在的位置:网站首页 帆软报表嵌入到自有系统 GitHub

GitHub

2024-07-16 06:16| 来源: 网络整理| 查看: 265

fine-report

帆软报表10.0嵌入集成,基于spring boot,可扩展 spring cloud。无侵入,高扩展。

本质是springboot 嵌入式tomcat提供壳子启动以外部资源启动。 可以自行更新帆软最新lib,自行更新数据源说使用jar 通过类加载的顺序,自定义功能生成classes文件之后引入 配置 准备帆软服务器文件

帆软官网下载指定系统类型的服务器部署版的包。

帆软文件路径

​ 准备帆软文件的DOC_BASE路径,例如设置为/data/fr10-web

​ 下载最新版本finereport10,将webapps/webroot/下所有文件和文件夹复制都**/data/fr10-web/** 下

部署 打包 mvn clean package -DskipTest=true 运行 java -Xmx1g -Xms1g \ -DDOC_BASE='/data/fr10-web' \ -Dloader.path="BOOT-INF/classes/,file:/data/fr10-web/WEB-INF/classes,file:/data/fr10-web/WEB-INF/lib,BOOT-INF/lib/,/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/tools.jar" \ -jar hdsp-fr-server.jar > ./logs/hdsp-fr-server.log 2>&1 &

重点:

loader.path : loader.path为spring boot loader的lib包加载目录,同时⚠️loader.path的顺序为加载类的顺序。指定值中

BOOT-INF/classes/, hdsp-fr-server.jar包内Spring-Boot-Classes目录。 BOOT-INF/lib/,hdsp-fr-server.jar包内BOOT-INF/lib/目录。 /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/tools.jar 这个修改,修改为服务器的java tools包的路径,在$JAVA_HOME/lib/tools.jar下,需要指定为绝对路径。 帆软的jar,指定绝对目录,在DOC_BASE 下 lib。例如DOC_BASE 为/data/fr10-web ,指定为file:/data/fr10-web/WEB-INF/lib。 帆软重载的classes,指定绝对目录,在DOC_BASE 下classes。例如DOC_BASE 为/data/fr10-web,指定为file:/data/fr10-web/WEB-INF/classes。 运行 浏览器访问:http://127.0.0.1:8080 帆软地址:http://127.0.0.1:8080/decision。

访问帆软模板:http://127.0.0.1:8080/decision/view/report?viewlet=GettingStarted.cpt,其中GettingStarted.cpt是帆软默认提供的。

实现 内置tomcat定制化

第一种方式是通过通用的 Web 容器工厂 ConfigurableServletWebServerFactory,来定制一些 Web 容器通用的参数:

@Component public class MyGeneralCustomizer implements WebServerFactoryCustomizer { public void customize(ConfigurableServletWebServerFactory factory) { factory.setPort(8081); factory.setContextPath("/hello"); } }

第二种方式是通过特定 Web 容器的工厂比如 TomcatServletWebServerFactory 来进一步定制。下面的例子里,我们给 Tomcat 增加一个 Valve,这个 Valve 的功能是向请求头里添加 traceid,用于分布式追踪。

class TraceValve extends ValveBase { @Override public void invoke(Request request, Response response) throws IOException, ServletException { request.getCoyoteRequest().getMimeHeaders(). addValue("traceid").setString("1234xxxxabcd"); Valve next = getNext(); if (null == next) { return; } next.invoke(request, response); } }

跟第一种方式类似,再添加一个定制器,代码如下:

@Component public class MyTomcatCustomizer implements WebServerFactoryCustomizer { @Override public void customize(TomcatServletWebServerFactory factory) { factory.setPort(8081); factory.setContextPath("/hello"); factory.addEngineValves(new TraceValve() ); } } PropertiesLauncher

springboot 提供的类加载机制。可以通过这个扩展加载方式。指定外部jar的加载方式。打包时指定repackage 会默认选择PropertiesLauncher。

核心代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3