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