Weblogic 10.3.1 повторно развернуть классы перезагрузки - PullRequest
0 голосов
/ 06 января 2011

У нас есть класс Foo, который является синглтоном и наследуется от Thread. У нас были некоторые проблемы после повторного развертывания, когда казалось, что 2 из этих потоков могут быть запущены. Я добавил несколько операторов печати для извлечения ClassLoader каждый раз, когда Фу просыпался. Отпечатки указывают, что фактически другой экземпляр класса был создан с другим ClassLoader.

Я не знаю, является ли это уместным, но Foo всегда создается с помощью Foo :: instance впервые через Session Bean. Foo предназначен для работы в качестве службы по очистке БД.

Спасибо

1 Ответ

0 голосов
/ 07 января 2011

По-видимому, существует 2 метода повторного развертывания. Похоже, что они оба продолжат запускать старое приложение, пока оно не перестанет обслуживать запросы. Эти 2 метода отличаются только тем, как они удаляют приложение. Метод, который мы используем, полностью поддерживает старое приложение и использует различные загрузчики классов для загрузки нового приложения. Наше старое приложение не было развернуто. Тем не менее, если вы запускаете поток где-то, что не было явно завершено (что оказалось так), вы потенциально можете иметь 2 экземпляра одного и того же класса, загруженных через разные загрузчики классов, выполняющиеся одновременно. Запуск потоков, на которые у Weblogic нет смертельной хватки, считается плохой практикой и небезопасным. Теперь я знаю почему.

...