最近写一个测试类,在一个项目调用已发布的Webservicer里的方法时,读取XML文件数据时发现Webservice好像有缓存作用,也不太确定是否正确。现请教各位友友,好果Webservice有缓存作用,请问怎清除?用什么方法??
楼主^__^
不会吧
应该是你具体的类中有缓存吧
不会的 除非你的tomcat坏了 tomcat不稳定 可能会出现work目录的缓存 但是不会对数据有影响。
这个要看Webservice实现是怎么搞的,
如果可以的话
请把服务端方法贴出来哈
读取xml的那部分~
那么lz的[quote]第一次查的数据是完全正确的,但再查另一条数据时显示的数据还是第一条查的数据[/quote]
这个数据是从哪读的呢?xml吗?
我猜整个过程是这样的
这几段代码
[code="java"]
// if (filename.exists()) {
// filename.delete();
// }
[/code]
注释掉了的 就不存在因为占用文件导致删除失败的情况
那么建议lz看看第1步中写文件 是不是可能存在没有更新的情况
可能的话 debug一下~
你是每次通过这个静态方法getInstance得到同一个readXML么来读取的么?如果是这样的话,那么每次读取都是同一个ReadConsorXml对象即private static ReadConsorXml readXML; 该对象的属性doc和rootElt都是第一次getInstance时候就初始化好了,之后你再读取,当然还是原来的数据啊。
如果使用getInstance那么 初始化只调用了一次
rootElt再没有变过
没有发布的话
lz要确认是不是仅仅单次调用啦
建议把读取xml文件的部分移到构造方法之外
还有一种可能啊
lz之前测试时 每次调用都是通过new ReadConsorXml()来处理的
作为单例,构造方法应该为private哦~
我见你的ReadConsorXml类的构造方法是public的
发布webservice之前 如果还是通过ReadConsorXml.getInstance()....来调用其中的方法的话,也还是会出现开始那种bug的
所以猜测lz是不是直接通过new ReadConsorXml().......来调用的
而单例的出现就是为了提供全局唯一的实例,而防止用户以其他方式创建对象
所以会将其构造方法私有化,并提供一个public static 的获取该唯一实例的方法
[quote]
我在发布webservice之前 ,也是通过ReadConsorXml.getInstance()....来调用其中的方法的话,但是没有出现开始那种bug的,我现在就是这个问题还没搞明白.
[/quote]
按lz的代码看来不可能啊
如果能重现的话 lz调调代码吧~