As Willem stated, this is working as designed.  If you only need a Client 
object and not a proxy, you should likely use the JaxWsClientFactoryBean and 
not any of the various ways that a proxy is created (service object, 
JaxWsProxyFactoryBean, etc…).

Basically, if you create a proxy, that proxy is the "root" of everything 
related to it and needs to be help onto strongly for as long as anything 
internal to it is being used.    

Dan



On Feb 21, 2013, at 9:41 AM, nereuschen <[email protected]> wrote:

> hi,all:
> 
> ClientProxy throws NullPointerException when invoking its invoke();
> 
> java version : jdk1.6.0_30
> cxf version :2.6.2 ,2.7.0,2.7.3 
> 
> I debug the code  and find the ClientProxy.finalize() closes the bus ,so the
> bus is null ,then when the ClientImpl  to invoke the method doInvoke(),it 
> throws NullPointerException
> 
> the exception is:
> 
> DEBUG org.apache.cxf.phase.PhaseInterceptorChain 2013-02-21 22:36:23 -
> Invoking handleFault on interceptor
> org.apache.cxf.jaxws.interceptors.HolderOutInterceptor@3468f4
> DEBUG org.apache.cxf.phase.PhaseInterceptorChain 2013-02-21 22:36:23 -
> Invoking handleFault on interceptor
> org.apache.cxf.ws.policy.PolicyOutInterceptor@633d51
> WARN org.apache.cxf.phase.PhaseInterceptorChain 2013-02-21 22:36:23 -
> Interceptor for
> {http://server.hw.demo/}HelloWorld#{http://server.hw.demo/}sleep has thrown
> exception, unwinding now
> java.lang.NullPointerException: NullPointerException invoking
> http://localhost:9000/Hello: null
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>       at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>       at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1338)
>       at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1327)
>       at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
>       at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
>       at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>       at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>       at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:339)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:325)
>       at demo.wsdl2java.Demo.invokeByClientProxy(Demo.java:41)
>       at demo.wsdl2java.Demo.main(Demo.java:68)
>       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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> Caused by: java.lang.NullPointerException
>       at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:719)
>       at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1592)
>       at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1490)
>       at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309)
>       ... 17 more
> java.lang.NullPointerException
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:368)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:339)
>       at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:325)
>       at demo.wsdl2java.Demo.invokeByClientProxy(Demo.java:41)
>       at demo.wsdl2java.Demo.main(Demo.java:68)
>       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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> 
> 
> 
> The Sever works fine.
> step1:  To run the class demo.hw.server.Server.java 
> 
> 
> public class Server {
> 
>    protected Server() throws Exception {
>        HelloWorldImpl helloworldImpl = new HelloWorldImpl();
>        ServerFactoryBean svrFactory = new ServerFactoryBean();
>        svrFactory.setServiceClass(HelloWorld.class);
>        svrFactory.setAddress("http://localhost:9000/Hello";);
>        svrFactory.setServiceBean(helloworldImpl);
>        //svrFactory.getServiceFactory().setDataBinding(new
> AegisDatabinding());
>        svrFactory.create();
>    }
> 
>    public static void main(String args[]) throws Exception {
>        new Server();
>        System.out.println("Server ready...");
> 
>        Thread.sleep(500 * 60 * 1000);
>        System.out.println("Server exiting");
>        System.exit(0);
>    }
> }
> 
> 
> But the client failed,it throws a NullPointerException 
> 
> step2: to run the client  demo.wsdl2java.Demo.java,it throws a
> NullPointerException  
> 
> 
> public class Demo {
> 
>    protected org.apache.cxf.endpoint.Client initClient() {
> 
>        int connectTimeout=10;
>        int receiveTimeout=60;
> 
>        HelloWorld helloWorld = new HelloWorld();
>        HelloWorldPortType port = helloWorld.getHelloWorldPort()               
>      
> ;
> 
>        org.apache.cxf.endpoint.Client client = ClientProxy.getClient(port);
> //        HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
> //        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
> //        //httpClientPolicy.setConnectionTimeout(connectTimeout);
> //        httpClientPolicy.setAllowChunking(false);
> //        //httpClientPolicy.setReceiveTimeout(receiveTimeout);
> //        httpConduit.setClient(httpClientPolicy);
> //        client.getInInterceptors().add(new LoggingInInterceptor());
> //        client.getOutInterceptors().add(new LoggingOutInterceptor());
>        return client;
>    }
> 
>    public void invokeByClientProxy(){
>        System.out.println("invoke initClient...");
>        Client client=   this.initClient();
>        System.out.println("invoke sleep...");
>        Object[] result= new Object[0];
>        try {
>            result = client.invoke("sleep",0L);
>        } catch (Exception e) {
>            e.printStackTrace();  //To change body of catch statement use
> File | Settings | File Templates.
>        }
>        client.destroy();
>        System.out.println("PRINT RESULT...");
>        for(int i=0;i<result.length;i++){
>            System.out.println(result[i]);
>        }
>    }
> 
>    public void invoke(){
>       QName SERVICE_NAME = new QName(&quot;http://server.hw.demo/&quot;,
> &quot;HelloWorld&quot;);
>        URL wsdlURL = HelloWorld.WSDL_LOCATION;
>        HelloWorld ss = new HelloWorld(wsdlURL, SERVICE_NAME);
>        HelloWorldPortType port = ss.getHelloWorldPort();
> 
>        {
>            System.out.println(&quot;Invoking sleep...&quot;);
>            long _sleep_arg0 = 0;//60*1000+200;
>            java.lang.String _sleep__return = port.sleep(_sleep_arg0);
>            System.out.println(&quot;sleep.result=&quot; + _sleep__return);
>        }
>    }
> 
>    public  static  void main(String[] args) throws Exception {
>        Demo demo = new Demo();
>       demo.invokeByClientProxy();
>     //  demo.invoke();
> 
>     //   Thread.sleep(100000);
>    }
> }
> 
> the source code is :
> &lt;nabble_a href=&quot;cxf-nullpoint-demo.rar&quot;>cxf-nullpoint-demo.rar 
> 
> 
> 
> --
> View this message in context: 
> http://cxf.547215.n5.nabble.com/ClientProxy-throws-NullPointerException-when-invoking-its-invoke-tp5723532.html
> Sent from the cxf-user mailing list archive at Nabble.com.

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to