我有几个不同的单页面应用程序嵌入到单个dropwizard进程中。如果我注册了多个捆绑包,则只有最后一个捆绑包获胜。
bootstrap.addBundle(new AssetsBundle("/web1", "/web1", "index.html));
bootstrap.addBundle(new AssetsBundle("/web2", "/web2", "index.html));
仅提供web2。如果我反转这些行,则只提供web1。
如何正确配置dropwizard以便两者都得到服务?
答案 0 :(得分:3)
尝试以不同方式命名这些捆绑包:
bootstrap.addBundle(new AssetsBundle("/web1", "/web1", "index.html, "asset1"));
bootstrap.addBundle(new AssetsBundle("/web2", "/web2", "index.html, "asset2"));
您正在使用的AssetsBundle构造函数的实现如下:
public AssetsBundle(String resourcePath, String uriPath, String indexFile) {
this(resourcePath, uriPath, indexFile, "assets");
}
因此,后一种配置会覆盖您的资产包。这以类似的方式解决了
在dropwizard#499
。
答案 1 :(得分:1)
谢谢@nullpointer!事实上,甚至文档都在这里覆盖它:
将AssetBundle添加到应用程序时,会使用默认的资产名称将其注册为servlet。如果应用程序需要具有多个AssetBundle实例,则应使用扩展构造函数为AssetBundle指定唯一名称。
修复是使用您指出的第4个参数。
bootstrap.addBundle(new AssetsBundle("/web1", "/web1", "index.html, "asset1"));
bootstrap.addBundle(new AssetsBundle("/web2", "/web2", "index.html, "asset2"));