В моем приложении Java EE (Glassfish 3.1.1) я регистрирую провайдера безопасности:
public static final class XoauthProvider extends Provider {
public XoauthProvider() {
super("Google Xoauth Provider", 1.0, "Provides the Xoauth experimental SASL Mechanism");
put("SaslClientFactory.XOAUTH", "blah.server.utils.XoauthSaslClientFactory");
}
}
...
XoauthProvider xoauthProvider = new XoauthProvider();
Security.addProvider(xoauthProvider);
После повторного развертывания я получаю следующие исключения:
java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [blah.server.utils.XoauthSaslClientFactory], because it has not yet been started, or was already stopped
Я отладилНемного, и кажется, что после повторного развертывания сервер все еще использует старый загрузчик классов при загрузке этого класса.
Если случай правильный, и это утечка ClassLoader, то каким будет подходящий способ отменить регистрациюпровайдер безопасности, когда приложение повторно развертывается / не развертывается?Или я должен просто вручную отменить регистрацию / перерегистрацию провайдера перед вызовом метода, который в конечном итоге выдает исключение?
Кстати, я использую JRebel.