Dropwizard多个资产包冲突

时间:2017-08-24 18:07:18

标签: java dropwizard

我有几个不同的单页面应用程序嵌入到单个dropwizard进程中。如果我注册了多个捆绑包,则只有最后一个捆绑包获胜。

bootstrap.addBundle(new AssetsBundle("/web1", "/web1", "index.html));
bootstrap.addBundle(new AssetsBundle("/web2", "/web2", "index.html));

仅提供web2。如果我反转这些行,则只提供web1。

如何正确配置dropwizard以便两者都得到服务?

2 个答案:

答案 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!事实上,甚至文档都在这里覆盖它:

PHP Manual

将AssetBundle添加到应用程序时,会使用默认的资产名称将其注册为servlet。如果应用程序需要具有多个AssetBundle实例,则应使用扩展构造函数为AssetBundle指定唯一名称。

修复是使用您指出的第4个参数。

bootstrap.addBundle(new AssetsBundle("/web1", "/web1", "index.html, "asset1"));
bootstrap.addBundle(new AssetsBundle("/web2", "/web2", "index.html, "asset2"));