Требуется разъяснение по спецификации Java EE - PullRequest
1 голос
/ 03 марта 2010

Против спецификации Java EE - создание нового загрузчика классов из потока кода любого приложения?

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

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Это определенно нарушение спецификации.См. здесь , например:

Попытка создать или получить загрузчик классов, установить или создать новый менеджер безопасности, остановить JVM, изменить ввод, вывод и потоки ошибок.,Это ограничение обеспечивает безопасность и поддерживает способность контейнера EJB управлять средой выполнения.

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

Другой способ - посмотреть, что вам даст Java EE или ваш конкретный сервер приложений.Например, Weblogic позволяет вам настроить иерархию загрузки классов вашего уха.На данный момент Java EE является достаточно зрелым, поэтому, если у вас есть законные потребности, вы почти наверняка сможете это сделать.Это может быть не красиво, красиво, не удобно и не так просто, как при работе с пользовательским загрузчиком классов, и может зависеть от сервера приложений, но, вероятно, его можно будет заставить работать.

1 голос
/ 03 марта 2010

Я не уверен на 100%, применимо ли это ко всем частям приложения Java EE (например, веб-приложения), но из EJB вам не разрешено создавать новые загрузчики классов:

Из JSR 220 (EJB 3.0, Основные контракты и требования):

"21.1.2 Ограничения программирования

...

Корпоративный компонент не должен пытаться создать загрузчик классов; получить загрузчик текущего класса; установить загрузчик класса контекста; установить менеджер безопасности; создать нового менеджера безопасности; остановить JVM; или измените потоки ввода, вывода и ошибок. "

...