[ 
https://issues.apache.org/jira/browse/CXF-1663?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12610218#action_12610218
 ] 

Jo Geraerts commented on CXF-1663:
----------------------------------

I was able to work around this issue by using the legacy 
AbstractDependencyInjectionSpringContextTests and not use @Resource 



> Attempting to use a Spring configured HTTPConduit causing compatability 
> problems with Spring 2.5.4 testing framework
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-1663
>                 URL: https://issues.apache.org/jira/browse/CXF-1663
>             Project: CXF
>          Issue Type: Bug
>          Components: Transports
>    Affects Versions: 2.0.5
>            Reporter: James Kavanagh
>            Priority: Minor
>
> Hi there,
> I'm attempting to run some integration tests with a spring configured HTTP 
> conduit:
>     <http:conduit name="*.http-conduit">
>         <http:tlsClientParameters secureSocketProtocol="SSL">
>             <sec:keyManagers keyPassword="0123456789">
>                 <sec:keyStore type="PKCS12" password="0123456789"
>                     file="src/test/resources/keystores/client.p12"/>
>             </sec:keyManagers>
>             <sec:trustManagers>
>                 <sec:keyStore type="JKS" password="0123456789"
>                     file="src/test/resources/keystores/truststore.jks" />
>             </sec:trustManagers>        
>             <sec:cipherSuitesFilter>
>                 <!-- these filters ensure that a ciphersuite with
>                     export-suitable or null encryption is used,
>                     but exclude anonymous Diffie-Hellman key change as
>                     this is vulnerable to man-in-the-middle attacks -->
>                 <sec:include>.*_EXPORT_.*</sec:include>
>                 <sec:include>.*_EXPORT1024_.*</sec:include>
>                 <sec:include>.*_WITH_DES_.*</sec:include>
>                 <sec:include>.*_WITH_NULL_.*</sec:include>
>                 <sec:exclude>.*_DH_anon_.*</sec:exclude>
>             </sec:cipherSuitesFilter>
>         </http:tlsClientParameters>
>     </http:conduit>              
> My test class is using JUnit 4 annotations and I'm also extending from 
> AbstractJUnit4SpringContextTests which as you may know automatically loads 
> the spring context for you with autowiring turned on. The problem I'm having 
> is that HTTPConduit declares some of its methods with the @Resource 
> annotation which Spring then attempts to resolved dependencies for and fails. 
> The issue is that the HTTPConduit class does not need these dependencies 
> injected in order to function correctly so I guess I'm wondering why they are 
> annotated as such. Is this necessary?
> If so is there anything I can do to work around this problem?
> Here's a sample stack trace to illustrated the problem that occurs:
> javax.xml.ws.soap.SOAPFaultException: Error creating bean with name 
> '*.http-conduit': Injection of resource methods failed; nested exception is 
> org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique 
> bean of type [org.apache.cxf.configuration.security.AuthorizationPolicy] is 
> defined: Unsatisfied dependency of type [class 
> org.apache.cxf.configuration.security.AuthorizationPolicy]: expected at least 
> 1 matching bean
>       at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:211)
>       at $Proxy54.getAccountDetails(Unknown Source)
>       at 
> com.sportex.regpay.payment.mtapi.transfers.TransferFundsIntegrationTest.performTransferCreditSuccessfulWithGBP(TransferFundsIntegrationTest.java:97)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at 
> org.springframework.test.context.junit4.SpringTestMethod.invoke(SpringTestMethod.java:163)
>       at 
> org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:233)
>       at 
> org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:333)
>       at 
> org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
>       at 
> org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
>       at 
> org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
>       at 
> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:142)
>       at 
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
>       at 
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
>       at 
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>       at 
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>       at 
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: org.springframework.beans.factory.BeanCreationException: Error 
> creating bean with name '*.http-conduit': Injection of resource methods 
> failed; nested exception is 
> org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique 
> bean of type [org.apache.cxf.configuration.security.AuthorizationPolicy] is 
> defined: Unsatisfied dependency of type [class 
> org.apache.cxf.configuration.security.AuthorizationPolicy]: expected at least 
> 1 matching bean
>       at 
> org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:306)
>       at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:996)
>       at 
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.configureBean(AbstractAutowireCapableBeanFactory.java:283)
>       at 
> org.springframework.beans.factory.wiring.BeanConfigurerSupport.configureBean(BeanConfigurerSupport.java:155)
>       at 
> org.apache.cxf.configuration.spring.ConfigurerImpl.configureBean(ConfigurerImpl.java:114)
>       at 
> org.apache.cxf.configuration.spring.ConfigurerImpl.configureWithWildCard(ConfigurerImpl.java:134)
>       at 
> org.apache.cxf.configuration.spring.ConfigurerImpl.configureBean(ConfigurerImpl.java:101)
>       at 
> org.apache.cxf.configuration.spring.ConfigurerImpl.configureBean(ConfigurerImpl.java:84)
>       at 
> org.apache.cxf.transport.http.AbstractHTTPTransportFactory.configure(AbstractHTTPTransportFactory.java:223)
>       at 
> org.apache.cxf.transport.http.AbstractHTTPTransportFactory.getConduit(AbstractHTTPTransportFactory.java:163)
>       at 
> org.apache.cxf.transport.http.AbstractHTTPTransportFactory.getConduit(AbstractHTTPTransportFactory.java:145)
>       at 
> org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:73)
>       at 
> org.apache.cxf.endpoint.UpfrontConduitSelector.prepare(UpfrontConduitSelector.java:61)
>       at 
> org.apache.cxf.endpoint.ClientImpl.prepareConduitSelector(ClientImpl.java:452)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:273)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
>       at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>       at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:170)
>       ... 24 more
> Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
> No unique bean of type 
> [org.apache.cxf.configuration.security.AuthorizationPolicy] is defined: 
> Unsatisfied dependency of type [class 
> org.apache.cxf.configuration.security.AuthorizationPolicy]: expected at least 
> 1 matching bean
>       at 
> org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:613)
>       at 
> org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:423)
>       at 
> org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:502)
>       at 
> org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:192)
>       at 
> org.springframework.beans.factory.annotation.InjectionMetadata.injectMethods(InjectionMetadata.java:117)
>       at 
> org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:303)
>       ... 41 more
> Many thanks,
> James K

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to