问题:如何用程序的方法修改 tomcat-users.xml 里边的用户密码?(兼升级散分) 就是java文件操作阿直接操作本地文件就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只能想出 对xml 文件 操作的方法 人工操纵文件、重写xml,都不是好方法,因为这样所做的修改,必须等到下次tomcat启动时才能生效,用户也不能根据自己的意愿选择密码,所以,这样的方法不能算对。 如果修改很容易。解析到tomcat-users.xml到内存中,修改以后再生成一下就好了。但是问题是,你这样改了也没用的 TOMCAT 只在启动时读取那个文件的。。 to:chnic(挠痒痒) ( ) 信誉:100 如果修改很容易。解析到tomcat-users.xml到内存中,修改以后再生成一下就好了。但是问题是,你这样改了也没用的 TOMCAT 只在启动时读取那个文件的。。-----------------------------------是的,我的意思就是:修改了以后,当时就有效,不能等到 tomcat 下次启动!所以,重写文件的方法,是达不到目的的。 干吗不直接配置到数据库呢?为什么要限制死是在xml里??? <!-- <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL" connectionName="scott" connectionPassword="tiger" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" /> --> to LZ。。 呵呵。这个我到真的没想过。你可以研究下tomcat的源代码,只要能拿到用户名和密码的引用,应该就可以修改的。 to:pigo() ( ) 信誉:149 你的意思是,配置到数据库,可以用更新数据表的方法:update users_table set user_password='新密码' where user_name='用户名'?配置到数据库,也是一样的,修改了数据表里的内容,只有tomcat下次启动后才能生效。不能达到用户自选密码、并且当时就能生效的目的。 刚才看了一眼JDBCRealm。java的源代码,好像是缓存起来了那你就继承这个Class自己写个动态查询的就可以了。 public class YourRealm extends RealmBase 写一个自己的实现就可以啦,或者 public class YourRealm extends org.apache.catalina.UserDatabase然后改成动态加载 xml 的即可。 to:pigo() ( ) 信誉:149 不好意思,我原来没测试过JDBC Realm,刚才试了一下,可以即时生效。你的办法行得通 to:pigo() ( ) 信誉:149 看了你后边的两个回贴,基本上和我的解决方法相似,只不过我没有写自己的类,全部用catalina的内容做的。 谁知道这个报表是什么技术实现的 JNA 客户端如何调用自己的读卡器 JDK6.0和Eclipse 求一个JSP的翻页控件 DetachedCriteria怎样追加一个聚合函数呢 诡异的延迟加载错误 求助hibernate3.2的各插件 为什么Hibernate数据库连接没有释放? 在hibernate一对多的双向关联中,如果one方和many方的持久化对象均发生了变化,hibernate会怎么做?会执行哪些sql语句,为什么? 在ECLIPSE中怎样开发EJB? 各位大侠,给小弟弟介绍个开源的j2ee项目看看代码吧 struts 的下拉列表框问题
但是问题是,你这样改了也没用的 TOMCAT 只在启动时读取那个文件的。。
如果修改很容易。解析到tomcat-users.xml到内存中,修改以后再生成一下就好了。
但是问题是,你这样改了也没用的 TOMCAT 只在启动时读取那个文件的。。
-----------------------------------是的,我的意思就是:修改了以后,当时就有效,不能等到 tomcat 下次启动!
所以,重写文件的方法,是达不到目的的。
干吗不直接配置到数据库呢?为什么要限制死是在xml里???
<!--
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
connectionName="scott" connectionPassword="tiger"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
-->
只要能拿到用户名和密码的引用,应该就可以修改的。
update users_table set user_password='新密码' where user_name='用户名'?配置到数据库,也是一样的,修改了数据表里的内容,只有tomcat下次启动后才能生效。不能达到用户自选密码、并且当时就能生效的目的。
extends RealmBase 写一个自己的实现就可以啦,或者 public class YourRealm
extends org.apache.catalina.UserDatabase然后改成动态加载 xml 的即可。