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~

posted @ 2011-09-07 15:32  windelk  阅读(760)  评论(1)    收藏  举报