I created a dispatch of a CXF service using the SOAPMessage:

Service service = Service.create(new QName(dataSource.getNamespace(),
dataSource.getServiceName()));
QName portQName = new QName(dataSource.getNamespace(),
dataSource.getPortTypeName());
service.addPort(portQName, "SOAPBinding.SOAP11HTTP_BINDING",
dataSource.getURL());
Dispatch<SOAPMessage> dispSoapMsg = service.createDispatch(portQName,
SOAPMessage.class, Service.Mode.MESSAGE);

I tried to get the CXF client using 

Client client = ClientProxy.getClient(dispSoapMsg);

and got exception:
java.lang.IllegalArgumentException: not a proxy instance
        at java.lang.reflect.Proxy.getInvocationHandler(Proxy.java:637)
        at org.apache.cxf.frontend.ClientProxy.getClient(ClientProxy.java:93)
        at
mil.army.soa.adsl.common.datasource.HTTPSOAPDataSourceUtil.init(HTTPSOAPDataSourceUtil.java:140)
        at
mil.army.soa.adsl.common.test.SOAPDSUtilsFuncTest.testSOAPDSUtilUsingXQuery(SOAPDSUtilsFuncTest.java:62)
        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 junit.framework.TestCase.runTest(TestCase.java:168)
        at junit.framework.TestCase.runBare(TestCase.java:134)
        at junit.framework.TestResult$1.protect(TestResult.java:110)
        at junit.framework.TestResult.runProtected(TestResult.java:128)
        at junit.framework.TestResult.run(TestResult.java:113)
        at junit.framework.TestCase.run(TestCase.java:124)
        at junit.framework.TestSuite.runTest(TestSuite.java:232)
        at junit.framework.TestSuite.run(TestSuite.java:227)
        at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
        at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
        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)

Then, I tried 

Client client = ClientProxy.getClient(dispSoapMsg.getBinding());

and got the same exception.

I also tried to get the port first (it works with Dispactch<Source>):

SOAPMessage port = service.getPort(portQName, SOAPMessage.class); 
Client client = ClientProxy.getClient(port);

I got another exception:

java.lang.IllegalArgumentException: javax.xml.soap.SOAPMessage is not an
interface
        at java.lang.reflect.Proxy.getProxyClass(Proxy.java:362)
        at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
        at
org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:118)
        at
org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:115)
        at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:437)
        at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:315)
        at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:302)
        at javax.xml.ws.Service.getPort(Service.java:92)
        at
mil.army.soa.adsl.common.datasource.HTTPSOAPDataSourceUtil.init(HTTPSOAPDataSourceUtil.java:139)
        at
mil.army.soa.adsl.common.test.SOAPDSUtilsFuncTest.testSOAPDSUtilUsingXQuery(SOAPDSUtilsFuncTest.java:62)
        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 junit.framework.TestCase.runTest(TestCase.java:168)
        at junit.framework.TestCase.runBare(TestCase.java:134)
        at junit.framework.TestResult$1.protect(TestResult.java:110)
        at junit.framework.TestResult.runProtected(TestResult.java:128)
        at junit.framework.TestResult.run(TestResult.java:113)
        at junit.framework.TestCase.run(TestCase.java:124)
        at junit.framework.TestSuite.runTest(TestSuite.java:232)
        at junit.framework.TestSuite.run(TestSuite.java:227)
        at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
        at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
        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)

Does anybody know how to get a CXF client from a Dispatch<SOAPMessage>? 
Thanks


-- 
View this message in context: 
http://www.nabble.com/How-to-get-CXF-client-from-Dispacth%3CSOAPMessage%3E-tp25892944p25892944.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to