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.