我最近开始使用drop-wizard开发应用程序,对整个过程的工作方式有点困惑。
- web应用程序目录在哪里?
- 是否有可能编辑静态文件(JS, CSS)而不需要重新部署?
谢谢。
我对此进行了更多的研究,并将尝试回答您的问题:
- web应用程序目录在哪里
DW应用程序不是web应用程序。它们被部署为一个嵌入式系统,运行一个jetty嵌入式服务器,并监听一些端口。话虽如此,还是有很多方法可以将应用程序打包为web应用程序。(见评论中的链接)
- 是否有可能编辑静态文件(JS, CSS)而不需要重新部署?-是(大致)
这取决于你,真的。有一个东西叫做AssetBundle。这些可以用于服务器静态资源(通常来自类路径)。然而,这是一种你可以用来实现你自己的AssetBundle的机制,它不是在类路径下提供文件,而是在常规路径下提供文件。
或者,你可以在启动时将你的常规路径添加到类路径中,这样AssetBundle就可以工作了。
或者,您可以为AssetBundle实现ServletFilter(资产不是jersey生态系统的一部分),并在Filter中实现您的动态更改。
大多数将需要重新启动的原因或其他。例如,过滤器的自定义实现显然需要重新部署。返回资产的Servlet还(我相信)采用了可能需要重新启动的缓存策略(取决于您的实现)。
对于你的UI:还有一个DW-views项目,它增加了创建视图的能力(默认情况下使用mustache模板),这些视图可以从你的应用程序中获得支持,并由相同的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作为静态资源提供服务。
玩得开心,
阿图尔