Java Dropwizard Jersey设置URL模式打破招摇404?

Java Dropwizard Jersey设置URL模式打破招摇404?,java,jersey,dropwizard,Java,Jersey,Dropwizard,不久前,我在Dropwizard服务中添加了swagger,效果很好 然而,现在我想添加一个简单的html页面,并配置资源路径以提供来自/assets的内容,这已经打破了swagger和api 带有404响应 这是我的密码 public class NumericodeApplication extends Application<NumericodeConfiguration> { public static void main(final String[] args)

不久前,我在Dropwizard服务中添加了swagger,效果很好

然而,现在我想添加一个简单的html页面,并配置资源路径以提供来自
/assets
的内容,这已经打破了swagger和api 带有
404
响应

这是我的密码

public class NumericodeApplication extends Application<NumericodeConfiguration> {

    public static void main(final String[] args) throws Exception {
        new NumericodeApplication().run(args);
    }

    @Override
    public String getName() {
        return "Numericode";
    }

    @Override
    public void initialize(final Bootstrap<NumericodeConfiguration> bootstrap) {

        bootstrap.addBundle(new SwaggerBundle<NumericodeConfiguration>() {
            @Override
            protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(NumericodeConfiguration configuration) {
                return configuration.swaggerBundleConfiguration;
            }
        });

        bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.html")); //added this 
    }

    @Override
    public void run(final NumericodeConfiguration configuration, final Environment environment) {

        environment.jersey().register(new Controller());
        environment.jersey().setUrlPattern("/swagger"); //tried this
        environment.jersey().setUrlPattern("/api/*"); //added this
    }
}
公共类NumericodeApplication扩展应用程序{
公共静态void main(最终字符串[]args)引发异常{
新建NumericodeApplication().run(args);
}
@凌驾
公共字符串getName(){
返回“数字代码”;
}
@凌驾
公共无效初始化(最终引导引导引导){
addBundle(新的SwaggerBundle(){
@凌驾
受保护的SwaggerBundleConfiguration getSwaggerBundleConfiguration(NumericDeconfiguration配置){
返回配置.swaggerBundleConfiguration;
}
});
addBundle(新的AssetsBundle(“/assets”、“/”、“index.html”);//添加了这个
}
@凌驾
公共无效运行(最终数字配置配置,最终环境){
environment.jersey().register(新控制器());
environment.jersey().setUrlPattern(“/swagger”);//尝试了以下操作
environment.jersey().setUrlPattern(“/api/*”);//添加了此
}
}
当我尝试删除两个setUrlPattern()方法调用时,它会抱怨

多个servlet映射到path/*:assets[mapped:JAVAX_API:null],io.dropwizard.jersey.setup.JerseyServletContainer-2e5b7fba[mapped:EMBEDDED:null]

但是,如果我删除了资产包,Swagger还能正常工作吗

如何让我的索引页和swagger在Dropwizard/Jetty上工作

如果你能解释发生了什么,就可以获得额外的积分

您的应用程序或静态资产都可以从 根路径,但不是两者都有。后者在使用Dropwizard 返回Javascript应用程序。要启用它,请将应用程序移动到 子URL

资料来源:

bootstrap.addBundle(新的AssetsBundle(“/assets”、“/”、“index.html”)

此行试图装载
根目录下
资源目录下的
资源
上下文路径中的资源。可能Jersey应用程序已经安装在那里了

您的应用程序或静态资产都可以从 根路径,但不是两者都有。后者在使用Dropwizard 返回Javascript应用程序。要启用它,请将应用程序移动到 子URL

资料来源:

bootstrap.addBundle(新的AssetsBundle(“/assets”、“/”、“index.html”)


此行试图装载
根目录下
资源目录下的
资源
上下文路径中的资源。可能Jersey应用程序已经安装在那里了。

您可以在配置文件中添加uriPrefix,如下所示

swagger:
  title: Test Application
  resourcePackage: com.abc.xyz
  uriPrefix: /api/v1

这将以/api/v1作为基本url

您可以在配置文件中添加uriPrefix,如下所示

swagger:
  title: Test Application
  resourcePackage: com.abc.xyz
  uriPrefix: /api/v1
这将以/api/v1作为基本url