【问题标题】:Glassfish directory mappings: resources are cached by glassfishGlassfish 目录映射:资源由 glassfish 缓存
【发布时间】:2023-04-03 00:05:02
【问题描述】:

我使用 glassfish 的外部资源映射来存储用户上传的图像(sun-web.xml):

<property name="downloadroot" value="from=/downloaded dir=c:\glassfishv3\downloads"/>

我将上传的图像存储到此目录。第一次下载没问题,图片显示在地址server:8080/downloaded/image_13.png。但是当用户上传另一个文件并替换图像(实际上是在文件系统中替换)时,GF不会显示新图像,而是显示旧图像。事件重启和 osgi-cache/generated clean 没有帮助!这非常具有误导性,希望任何人都可以帮助我解决这个问题..

【问题讨论】:

  • 你好,bitec,你确定不是浏览器缓存了图片吗?
  • +1 对 MattHandy 的建议。更改媒体 URL 的内容总是有问题的。如果某些内容会定期更新,最好将应用程序设计为更改为新的 URL。
  • 谢谢,伙计们,刚刚发布了原因。我同意,即使使用 Meta no-cache 和 expires 参数,浏览器也会缓存图像......但这不适用于当前情况,原因是 Jrebel - 我在下面发布了答案

标签: image upload glassfish


【解决方案1】:

好的,问题出在 JRebel 中!折腾了一整天,终于找到问题了!因此,如果有人遇到它,修复的方法是在 rebel.xml 中包含 gf 虚拟路径,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<application>
    <classpath>     
        <dir name="${myproject.root}\target\classes" />
    </classpath>
    <web>
        <link target="">
            <dir name="${myproject.root}\src\main\webapp" />
        </link>
        <link target="">
            <dir name="C:\glassfish3.1" />
        </link>
    </web>
</application>

【讨论】:

  • sun-web.xml 中的glassfishv3 和rebel.xml 中的glassfish3.1 是否是复制粘贴错误?
  • 是的,只是一个错字。在两种配置中使用相同的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2016-03-02
  • 2011-07-24
  • 1970-01-01
  • 2012-02-26
相关资源
最近更新 更多