SharedObject无法动态更新

image.pngconfig对象后台需要修改,SharedObject无法动态更新。怎么解决更新问题



评论区

JFinal

2018-05-10 16:07

可以动态更新,你上面的代码是正确的,但要注意被使用的 Engine 对象是不是当前配置的这个 RenderManager.me().getEngine()

jfinal 中的 Engine 对象是可以同时存在多个,分别配置,分别用于不同的用途的

heyewei

2018-05-10 18:01

@JFinal 更新的时候调用addSharedObject报错:Shared object already exists:

gongtao

2018-06-07 14:13

启动配置时给他起个名字 engine = new Engine("WEB_CONFIG"); 当需要更新的时候,先移除掉这个Engine ,Engine.remove("engine");然后再添加就可以了。

INFECTION_K

2019-07-30 10:44

我用的3.4 也有这个问题 种种原因 很多服务器不能升级到jdk8 所以解决办法 修改源码包 修改com.jfinal.template下Engine里 增加 public Engine removeSharedObject(String name) {
config.removeSharedObject(name);
return this;
} (新版本中有这个方法 可以复制过来) 在EngineConfig 里修改 public Map getSharedObjectMap() {
return sharedObjectMap;
}

public synchronized void removeSharedObject(String name) {
if (sharedObjectMap != null) {
sharedObjectMap.remove(name);
}
} 然后重新编译一下 把class复制到jar里 测试通过 完活

INFECTION_K

2019-07-30 10:45

add前 先remove