[ https://issues.apache.org/jira/browse/CXF-3377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13256808#comment-13256808 ]
Elias Dorneles commented on CXF-3377: ------------------------------------- I have this same issue happening with an app, and spent some time debugging it. I think that, in my case, the problem is that ClientProxyFactoryBean calls configureObject() early in create() method, but I'm not familiar enough with CXF code to understand how all of this works... I don't know if this is the case with the OP, but in my case, I am creating Spring beans for the WebService clients in a Spring XML config file that goes like this: {noformat} <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/core" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <cxf:bus /> <!-- service factory that will be shared by the WS proxy factories --> <bean id="serviceFactory" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean" scope="prototype"> <property name="dataBinding"> <bean class="org.apache.cxf.aegis.databinding.AegisDatabinding" scope="prototype" /> </property> <property name="serviceConfigurations"> <list> <bean class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration" /> <bean class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration" /> <bean class="org.apache.cxf.service.factory.DefaultServiceConfiguration" /> <bean class="org.apache.cxf.aegis.databinding.XFireCompatibilityServiceConfiguration" /> </list> </property> </bean> <!-- proxy factory for myService --> <bean id="myServiceFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="package.of.MyService" /> <property name="address" value="http://path/to/MyService" /> <property name="username" value="uSeRnAmE" /> <property name="password" value="pAsSwOrD" /> <property name="serviceFactory" ref="serviceFactory" /> </bean> <!-- This will cause an NPE with CXF >= 2.3.3 --> <bean id="myService" class="package.of.MyService" factory-bean="myServiceFactory" factory-method="create" /> </beans> {noformat} This works perfectly fine using cxf-2.3.2, but fails with NPE using cxf-2.3.3: {noformat} Caused by: java.lang.NullPointerException at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.getConfiguredName(JaxWsProxyFactoryBean.java:73) at org.apache.cxf.frontend.ClientProxyFactoryBean.configureObject(ClientProxyFactoryBean.java:99) at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:120) {noformat} I created a simple project to verify this, I can provide it if necessary, but I only tested it against an internal-use-only WebService. But here are the dependencies of it (except the JAR containing the interface of the WS): {noformat} aopalliance.jar commons-logging-1.1.1.jar cxf-2.3.3.jar (this gives the NPE, but with cxf-2.3.2.jar it works) neethi-2.0.4.jar org.springframework.aop-3.1.1.RELEASE.jar org.springframework.asm-3.1.1.RELEASE.jar org.springframework.aspects-3.1.1.RELEASE.jar org.springframework.beans-3.1.1.RELEASE.jar org.springframework.context-3.1.1.RELEASE.jar org.springframework.context.support-3.1.1.RELEASE.jar org.springframework.core-3.1.1.RELEASE.jar org.springframework.expression-3.1.1.RELEASE.jar org.springframework.oxm-3.1.1.RELEASE.jar org.springframework.transaction-3.1.1.RELEASE.jar org.springframework.web-3.1.1.RELEASE.jar org.springframework.web.servlet-3.1.1.RELEASE.jar wsdl4j-1.6.2.jar XmlSchema-1.4.7.jar {noformat} ...and here is the main class: {noformat} package springcxftest; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApp { private ApplicationContext context; public void init() { context = new ClassPathXmlApplicationContext( "classpath:/appContext.xml"); } public static void main(String[] args) { TestApp app = new TestApp(); app.init(); System.out.println("App initialized"); } } {noformat} Using cxf-2.3.3, it will throw the Exception and never get to the "App initialized" message. I hope this helps to clarify the problem! > NPE in creating client after upgrading from 2.3.2 to 2.3.3 > ---------------------------------------------------------- > > Key: CXF-3377 > URL: https://issues.apache.org/jira/browse/CXF-3377 > Project: CXF > Issue Type: Bug > Components: JAX-WS Runtime > Affects Versions: 2.3.3 > Reporter: Jara Cesnek > Priority: Critical > Fix For: Invalid > > > {code} > org.springframework.beans.factory.BeanDefinitionStoreException: Factory > method [public java.lang.Object > org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create()] threw exception; nested > exception is java.lang.NullPointerException > at > org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:444) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:903) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:817) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > ~[spring-2.5.6.jar:2.5.6] > at java.security.AccessController.doPrivileged(Native Method) > ~[na:1.6.0_15] > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) > ~[spring-2.5.6.jar:2.5.6] > at > cz.marbes.daisy.sysmodules.childcontext.ChildContext.createChildContext(ChildContext.java:119) > ~[daisy-core-3.12.8.0-SNAPSHOT.jar:na] > at > cz.marbes.daisy.sysmodules.childcontext.BeanFromChildContext.onApplicationEvent(BeanFromChildContext.java:84) > ~[daisy-core-3.12.8.0-SNAPSHOT.jar:na] > at > org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383) > ~[spring-2.5.6.jar:2.5.6] > at > cz.marbes.daisy.sysmodules.support.SwitchableXmlWebApplicationContext.refresh(SwitchableXmlWebApplicationContext.java:82) > ~[daisy-core-3.12.8.0-SNAPSHOT.jar:na] > at > org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) > ~[spring-2.5.6.jar:2.5.6] > at > org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764) > [catalina.jar:na] > at > org.apache.catalina.core.StandardContext.start(StandardContext.java:4216) > [catalina.jar:na] > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) > [catalina.jar:na] > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) > [catalina.jar:na] > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) > [catalina.jar:na] > at > org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626) > [catalina.jar:na] > at > org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) > [catalina.jar:na] > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) > [catalina.jar:na] > at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) > [catalina.jar:na] > at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) > [catalina.jar:na] > at > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) > [catalina.jar:na] > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) > [catalina.jar:na] > at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) > [catalina.jar:na] > at > org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) > [catalina.jar:na] > at > org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) > [catalina.jar:na] > at > org.apache.catalina.core.StandardService.start(StandardService.java:448) > [catalina.jar:na] > at > org.apache.catalina.core.StandardServer.start(StandardServer.java:700) > [catalina.jar:na] > at org.apache.catalina.startup.Catalina.start(Catalina.java:552) > [catalina.jar:na] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.6.0_15] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > ~[na:1.6.0_15] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > ~[na:1.6.0_15] > at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_15] > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) > [bootstrap.jar:na] > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) > [bootstrap.jar:na] > Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: > Factory method [public java.lang.Object > org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create()] threw exception; nested > exception is java.lang.NullPointerException > at > org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:127) > ~[spring-2.5.6.jar:2.5.6] > at > org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:435) > ~[spring-2.5.6.jar:2.5.6] > ... 50 common frames omitted > Caused by: java.lang.NullPointerException: null > at > org.apache.cxf.jaxws.JaxWsProxyFactoryBean.getConfiguredName(JaxWsProxyFactoryBean.java:73) > ~[cxf-bundle-2.3.3.jar:2.3.3] > at > org.apache.cxf.frontend.ClientProxyFactoryBean.configureObject(ClientProxyFactoryBean.java:99) > ~[cxf-bundle-2.3.3.jar:2.3.3] > at > org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:120) > ~[cxf-bundle-2.3.3.jar:2.3.3] > at > org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:133) > ~[cxf-bundle-2.3.3.jar:2.3.3] > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > ~[na:1.6.0_15] > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > ~[na:1.6.0_15] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > ~[na:1.6.0_15] > at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_15] > at > org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:115) > ~[spring-2.5.6.jar:2.5.6] > ... 51 common frames omitted > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira