为Jersey项目清除swagger Cache

时间:2014-11-06 11:50:53

标签: caching jersey glassfish-3 swagger

我使用RESTFUL创建了Java Jersey网络服务,我正在使用swagger来获取API文档。然而,在我的RESTFUL服务的开发过程中,swagger注释更改是不可见的,我已经尝试清除浏览器缓存并使用其他浏览器,但新的更改并未反映Swagger API文档。 Swagger核心依赖项位于共享库目录中。

Wokaround 为了使更改生效,我必须删除Glass-fish中的以下文件夹。

  1. 产生
  2. OSGi的高速缓存
  3. 然后重新部署应用程序(这需要完全关闭Glass fish服务器,否则系统不允许我删除上面的文件夹。)

    我的问题: 1 - 我们有什么办法可以永久禁用缓存吗?

    2 - 是否有任何方法可以在不重新启动或删除文件夹的情况下按需清除swagger缓存?

    <dependency>
        <groupId>com.wordnik</groupId>
        <artifactId>swagger-jaxrs_2.10</artifactId>
        <version>1.3.10</version>
    </dependency>
    

1 个答案:

答案 0 :(得分:1)

根据上述评论,解决方案是在应用程序启动期间使用com.wordnik.swagger.jaxrs.listing.ApiListingCache.invalidateCache()

应该注意的是,对于swagger-core的某些版本,某些部分是静态的,因此,将其用作共享库将覆盖所有在其上使用它的应用程序的定义。相同的应用服务器更好的解决方案是在每个应用程序中单独包含swagger-core依赖。