drop wizard - web app目录&编辑静态文件

时间:2016-09-16 09:16:40

标签: jetty dropwizard

我最近使用drop-wizard启动了应用程序开发,并且整个过程有点令人困惑。

  1. 网络应用目录在哪里?
  2. 是否可以编辑静态文件(JS,CSS)而无需重新部署?
  3. 感谢。

1 个答案:

答案 0 :(得分:1)

我已经对此进行了更多研究并尝试回答您的问题:

  1. 网络应用目录
  2. 在哪里

    DW应用程序不是(意味着)Web应用程序。它们被部署为运行jetty嵌入式服务器并侦听某些端口的嵌入式系统。话虽如此,肯定有将应用程序打包为Web应用程序的方法。 (见评论中的链接)

    1. 是否可以编辑静态文件(JS,CSS)而无需重新部署? - 是(ish)
    2. 这取决于你,真的。有一种叫做AssetBundle的东西。这些可用于服务器静态资源(通常来自类路径)。但是,这是一种可用于实现自己的AssetBundle的机制,它不是在类路径上提供文件,而是在常规路径上提供文件。

      或者,您可以在启动时将常规路径添加到类路径中,以便AssetBundle可以正常工作。

      或者,您可以为AssetBundle实现ServletFilter(资产不是泽西生态系统的一部分),并在Filter中实现动态更改。

      其中大部分因某种原因需要重启。例如,过滤器的自定义实现显然需要重新部署。 Servlet返回资产(我相信)也采用了一种可能需要重启的缓存策略(取决于您的实现)。

      对于您的UI:还有一个DW视图项目,它添加了创建视图(默认情况下为胡须模板)的功能,这些视图可以从您的应用程序供电并由相同的REST端点提供服务。

      希望有所帮助,

      经过多次检查后:

      您可以从文件系统提供静态资源,并随时修改它们。他们将得到正确的服务。怎么做:

      使用资源路径添加资产包:

      bootstrap.addBundle(new AssetsBundle("/assets2/", "/assets"));
      

      这会添加根类路径资源assets2,并使其从端点assets静态提供。

      诀窍是您必须将文件系统位置添加为类路径资源。这可以通过参数(或eclipse运行配置中的classpath选项卡)完成。你可以谷歌相对容易。但是,您必须记住,类路径资源的行为与文件系统资源不同:

      在我的情况下,我添加到类路径:

      /home/artur/tmp/assets/
      

      但是,我的资产包来自“assets2”。我们来看看文件系统:

      artur@pandaadb:~/tmp/assets$ pwd
      /home/artur/tmp/assets
      artur@pandaadb:~/tmp/assets$ find .
      .
      ./assets2
      ./assets2/test.txt
      artur@pandaadb:~/tmp/assets$
      

      因此,在我的文件系统位置已添加为root用户,但资源仅从子文件夹assets2提供

      现在,assets2中的所有资源都可以在运行时修改,并由DW作为静态资源提供。

      玩得开心,

      Artur