[ 
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

        

Reply via email to