【发布时间】:2016-09-30 20:19:58
【问题描述】:
我有一个 Spring Boot 应用程序,它包装了 Eclipse BIRT 报告工具并通过 winsw 作为 Windows 服务运行。当渲染引擎生成的带有图表的报告时,Spring Boot 将图像文件保存在它在Windows/Temp 目录中创建的文件夹中。此文件夹及其内容在初创公司中持续存在,这是不可取的。
应用程序依赖于存在于预定义位置的数据文件夹,该位置存在于软件包的所有安装中。鉴于此,理想的情况是在包的数据文件夹中创建可以轻松管理的文件夹。有什么方法可以做到这一点(最好是允许嵌入式 Tomcat 服务器查找和提供文件的方法)?
编辑:用@Magnus 的回复结果更新
有问题的图像是由 ReportEngine 渲染过程生成的,所以我认为这是 BIRT 的事情而不是 Tomcat 的事情,但只是为了确保我将 server.tomcat.basedir=path/to/directory 添加到我的 application.properties 文件中。仍然写信给Windows/Temp。
然而,这个回复让我开始思考,我发现 BIRT 的 EngineConfig 有一个setTempFolder 方法。将其设置为指向所需的文件夹(属性文件中的 server.tomcat.basedir 值)会导致 BIRT 在临时文件夹中工作,但生成的图像仍保存到 Windows\Temp 目录中。
编辑:更新 2
我能够在 EngineConfig 中设置 birt.viewer.working.path 属性,并通过从 ReportDesignHandle(或者可能是 ReportRunnable)中检索值来确认它是否已设置。更改值后,ReportEngine 现在在正确的目录中工作,但仍将图像放入Windows\Temp 文件夹中。覆盖 java.io.tmpdirproperty 什么也没做。
编辑:更新 3
这种工作.. 在 HtmlRenderOption 中设置图像文件夹位置会导致应用程序不会为 Windows\Temp 中生成的图像创建文件夹(耶!)。但是,它也没有将图像放在 HtmlRenderOption 中指定的位置(嘘!),所以我不确定在哪里可以定期清理这些图像文件。
【问题讨论】:
标签: java eclipse spring spring-boot birt