Автономное Java-приложение с RESTfull API и статическим веб

#java #maven #jersey #jax-rs #grizzly

#java #maven #джерси #jax-rs #grizzly

Вопрос:

К моему pom.xml Я добавляю одну зависимость.

     <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-http</artifactId>
        <version>2.10.1</version>
    </dependency>
  

Основная часть кода:

   public static void main(String[] args) {
    final URI baseUri = UriBuilder.fromUri("http://localhost").port(9998).build();

    //add test configs
    Set rest = new HashSet<Class>();
    rest.add(TestResource.class);
    final ResourceConfig config = new ResourceConfig(rest);

    HttpServer server = GrizzlyHttpServerFactory.createHttpServer(baseUri, config);


    try {
        //server.getServerConfiguration().addHttpHandler(new StaticHttpHandler("web/"),"/w");

        server.getServerConfiguration().addHttpHandler(new StaticHttpHandler("src/main/resources/web"),"/");

        server.start();
        System.out.println();
        System.out.println("Press enter to stop the server...");
        System.in.read();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        server.shutdownNow();
    }


}
  

В таком случае API не работает, но статический веб, который развернут в «/», работает.
Пожалуйста, проверьте этот экран.

Затем, когда я изменяю несколько строк кода:

 server.getServerConfiguration().addHttpHandler(new StaticHttpHandler("src/main/resources/web"),"/www");
  

API и статический веб работают, но веб не находится в «/» его в «/ www».
Пожалуйста, проверьте это.

Не могли бы вы, пожалуйста, помочь мне получить рабочий API в «/ api» и статический веб в «/»?

Ответ №1:

Создайте baseuri, подобный:

  final URI baseUri = UriBuilder.fromUri("http://localhost/api").port(9998).build();
  

Комментарии:

1. Спасибо. Но не помогло : (тогда то же самое.

2. Хм, после этого изменения у меня все заработало. Чего именно вы пытаетесь достичь? 🙂

Ответ №2:

Вы могли бы решить эту проблему, указав, какими расширениями вы хотели бы управлять статическим обработчиком, с шаблоном типа /*.jpg, *.html,…

Таким образом, сервер должен иметь возможность выбирать подходящий обработчик.

Комментарии:

1. Не могли бы вы опубликовать свою новую конфигурацию?

2. server.getServerConfiguration().addHttpHandler(новый StaticHttpHandler(«src/main/resources/web/*»), «/www»);

3. или как этот server.getServerConfiguration().addHttpHandler(новый StaticHttpHandler(«src/main/resources/web/*.html»), «/www»);

4. Я бы еще раз попробовал что-то вроде этого StaticHttpHandler(«src/main /resources /web /»), «/*.html»);