我正在構建一個應該在Tomcat和WebSphere上運行的Web應用程序,並且我設法將幾乎所有的差異都變成了具有默認值的屬性, Tomcat服務器。如何覆蓋基於Web服務器的Spring bean
我需要爲驗證提供豆做的另一個替代...
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
if(isWebSphere()){
LOG.warn("Running on WebSphere... not overriding default authentication mechanism.");
return;
}
LOG.info("Running on Tomcat... overriding authentication provider bean ("+AUTHENTICATION_PROVIDER_BEAN+")");
if (beanFactory.containsBean(AUTHENTICATOR_BEAN) && beanFactory.containsBean(POPULATOR_BEAN) && beanFactory.containsBean(USERDETAIL_PROVIDER_BEAN)){
LdapAuthenticator authenticator = (LdapAuthenticator) beanFactory.getBean(AUTHENTICATOR_BEAN);
LdapAuthoritiesPopulator populator = (LdapAuthoritiesPopulator) beanFactory.getBean(POPULATOR_BEAN);
UserDetailProvider userDetailProvider = (UserDetailProvider) beanFactory.getBean(USERDETAIL_PROVIDER_BEAN);
ExtendedLdapAuthenticationProvider override = new ExtendedLdapAuthenticationProvider(authenticator, populator);
override.setUserDetailProvider(userDetailProvider);
beanFactory.registerSingleton(AUTHENTICATION_PROVIDER_BEAN, override);
} else {
throw new BeanCreationException("Could not find required beans to assemble overriding object for authentication...");
}
}
現在我的問題是如何實現isWebSphere()
方法。我在想Class.forName("someWebSphereSpecific")
,但是有沒有更好的方法?