WildFly 12 Wicket 7.10 - Почему только первый поток имеет доступ к приложению? - PullRequest
0 голосов
/ 11 мая 2018

Каждый запрос пытается создать новые экземпляры Singletons, которые терпят неудачу, потому что они используют Application.get (), который завершается ошибкой:

There is no application attached to current thread default

Тот же код работает в WildFly 8.2 и Wicket 6.20. Итак, две проблемы:

  1. Каждый поток обработчика запросов работает так, как будто он работает в своей собственной JVM, не разделяя статические поля с другими потоками.
  2. Каждый поток обработчика запросов после создания исходного создается без него и с приложением.

Минимальный пример:

package com.example.web;

public class SiteConstants
{
   public static final String CONTEXT_PATH = WebApp.get().getServletcontext().getContextPath() + "/";
}

Домашняя страница использует

SiteConstants.CONTEXT_PATH

Первый запрос на домашнюю страницу работает. Второй вызов загружается в другой поток и завершается с ошибкой

WebApp.get().getServletcontext().getContextPath() + "/";

потому что WebApp.get () выбрасывает

org.apache.wicket.WicketRuntimeException: There is no application attached to current thread default task-1
...