Thanks for the information. However, httpConduit.getTlsClientParameters() =
null.

Xinxin


Eamonn Dwyer-2 wrote:
> 
> 
> Hi Xinxin
> I replied to a similar issue back in May 2009 for Michael Szalay  and the
> following code seemed to work for him. 
> http://mail-archives.apache.org/mod_mbox/cxf-users/200905.mbox/browser
> The code looks very similar to your code though so I'm surprised it
> doesn't work for you too. 
> 
> The only difference I can see (after a quick inspection) is that I
> suggested getting the handle to the TLSClientParamaters using the
> following code,
> TLSClientParameters tlsCP = httpConduit.getTlsClientParameters();
> whereas you created a new instance of it and then called
> setTlsClientParamaters()
> 
> Maybe worth trying my way?
> 
> regards
> Eamonn
> 
> 
>> Date: Wed, 2 Sep 2009 07:47:53 -0700
>> From: wang_xin...@bah.com
>> To: users@cxf.apache.org
>> Subject: CXF Client: Software caused connection abort: recv failed
>> 
>> 
>> I deployed my service on JBoss 4.2.3/JDK 1.6.0_10 with port 443 over SSL
>> with
>> the following connector:
>> 
>> <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" 
>>     maxThreads="150" scheme="https" secure="true" clientAuth="true"
>> address="${jboss.bind.address}"
>>     keystoreFile="${jboss.server.home.dir}/conf/server.keystore.jks"
>> keystorePass="testit"
>>     truststoreFile="${jboss.server.home.dir}/conf/client.keystore.jks"
>> truststorePass="testit"
>>     sslProtocol="TLS">
>> </Connector>
>> 
>> I created both server.keystore.jks and client.keystore.jks using JDK
>> keytool
>> with RSA algorithm.
>> 
>> My client is located on the same machine. I am using
>> https://localhost:443/....  to connect to the service. 
>> I am using the following code to set up the httpconduit and invoke the
>> service:
>> 
>>      
>>      Service service = Service.create(new QName(namespace, serviceName));
>>      QName portQName = new QName(namespace, portTypeName);
>>      service.addPort(portQName, SOAPBinding.SOAP11HTTP_BINDING, endPoint);
>>      dispPayload = service.createDispatch(portQName, Source.class,
>> Service.Mode.PAYLOAD);
>>      BindingProvider bp = (BindingProvider)service.getPort(portQName,
>> Source.class);
>>              
>>      HTTPConduit httpConduit =
>> (HTTPConduit)ClientProxy.getClient(bp).getConduit();         
>>      TLSClientParameters tlsParams = new TLSClientParameters(); 
>>      tlsParams.setDisableCNCheck(true); 
>>            
>>      KeyStore trustStore = KeyStore.getInstance("JKS"); 
>>      String trustpass = "testit";//provide trust pass 
>>      InputStream trustStream =
>> Thread.currentThread().getContextClassLoader().getResourceAsStream("server.keystore.jks");
>>      trustStore.load(trustStream, trustpass.toCharArray()); 
>>      TrustManagerFactory trustFactory =
>> TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
>>      trustFactory.init(trustStore); 
>>      TrustManager[] tm = trustFactory.getTrustManagers();
>>      tlsParams.setTrustManagers(tm); 
>> 
>>      KeyStore keyStore = KeyStore.getInstance("JKS");
>>      String keypass = "testit";//provide client keystore pass 
>>      InputStream keyStream =
>> Thread.currentThread().getContextClassLoader().getResourceAsStream("client.keystore.jks");
>>      keyStore.load(keyStream, keypass.toCharArray()); 
>>      KeyManagerFactory keyFactory =
>> KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
>>      keyFactory.init(keyStore, keypass.toCharArray()); 
>>      KeyManager[] km = keyFactory.getKeyManagers(); 
>>      tlsParams.setKeyManagers(km); 
>> 
>>      FiltersType filter = new FiltersType(); 
>>      filter.getInclude().add(".*_EXPORT_.*"); 
>>      filter.getInclude().add(".*_EXPORT1024_.*"); 
>>      filter.getInclude().add(".*_WITH_DES_.*"); 
>>      filter.getInclude().add(".*_WITH_NULL_.*"); 
>>      filter.getExclude().add(".*_DH_anon_.*"); 
>>      tlsParams.setCipherSuitesFilter(filter);//set all the needed include and
>> exclude filters. 
>> 
>>      httpConduit.setTlsClientParameters(tlsParams);
>>      
>>                              
>>      InputStream inputStream =
>> Thread.currentThread().getContextClassLoade().getResourceAsStream(request);
>>                                              
>>      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>>      factory.setNamespaceAware(true);
>>      DocumentBuilder builder = factory.newDocumentBuilder();
>>      Document document = builder.parse(inputStream);
>>      Source requestSource = new DOMSource(document); 
>>                      
>>      Source response = dispPayload.invoke(requestSource);
>>                      
>> When I run the client code, I got the following Exception at the line
>> above:
>> 
>>      org.apache.cxf.interceptor.Fault: Could not send Message.
>>      at
>> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
>>      at
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
>>      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:471)
>>      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:301)
>>      at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
>>      at org.apache.cxf.endpoint.ClientImpl.invokeWrapped(ClientImpl.java:288)
>>      at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:257)
>>      at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:195)
>>      at
>> mil.army.soa.adsl.client.DataServiceClient.retrieve(DataServiceClient.java:115)
>>      at
>> mil.army.soa.adsl.tester.DataServiceTester.main(DataServiceTester.java:37)
>> Caused by: java.net.SocketException: Software caused connection abort:
>> recv
>> failed
>>      at java.net.SocketInputStream.socketRead0(Native Method)
>>      at java.net.SocketInputStream.read(SocketInputStream.java:129)
>>      at
>> com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
>>      at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
>>      at
>> com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789)
>>      at
>> com.sun.net.ssl.internal.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1435)
>>      at
>> com.sun.net.ssl.internal.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:103)
>>      at
>> com.sun.net.ssl.internal.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:612)
>>      at
>> com.sun.net.ssl.internal.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:868)
>>      at
>> com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:794)
>>      at
>> com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:226)
>>      at
>> com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
>>      at
>> com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
>>      at
>> com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
>>      at
>> com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
>>      at
>> com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
>>      at
>> com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1107)
>>      at
>> sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:415)
>>      at
>> sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
>>      at
>> sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:881)
>>      at
>> sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
>>      at
>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1909)
>>      at
>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1864)
>>      at
>> org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42)
>>      at
>> org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
>>      at
>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1927)
>>      at
>> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
>>      at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)
>>      at
>> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>>      ... 9 more      
>> 
>> If I set the clientAuth="false", I do not get this exception. 
>> 
>> Thanks for any help,
>> 
>> Xinxin
>> -- 
>> View this message in context:
>> http://www.nabble.com/CXF-Client%3A-Software-caused-connection-abort%3A-recv-failed-tp25259046p25259046.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>> 
> 
> _________________________________________________________________
> Get 30 Free Emoticons for your Windows Live Messenger
> http://www.livemessenger-emoticons.com/funfamily/en-ie/
> 

-- 
View this message in context: 
http://www.nabble.com/CXF-Client%3A-Software-caused-connection-abort%3A-recv-failed-tp25259046p25345638.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to