У меня проблема с производительностью при первом вызове API для моих приложений J2EE.Поэтому я хотел сделать Class.forName для предварительной загрузки классов во время инициализации приложения.
Итак, в основном, вы просто хотите переместить накладные расходы :) Я не вижу разницы (может быть, опыт пользователя)но хорошо, почему бы и нет.
Но я слышал, что это запрещено реализацией стандарта J2EE / BEA (я могу быть совершенно неправ).Это так?Существуют ли другие ограничения на выполнение forName в контейнере J2EE.
Контекст немного неясен, но, насколько мне известно, это не так.И это на самом деле то, что делает приложение Pet Store.Цитирование EJB-ограничения :
Почему все ограничения на создание загрузчиков классов и перенаправление потоков ввода, вывода и ошибок?
Загрузка классов разрешена, ноСоздавать пользовательские загрузчики не по соображениям безопасности.Эти ограничения существуют, потому что EJB-контейнер отвечает за загрузку классов и контроль ввода / вывода.Разрешение EJB выполнять эти функции мешало бы правильной работе Контейнера и представляет угрозу безопасности.
В магазине Java Pet Store есть код, который загружает классы изнутри класса корпоративного компонента, используя Class.forName()
, в StateMachine .
Но почему бы вам просто не попробовать?
Ссылка