Подход о том, как узнать, полностью ли инициализированы компоненты (пружина / причал) - PullRequest
0 голосов
/ 14 октября 2011

У меня есть внутренний сервер (Jetty), который обрабатывает HTTP-запросы и взаимодействует с базой данных MySQL.

Это все связано с весной.

У меня также есть пользовательский интерфейс в Swing, который служит инструментом администратора (пользователь может взаимодействовать с БД и т. Д.).

Сейчас сервер и пользовательский интерфейс несколько связаны, что означает, что, когда основной класс начинает загружаться, он сначала запускает контекст Spring, а затем запускает пользовательский интерфейс (в потоке EDT).
По сути, до тех пор, пока пользовательский интерфейс работает, сервер прослушивает запросы.

У меня проблема в следующем:

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

Прямо сейчас я достигаю этого, добавляя режим ожидания на несколько секунд, прежде чем начать создавать графический интерфейс в потоке EDT.
Это решает проблему, но задержка произвольна, и я думаю, это зависит от целевой машины.
Также это заставляет GUI занимать много времени, чтобы появиться (задержка теперь составляет 10 секунд).

Я пытаюсь выяснить лучший способ узнать, что контекст Spring и внутренняя версия Jetty полностью инициализированы перед отображением графического интерфейса.

Один из подходов, который я предполагаю, состоит в том, чтобы попытаться отправить запрос на сервер, и, если он потерпит неудачу, повторять попытки несколько раз, пока он не будет успешным, а затем показать GUI.

Но мне было интересно, есть ли более стандартный подход.

Любые пожелания приветствуются.

Ответы [ 2 ]

1 голос
/ 14 октября 2011

1) создайте пустой графический интерфейс с одним JButton для запуска, вторым для перерыва ...

2) Экран-заставка или есть некоторые реализации с использованием JWindow /JDialog

затем поместите здесь один или несколько JProgressBar , которые отображают пошаговый результат из ...

3) create SystemTry и отображают прогресс вtrayIcon.displayMessage(), в конце, чтобы отобразить GUI или поместить здесь JPopupMenu ...

4) вы можете создать множество JProgressBars (я создал 9 JProgressBars как процессы прослушивания с помощью всплывающей подсказки) без границ в одной горизонтальной JPanel (строка) в строке состояния a_la

1 голос
/ 14 октября 2011

Чтобы проверить, загружено ли ваше приложение Spring, вы можете реализовать интерфейс Spring * ApplicationListener и прослушивать ContextRefreshedEvent

Если вы запускаете Jetty из контекста Spring (например,в в этом примере ) он будет полностью инициализирован после получения ContextRefreshedEvent.Если вы используете какой-то другой механизм для запуска Jetty, вы можете сделать к нему запрос http, так как коннектор http устанавливается в конце последовательности запуска Jettys.

...