je charge les définitions de haricots singleton supplémentaires lors de l'exécution du fichier jar externe dans XmlWebApplicationContext existante de ma demande:CGLIB erreur proxy après le chargement de la définition de haricot de printemps en XmlWebApplicationContext lors de l'exécution
BeanFactory beanFactory = xmlWebApplicationContext.getBeanFactory();
DefaultListableBeanFactory defaultFactory = (DefaultListableBeanFactory)beanFactory;
final URL url = new URL("external.jar");
final URL[] urls = {url};
ClassLoader loader = new URLClassLoader(urls, this.getClass().getClassLoader());
defaultFactory.setBeanClassLoader(loader);
final ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(defaultFactory);
final DefaultResourceLoader resourceLoader = new DefaultResourceLoader();
resourceLoader.setClassLoader(loader);
scanner.setResourceLoader(resourceLoader);
scanner.scan("com.*");
Object bean = xmlWebApplicationContext.getBean("externalBean");
Après tout ci-dessus xmlWebApplicationContext contient toutes les définitions externes de des haricots. Mais quand je suis en train d'obtenir haricot d'exception contexte est jeté:
Couldn't generate CGLIB proxy for class ...
j'ai vu en mode débogage dans le processus d'initialisation du bean premier proxy est générée par org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
et qu'il est tenté de générer un proxy avec org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator
mais échoue avec l'exception mentionnée.
pas définitif et a constructeur public. étrange mais il fonctionne si haricot initialisée pas dans l'exécution, mais dans le strarting du principal processus régulier de contexte avec les autres haricots. Cela fonctionne également si la définition du bean est ajoutée dans la méthode PostProcessor juste avant le démarrage du contexte principal. J'ai essayé d'actualiser le contexte, mais après l'actualisation, les définitions de beans supplémentaires sont supprimées. – VasylV
rafraîchissement tous les haricots et reconstitue ce n'est pas la meilleure solution pour moi, mon but est de charger la définition de haricots à l'exécution sans redémarrage de tous les principaux contexte web du printemps – VasylV
donner à la classe (modifier votre question) – Bozho