zhyang18
2010-01-19 13:49 阅读 560
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

13条回答 默认 最新

  • 已采纳
    mginobili mginobili 2010-01-19 17:55

    楼主^__^

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 14:02

    不会吧

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

    点赞 评论 复制链接分享
  • andilyliao andilyliao 2010-01-19 14:27

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

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2010-01-19 14:29

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

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 14:46

    如果可以的话

    请把服务端方法贴出来哈

    读取xml的那部分~

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 15:11

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

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

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 16:00

    我猜整个过程是这样的

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

    这几段代码
    [code="java"]
    // if (filename.exists()) {
    // filename.delete();
    // }
    [/code]
    注释掉了的 就不存在因为占用文件导致删除失败的情况

    那么建议lz看看第1步中写文件 是不是可能存在没有更新的情况
    可能的话 debug一下~

    点赞 评论 复制链接分享
  • songzi0206 songzi0206 2010-01-19 16:31

    你是每次通过这个静态方法getInstance得到同一个readXML么来读取的么?如果是这样的话,那么每次读取都是同一个ReadConsorXml对象即private static ReadConsorXml readXML; 该对象的属性doc和rootElt都是第一次getInstance时候就初始化好了,之后你再读取,当然还是原来的数据啊。

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 16:38

    如果使用getInstance那么 初始化只调用了一次

    rootElt再没有变过

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 17:21

    没有发布的话

    lz要确认是不是仅仅单次调用啦

    建议把读取xml文件的部分移到构造方法之外

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 17:26

    还有一种可能啊

    lz之前测试时 每次调用都是通过new ReadConsorXml()来处理的

    作为单例,构造方法应该为private哦~

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 17:35

    我见你的ReadConsorXml类的构造方法是public的

    发布webservice之前 如果还是通过ReadConsorXml.getInstance()....来调用其中的方法的话,也还是会出现开始那种bug的

    所以猜测lz是不是直接通过new ReadConsorXml().......来调用的


    而单例的出现就是为了提供全局唯一的实例,而防止用户以其他方式创建对象

    所以会将其构造方法私有化,并提供一个public static 的获取该唯一实例的方法

    点赞 评论 复制链接分享
  • mginobili mginobili 2010-01-19 17:50

    [quote]
    我在发布webservice之前 ,也是通过ReadConsorXml.getInstance()....来调用其中的方法的话,但是没有出现开始那种bug的,我现在就是这个问题还没搞明白.
    [/quote]

    按lz的代码看来不可能啊

    如果能重现的话 lz调调代码吧~

    点赞 评论 复制链接分享

相关推荐