Обслуживание статических ресурсов с Dropwizard - PullRequest
0 голосов
/ 30 апреля 2018

Dropwizard версия 1.3.0-rc6

Большая часть документации, касающейся обслуживания статического контента, предназначена для более старых версий, и даже обновленные документы в Руководстве по Dropwizard точно не работают для меня.

Я хочу обслуживать статический HTML-файл. Я изменил структуру / пути, по которым эти ресурсы обслуживаются, но не могу точно настроить конфигурацию в моей среде.

Статический контент расположен под следующей структурой


src/main/
├── java
│   └── org
│       └── com
│           └── query
│       
│               ├── rest
│               │   ├── api
│               │   ├── cli
│               │   ├── core
│               │   ├── db
│               │   ├── health
│               │   ├── resources
│               │   ├── tasks
│               │   └── views
│    
├── resources
│   ├── META-INF
│   │   ├── bin-license-notice
│   │   │   └── licenses
│   │   └── services
│   └── rest
│       ├── ftl
│       └── mustache
└── webapp
    ├── WEB-INF
    │   └── views
    │       └── jsp
    └── resources
        └── core
            ├── css
            └── js

multiFileUpload.html находится внутри src/main/webapp/resources/core dir, что в конечном счете и является тем, чем я хочу служить. Однако это отличается от стандартов dropwizard src/main/resources/assets/.

Мне нужен расширенный конструктор, чтобы указать отдельные AssetBundles, так как я планирую иметь несколько экземпляров AssetBundle. Это то, что у меня внутри моего метода инициализации приложения.

@Override public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) { bootstrap.addBundle(new AssetsBundle("/webapp/resources/core/*", "/", null, "/MultiFileUpload.html")); }

Я также установил urlPattern в методе запуска приложений. environment.jersey().setUrlPattern("/rest/*");

Корневой путь в моем config.yml: rootPath:/rest/*

У меня есть конечная точка, в которую нужно подавать файл .html. localhost:port/rest/upload/multiFile

Я почти уверен, что один из этих путей неверен, но я пытался изменить их в соответствии с примерами документации, но не повезло.

1 Ответ

0 голосов
/ 26 сентября 2018

Я только что отправил ответ на аналогичный вопрос. Я перечислю их и здесь,

  1. Путь AssetBundle рассчитывается из папки ресурсов проекта. Поэтому добавьте путь относительно этого. Здесь каталог assets находится в каталоге ${Project Root}/src/main/resources

    bootstrap.addBundle(new AssetsBundle("/assets/", "/"));
    
  2. Удалить явную запись реестра в Джерси. Я считаю, что это унаследовано от конфигурации.

    environment.jersey().setUrlPattern("/*"); /*this line should be removed*/
    

Вам нужно будет включить dropwizard-assets в зависимости вашего проекта.

Для удобства я создал пример проекта со статическими активами.

...