【仅供内部供应商使用,不提供对外解答和培训】
...
在插件开发中,我们经常需要把一些配置信息保存到服务器中,以便重启服务器的时候能够记录上一次保存的信息,这一点和设计器配置信息的保存和读取差不多。
要保存信息到服务器上,一般来说,我们可以把数据存储到数据库或者xml文件中,这里介绍的是把数据保存到xml文件中。
主要使用接口XMLFileManagerProvider。
考虑到FineReport是支持本地设计和远程设计的,所以配置文件在读写的时候也需要考虑是否是远程环境,此外,还需要考虑集群环境中,配置文件的读取。
...
| Code Block |
|---|
int count = ExpirationConfigManager.getProviderInstance().getWarningDayCount(); |
通过下面的方式,就可以把内存中信息保存到xml文件下了:
| Code Block |
|---|
ExpirationConfigManagerProvider configManager = ExpirationConfigManager.getProviderInstance(); configManager.setWarningDayCount(warningCount); configManager.setValidMonthCount(month); FRContext.getCurrentEnv().writeResource(configManager); |
为了远程设计的时候,配置文件能够正确的保存,需要实现readFromInputStream方法,以ExpirationConfigManager为例:
| Code Block |
|---|
// 服务器端新建一个对象
ExpirationConfigManager manager = new ExpirationConfigManager();
// 从客户端传过来的inputstream中读取对象属性
XMLTools.readInputStreamXML(manager, input);
// 赋值给当前服务器端对象
expirationConfigManager= manager;
// 服务器端保存到本地xml中
GeneralContext.getEnvProvider().writeResource(datasourceManager); |
| Code Block |
|---|
<extra-core>
<XMLFileManagerProvider class="com.fr.plugin.demo.ExpirationConfigManager">
</extra-core> |
插件开发的时候,通常在插件包中会包含一个默认的配置文件,需要在插件安装的时候将这个配置文件移动到web应用目录之下,可以通过修改plugin.xml中的节点
| Code Block |
|---|
<extra-core>
<XMLFileManagerProvider class="com.fr.plugin.demo.ExpirationConfigManager">
</extra-core>
<move-after-install>
<File name="myconfig.xml" dir="/resources" operation="0"/>
</move-after-install> |
这样就会在插件安装的时候把插件包中的myconfig.xml文件移动到WEB-INF/resources目录下了,dir属性是一个相对路径,可以根据实际情况修改。