I am trying to upgrade from 2.2.2 to the 2.2.6 version of CXF and am
encountering deployment issues. I am getting the error specified in the
subject.

    <jaxws:client id="payPalAuthorizationClient"
                  serviceClass="MyClass"
                  address="${myAddress}"
                  username="${foo}"
                  password="${bar}">

Upon further research, it turns out this is due to a <jaxws:client/> bean
that was defined in conjunction with Spring Security. Spring Security looks
for a SpringSecurityContextSource within the bean definitions as part of the
postProcessBeanFactory(). The <jaxws:client/> leverages a factory bean,
JaxWsProxyFactoryBeanDefinitionParser.JAXWSSpringClientProxyFactoryBean, for
the web service client. In order to check type of the factory bean against
SpringSecurityContextSource, the factory bean must be instantiated. During
the construction of the factory bean, the factory bean is assigned the
application context.

        public void setApplicationContext(ApplicationContext ctx) throws
BeansException {
            if (getBus() == null) {
                Bus bus = BusFactory.getThreadDefaultBus();
               
BusWiringBeanFactoryPostProcessor.updateBusReferencesInContext(bus, ctx);
                setBus(bus);
            }
        }

>From the code above, the BusWiringBeanFactoryPostProcessor is invoked
explicitly. This post processor will inject the bus reference into bean
definitions that have the wireBus attribute defined. 

else if (BusWiringType.CONSTRUCTOR == beanDefinition
               
.getAttribute(AbstractBeanDefinitionParser.WIRE_BUS_ATTRIBUTE)) {
                LOG.fine("Found " +
AbstractBeanDefinitionParser.WIRE_BUS_ATTRIBUTE + " attribute "
                         + BusWiringType.CONSTRUCTOR + " on bean " +
beanName);
                ConstructorArgumentValues constructorArgs =
beanDefinition.getConstructorArgumentValues();
                insertConstructorArg(constructorArgs, inject);
            }

One of these beans is the cxf.config (BusConfig class) bean. In addition,
the BusWiringBeanFactoryPostProcessor will get invoked once again as part of
the Spring postProcessBeanFactory() lifecycle causing the constructor
argument for the bus to be injected again. This causes the constructor for
cxf.config (and anything else that references the bus) to not match and
fails. Am I using this incorrectly or is this a bug?


-- 
View this message in context: 
http://old.nabble.com/%27cxf.config%27%3A-2-constructor-arguments-specified-but-no-matching-constructor-tp28083328p28083328.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to