On May 12, 2014, at 4:21 PM, Niels Boldt <n...@renderloop.dk> wrote:
> Hi, > > I'm trying to connect a apache cxf client to a wcf service that apparently > uses wsHttpBinding, the wsdl is at > http://ws.domea.dk/Domeabolig/DomeaService.DomeaData.svc?wsdl I don’t see anything in that wsdl that shouldn’t work. However, getting it to work is a bit tricky due to the SpnegoContextToken. Take a look at Colms blog: http://coheigea.blogspot.com/2012/02/ws-trust-spnego-support-in-apache-cxf.html that might help get you started. > > I have created a gist at > https://gist.github.com/anonymous/71ac4e76b58f0c1e7f11 that shows my > complete code, client is generated with apache cxf 2.7.11 The code has some issues: First, the factory.setAddress line likely should be factory.setWsdlLocation as you are setting it to the location of the WSDL. If you use the WSDL, then you don’t need to set the address as the address can be pulled from the WSDL. When you then use the wsdl, you’ll likely hit various policy related stack traces as you would need to set the various WS-SecurityPolicy related properties to get the policy to be usable. Colm’s blog would be a starting point for that. Dan > > The pom I use for generation can be seen here: > https://gist.github.com/anonymous/b37d1a459d11c0f3c863 > > I tried googling, and consensus seems to be that it is close to impossible > to get working. Can that be correct? Has anyone succeded in making this > work? > > Thanks > Niels > > My code is > > > > > > > > > > > > * IDomeaData domeaData = (IDomeaData)factory.create(); Client > client = ClientProxy.getClient(domeaData); HTTPConduit conduit = > (HTTPConduit)client.getConduit(); //TLSClientParameters tlsCP = new > TLSClientParameters(); // other TLS/SSL configuration like setting > up TrustManagers //tlsCP.setDisableCNCheck(true); > //conduit.setTlsClientParameters(tlsCP); > conduit.getAuthorization().setUserName("XXX"); > conduit.getAuthorization().setPassword("XXX"); > domeaData.hentLedigeBoligerNy(0, 0, new BigDecimal(0), new > BigDecimal(1000000), new BigDecimal(0), new BigDecimal(1000000), "", 0, 0, > 10, false, 0, 10, true, true, true, true, 1000, "", "");* > which results in the following stack trace > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *javax.xml.ws.WebServiceException: Could not send Message. at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146) > at com.sun.proxy.$Proxy42.hentLedigeBoligerNy(Unknown Source) at > dk.binaryconstructors.domea.DomeaTest.testBoligFetch(DomeaTest.java:123) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:601) at > org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) > at org.testng.internal.Invoker.invokeMethod(Invoker.java:702) at > org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894) at > org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219) at > org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) > at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) > at org.testng.TestRunner.privateRun(TestRunner.java:768) at > org.testng.TestRunner.run(TestRunner.java:617) at > org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at > org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at > org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at > org.testng.SuiteRunner.run(SuiteRunner.java:240) at > org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) at > org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87) at > org.testng.TestNG.runSuitesSequentially(TestNG.java:1185) at > org.testng.TestNG.runSuitesLocally(TestNG.java:1110) at > org.testng.TestNG.run(TestNG.java:1022) at > org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109) at > org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202) at > org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173)Caused by: > java.net.SocketTimeoutException: SocketTimeoutException invoking > http://ws.domea.dk/Domeabolig/DomeaService.DomeaData.svc?wsdl > <http://ws.domea.dk/Domeabolig/DomeaService.DomeaData.svc?wsdl>: Read timed > out at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1347) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1331) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) > at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) > at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:570) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:479) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382) at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335) at > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135) > ... 26 moreCaused by: java.net.SocketTimeoutException: Read timed out at > java.net.SocketInputStream.socketRead0(Native Method) at > java.net.SocketInputStream.read(SocketInputStream.java:150) at > java.net.SocketInputStream.read(SocketInputStream.java:121) at > java.io.BufferedInputStream.fill(BufferedInputStream.java:235) at > java.io.BufferedInputStream.read1(BufferedInputStream.java:275) at > java.io.BufferedInputStream.read(BufferedInputStream.java:334) at > sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:633) at > sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:579) at > sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1322) > at > java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468) > at > org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.getResponseCode(URLConnectionHTTPConduit.java:266) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1543) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1513) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1318) > ... 36 more* -- Daniel Kulp dk...@apache.org - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com