您可以使用JNDI从正在运行的tomcat中获取UserDatabase对象,其中包含有关用户和角色的所有信息。您必须在server.xml中将UserDatabase定义为全局资源,然后将资源链接添加到context.xml文件中,如下所示:
server.xml
<GlobalNamingResources> <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="/home/user/tomcat-users.xml" type="org.apache.catalina.UserDatabase" readonly="false" /></GlobalNamingResources><Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/></Realm>
您的webapp的context.xml
<Context> <Resourcelink name="UserDatabase" global="UserDatabase" type="org.apache.catalina.UserDatabase" /></Context>
现在,您可以使用InitialContext获取UserDatabase对象:
UserDatabase ud = (UserDatabase) new InitialContext().lookup("java:comp/env/UserDatabase");现在您可以像下面这样调用此数据库的方法:
ud.createUser("username", "password", "fullname");不要忘记调用该
ud.save();方法,以便可以将更改写入xmlfile。要保存此设置,全局资源的只读属性必须为false。



