【问题原因】iServer启动失败,报 org.sqlite.SQLiteException: [SQLITE_BUSY] The database file is locked(数据库文件被锁定);清理 SQLITE_BUSY 后又出现 javax.servlet.ServletException: Web socket server initialization failed 和 java.lang.NullPointerException;根因为金蝶应用缺少 apusic-web.xml 类加载策略配置,且 UGO_HOME、LD_LIBRARY_PATH 等环境变量未正确生效。
【解决办法】
①删除残留锁文件 /data/apusic/applications/iserver/WEB-INF/records/requestPerformance.db-journal(备份后删除);
②在 iServer 的 WEB-INF 目录中加入 apusic-web.xml 配置类加载策略(delegate=false,配置 ignoreParentsFiles、ignoreResources、ignoreClassPrefix=org.glassfish.jersey 等参数),更新到iServer的war包(jar -uf iserver.war WEB-INF/apusic-web.xml);
③配置 UGO_HOME、LD_LIBRARY_PATH环境变量,具体可参考:
https://help.supermap.com/iServer/zh/Install_Uninstall/Usage_war/war_EnvConfig.htm
④备份后清理金蝶 osgi-cache 目录;
⑤用 ps -ef 查找 apusic 进程并杀干净(kill -9),重启金蝶;
⑥在金蝶应用管理中,确认"类加载策略"设置为未勾选状态。
完成上述操作后 iServer 启动正常、页面可访问、功能正常。