在我的 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。