Я новичок в весне. Админы моего веб-приложения, основанного на весне, хотят настроить параметры из веб-интерфейса, чтобы пользователи могли аутентифицироваться на сервере LDAP с указанием имени и пароля своей компании.Переключение соединения LDAP во время работы весной
Изменение параметров LDAP должно быть возможным без перезапуска приложения. Это может произойти во время «миграции» или по любой причине. У меня есть пара бобы, которые должны быть обновлены после того, как администратор сохраняет новые настройки для сервера LDAP:
<bean id="ldapServer" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg>
<list>
<value>${ldap.url1}</value>
...
</list>
</constructor-arg>
<constructor-arg value="${ldap.basedn}"</constructor-arg>
<property name="referral" value="${ldap.referral}" />
<property name="baseEnvironmentProperties">...</property>
<property name="userDn" value="${ldap.username}" />
<property name="password" value="${ldap.password}" />
</bean>
Я использую Springframework 3.1.2. Проблема в том, что есть аргументы конструктора, которые я хочу изменить и не влиять на другие текущие задания. Я пытался играть с контекстными прокси, но не большим успехом еще:
<bean id="ldapServer" scope="prototype" ...>
<aop:scoped-proxy/>
Я был успешным, хотя, чтобы получить ldapServer к reinstantiate, при использовании рамки прототипа, запустив этот кусок кода:
@Controller
public class LDAPSettingsController implements ApplicationContextAware {
public ModelAndView handleRequest(...) {
DefaultSpringSecurityContextSource ldap;
ldap = context.getParentBeanFactor().getBean("ldapServer");
System.out.println(ldap.hashCode());
return new ModelAndView(new RedirectView('login.jsp'));
}
...
}
Are области и прокси-серверы здесь, путь, или другой механизм весной, чтобы отразить изменения конфигурации в исполняемый экземпляр программы?
ОБНОВЛЕНИЕ: Устраните вопрос. UPDATE: Корневая проблема с прокси АОП был следующим корневым исключением:
java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given