2011-01-06 3 views
0

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

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

Благодаря

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^