Webservice问题:Webservice发布之后是否存在缓存作用??

最近写一个测试类,在一个项目调用已发布的Webservicer里的方法时,读取XML文件数据时发现Webservice好像有缓存作用,也不太确定是否正确。现请教各位友友,好果Webservice有缓存作用,请问怎清除?用什么方法??

楼主^__^

不会吧

应该是你具体的类中有缓存吧

不会的 除非你的tomcat坏了 tomcat不稳定 可能会出现work目录的缓存 但是不会对数据有影响。

这个要看Webservice实现是怎么搞的,

如果可以的话

请把服务端方法贴出来哈

读取xml的那部分~

那么lz的[quote]第一次查的数据是完全正确的,但再查另一条数据时显示的数据还是第一条查的数据[/quote]

这个数据是从哪读的呢?xml吗?

我猜整个过程是这样的

  1. 从数据库把xml load出来 另存为consor.xml
  2. ReadConsorXml读取xml的内容,然后删掉文件
  3. ReadConsorXml调用initConsor()方法构造一个Consor对象

这几段代码
[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调调代码吧~