前言
帆软报表的自定义函数 修改后部署到服务器不生效的问题。
一、自定义函数class文件在服务器中只生效一次
原因:生效一次的原因是自定义函数名称和class文件热部署生效的,所以直接运行了,但是修改Java代码重新构建的class文件重新放入服务器进行覆盖后,是无法生效的,只能重启服务器,才能重新生效,因为上一版生效的class文件会占用《自定义函数的名称》和class文件的名称。
二、不重启服务器的解决办法
1.修改Java类名称和
修改前:类名在服务器已占用
public class POIExcel extends AbstractFunction {
public Object run(Object[] args) {
boolean result = false;
int p = 0;
Object[] ob = new Object[4];
for (int i = 0; (i < args.length && p <= 4); i++) {
if (args[i] == null) {
continue;
}
ob[p] = args[i];
p++;
}
return result;
}
修改后:类名和自定义函数的名称都要修改
public class POIExcel1 extends AbstractFunction {
public Object run(Object[] args) {
boolean result = false;
int p = 0;
Object[] ob = new Object[4];
for (int i = 0; (i < args.length && p <= 4); i++) {
if (args[i] == null) {
continue;
}
ob[p] = args[i];
p++;
}
return result;
}
重新编译,放入服务器,函数管理器新添加,切记编辑新名称,不要和之前加的相同,之前添加的就算删除也是不行的,添加好后会立即生效,免除重启问题。