ralasafe修改用户元数据
因数据库变更了用户表的一个字段类型(由原来的int转成varchar(32)),结果导致ralasafe启动错误,根据异常是用户加载出错了:
严重: Servlet.service() for servlet ralasafe threw exception
org.ralasafe.db.DBLevelException: java.sql.SQLException: Invalid value for getInt() - '9C2AA187848A464AA7C398EED50F22EE'
at org.ralasafe.db.sql.Query.execute(Query.java:473)
at org.ralasafe.db.sql.Query.execute(Query.java:317)
at org.ralasafe.user.UserManager.selectUsers(UserManager.java:223)
at org.ralasafe.servlet.UserMngAction.doGet(UserMngAction.java:63)
at org.ralasafe.servlet.RalasafeController.doGet(RalasafeController.java:122)
判断应该是用户元数据配置没有变更(其他JAVA实体类、hibernate配置都已更新了)。于是控制台用户元数据,果真,status的数据类型没变化:
于是查找元数据配置位置:/WEB-INF/ralasafe/usermetadata.xml和xml/ralasafe/userType/*.xml,
修
改配置后重启无效!类型还是int,于是先考虑删除元数据后重新配置。删除后,重新选择/WEB-INF/ralasafe
/usermetadata.xml进行用户元数据配置,完成后,查看元数据类型正确了,但是悲剧的是系统数据全部恢复成初始化状态(即之前所配置的权限
列表、角色、查询的记录,数据库表都清空了,xml下的配置文件还在)!
汗~~
幸好我刚备份了数据库。还原数据库后启动依然还是原来的错误,看过两处元数据配置都是正确的,那么系统启动读取的元数据格式肯定不是从配置文件读了(刚刚
重新配置时发现xml/ralasafe/userType/目录下会新建一个usermetadata.xml配置文件),于是查看ralasafe的
系统数据库。发现在usertype表的userMetadataXML字段类型是varchar(4000),里面存放的是xml格式的数据,换用
SQLyog工具查看表记录,果真里面放置的就是元数据的配置xml内容。ralasafe系统启动读取元数据就是从这个表中读取的,这点与权限、查询、
用户数据分类的读配置文件不同。修改userMetadataXML字段里的配置数据后,重启,ok~

浙公网安备 33010602011771号