[ https://issues.apache.org/jira/browse/ARIES-1993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17167339#comment-17167339 ]
Arnaud MERGEY commented on ARIES-1993: -------------------------------------- I have shared this pull request [https://github.com/apache/aries/pull/110] with a fix proposal > [blueprint/spring integration] Cannot parse spring-security 5 context > ---------------------------------------------------------------------- > > Key: ARIES-1993 > URL: https://issues.apache.org/jira/browse/ARIES-1993 > Project: Aries > Issue Type: Bug > Components: Blueprint > Affects Versions: blueprint-spring-0.6.0 > Reporter: Arnaud MERGEY > Priority: Major > > In a blueprint application, trying to parse this blueprint xml file > {code:java} > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<blueprint > xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:spring="http://www.springframework.org/schema/beans" > xmlns:context="http://www.springframework.org/schema/context" > xmlns:security="http://www.springframework.org/schema/security" > xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 > http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://www.springframework.org/schema/context > http://www.springframework.org/schema/context/spring-context.xsd > http://www.springframework.org/schema/security > https://www.springframework.org/schema/security/spring-security.xsd" > default-activation="eager" default-availability="mandatory"> > <!-- <security:debug/> --> > <security:http/> <security:user-service> <security:user name="user" > password="password" authorities="ROLE_USER" /> </security:user-service> > </blueprint> > {code} > fails with > {code:java} > [Blueprint Extender: 1] WARN > org.apache.aries.blueprint.spring.SpringApplicationContext - Exception > encountered during context initialization - cancelling refresh attempt: > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.filterChains': Cannot resolve > reference to bean > 'org.springframework.security.web.DefaultSecurityFilterChain#0' while setting > bean property 'sourceList' with key [0]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.web.DefaultSecurityFilterChain#0': > Cannot resolve reference to bean > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' > while setting constructor argument with key [5]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': > Cannot resolve reference to bean > 'org.springframework.security.authentication.ProviderManager#0' while setting > bean property 'authenticationManager'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.authentication.ProviderManager#0': > Cannot resolve reference to bean > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' > while setting constructor argument; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider;[Blueprint > Extender: 1] WARN org.apache.aries.blueprint.spring.SpringApplicationContext > - Exception encountered during context initialization - cancelling refresh > attempt: org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'org.springframework.security.filterChains': Cannot > resolve reference to bean > 'org.springframework.security.web.DefaultSecurityFilterChain#0' while setting > bean property 'sourceList' with key [0]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.web.DefaultSecurityFilterChain#0': > Cannot resolve reference to bean > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' > while setting constructor argument with key [5]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': > Cannot resolve reference to bean > 'org.springframework.security.authentication.ProviderManager#0' while setting > bean property 'authenticationManager'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.authentication.ProviderManager#0': > Cannot resolve reference to bean > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' > while setting constructor argument; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider;[Blueprint > Extender: 1] ERROR > org.apache.aries.blueprint.container.BlueprintContainerImpl - Unable to start > container for blueprint bundle > com.bp.spring.hello/1.0.0.qualifierorg.springframework.beans.factory.BeanCreationException: > Error creating bean with name 'org.springframework.security.filterChains': > Cannot resolve reference to bean > 'org.springframework.security.web.DefaultSecurityFilterChain#0' while setting > bean property 'sourceList' with key [0]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.web.DefaultSecurityFilterChain#0': > Cannot resolve reference to bean > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' > while setting constructor argument with key [5]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': > Cannot resolve reference to bean > 'org.springframework.security.authentication.ProviderManager#0' while setting > bean property 'authenticationManager'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.authentication.ProviderManager#0': > Cannot resolve reference to bean > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' > while setting constructor argument; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider; > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:113) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:428) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:173) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1699) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1444) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:876) > at > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) > at > org.apache.aries.blueprint.spring.SpringBeanProcessor.process(SpringBeanProcessor.java:56) > at > org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:573) > at > org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:417) > at > org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:298) > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) at > org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106) > at > org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:45) > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748)Caused by: > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.web.DefaultSecurityFilterChain#0': > Cannot resolve reference to bean > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0' > while setting constructor argument with key [5]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': > Cannot resolve reference to bean > 'org.springframework.security.authentication.ProviderManager#0' while setting > bean property 'authenticationManager'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.authentication.ProviderManager#0': > Cannot resolve reference to bean > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' > while setting constructor argument; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider; > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:113) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:428) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:173) > at > org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:691) > at > org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:330) > ... 29 moreCaused by: > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0': > Cannot resolve reference to bean > 'org.springframework.security.authentication.ProviderManager#0' while setting > bean property 'authenticationManager'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.authentication.ProviderManager#0': > Cannot resolve reference to bean > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' > while setting constructor argument; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider; > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:113) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1699) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1444) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:330) > ... 43 moreCaused by: > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name 'org.springframework.security.authentication.ProviderManager#0': > Cannot resolve reference to bean > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0' > while setting constructor argument; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider; > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:113) > at > org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:691) > at > org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:330) > ... 53 moreCaused by: > org.springframework.beans.factory.BeanCreationException: Error creating bean > with name > 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0': > FactoryBean threw exception on object creation; nested exception is > java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider; > at > org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:178) > at > org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1821) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1266) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:330) > ... 65 moreCaused by: java.lang.AbstractMethodError: > org.apache.aries.blueprint.spring.BlueprintBeanFactory$WrapperBeanFactory.getBeanProvider(Lorg/springframework/core/ResolvableType;)Lorg/springframework/beans/factory/ObjectProvider; > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:431) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:352) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:345) > at > org.apache.aries.blueprint.spring.BlueprintBeanFactory.getBean(BlueprintBeanFactory.java:59) > at > org.springframework.security.config.authentication.AuthenticationManagerFactoryBean.getBeanOrNull(AuthenticationManagerFactoryBean.java:88) > at > org.springframework.security.config.authentication.AuthenticationManagerFactoryBean.getObject(AuthenticationManagerFactoryBean.java:65) > at > org.springframework.security.config.authentication.AuthenticationManagerFactoryBean.getObject(AuthenticationManagerFactoryBean.java:41) > at > org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:171) > ... 71 more > {code} > This is because blueprint-spring integration is implementing spring 4 > BeanFactory interface, they have added some methods in spring 5 which needs > to be implemented as well. > > -- This message was sent by Atlassian Jira (v8.3.4#803005)