关于配置文件修改后,重新解析无效的问题

07-06-14 abigsmile
我在bs系统中用到了:

InputStream in = this.getClass().getClassLoader().getResourceAsStream("../xxx.xml");

目的是为了解析配置文件,但是当系统启动运行后,我修改了xml配置文件,然后重新解析xml文件,发现解析出来的内容还是原来的xml,搞了几天了还是没搞定,请各路英雄帮忙!!

banq
2007-06-15 16:27
你需要通过断点跟踪来确认系统找到的xxx.xml到底是哪里的。

abigsmile
2007-06-16 16:09
我用断点试了一试,发现xxx.xml的路径是对的,我发现每次解析是classloader的value都是WebappClassLoader(id=97),我觉得是这样的一个解释:

第一次运行classLoader.getResourceAsStream(fileName)时,classloader把xxx.xml文件读入到jvm中,

当我修改了文件xxx.xml后,在一次调用classLoader.getResourceAsStream(fileName)时,由于这时的classLoader和第一次运行的classloader是同一个classloader(猜测),由于是同一个classloader,加载的文件名没变,所以系统没有再从文件中读,而是直接从jvm中读出,所以xml文件中的修改就体现不出来了。

猜测:我想这跟使用spring, Struts和hibernate的系统中,修改相关的配置文件后必须重新启动系统才能奏效是同一个原理。

不知道我的猜测推理对不对,请各位英雄批评指正。

tianhandigeng
2010-11-22 21:46
唉 和我一样啊 07年的帖 哥们解决了吧 可以教我一下吗?

874904507

猜你喜欢