ссылка на бобовые из вложенных ресурсов импорта - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть весенний конфигурационный файл service.xml , который импортирует applicationContext.xml , а мое applicationContext.xml импортирует security.xml .

Теперь в моем service.xml определен бин, скажем

<bean id="mySecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
<property name="validationActions" value="UsernameToken" />
<property name="securementActions" value="UsernameToken" />
<property name="validationCallbackHandler" ref="myPasswordCallbackHandler" />

Этот myPasswordCallbackHandler bean определен в security.xml , но при загрузке контекста приложения я получил определение bean-компонента для myPasswordCallbackHandler.

Как можно ссылаться на этот myPasswordCallbackHandler bean ??

Спасибо!

Вот стэкTrace:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mySecurityInterceptor' defined in ServletContext resource [/WEB-INF/service.xml]: Cannot resolve reference to bean 'mySecurityPasswordCallbackHandler' while setting bean property 'validationCallbackHandler'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mySecurityPasswordCallbackHandler' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 64 more

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mySecurityPasswordCallbackHandler' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:266)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)

Вот мой myPasswordCallbackHandler def:

<beans:bean id="myPasswordCallbackHandler"
  class="org.springframework.ws.soap.security.wss4j.callback.SpringPlainTextPasswordValidationCallbackHandler">
<beans:property name="authenticationManager" ref="authenticationManager"/>

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Похоже, у вас где-то есть опечатка, в вашем посте есть ссылки на два компонента: mySecurityPasswordCallbackHandler и myPasswordCallbackHandler.Убедитесь, что вы используете правильное имя.

0 голосов
/ 07 декабря 2011

Не уверен, поможет ли это, но вы можете попробовать явную зависимость от

<bean id="mySecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor" depends-on="myPasswordCallbackHandler">
<property name="validationActions" value="UsernameToken" />
<property name="securementActions" value="UsernameToken" />
<property name="validationCallbackHandler" ref="myPasswordCallbackHandler" />

Если у вас есть bean-компонент myPasswordCallbackHandler и все операторы импорта корректны, я не вижу проблем с использованием.

...