我最近使用drop-wizard启动了应用程序开发,并且整个过程有点令人困惑。
感谢。
答案 0 :(得分:1)
我已经对此进行了更多研究并尝试回答您的问题:
DW应用程序不是(意味着)Web应用程序。它们被部署为运行jetty嵌入式服务器并侦听某些端口的嵌入式系统。话虽如此,肯定有将应用程序打包为Web应用程序的方法。 (见评论中的链接)
这取决于你,真的。有一种叫做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