cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yaroslav Gnatyuk (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-4741) Different conduits are used when configuring stub and sending actual message
Date Wed, 09 Jan 2013 15:08:13 GMT

    [ https://issues.apache.org/jira/browse/CXF-4741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13548558#comment-13548558
] 

Yaroslav Gnatyuk commented on CXF-4741:
---------------------------------------

You're right, I'm trying to debug it right now to see the exact content of conduits collection.
Basically what I'm doing is I have already generated SOAP client (by means of cxf-codegen-plugin)
and the URL in WSDL differs from the one I'm actually calling. So for each call I'm getting
a port and configuring its conduit with URL, read timeout, connection timeout and TLS

{code}
        Client client = ClientProxy.getClient(port);
        client.getRequestContext().put(Message.ENDPOINT_ADDRESS, endpointUrl);

        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
        httpClientPolicy.setConnectionTimeout(connectionTimeout);
        httpClientPolicy.setReceiveTimeout(readTimeout);

        HTTPConduit http = (HTTPConduit) client.getConduit();
        http.setClient(httpClientPolicy);

        try {
            char[] password = keyStorePassword.toCharArray();

            KeyStore keyStore = KeyStore.getInstance(keyStoreType);
            keyStore.load(new ClassPathResource(keyStoreLocation).getInputStream(), password);

            KeyManagerFactory factory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            factory.init(keyStore, password);

            TLSClientParameters params = new TLSClientParameters();
            params.setKeyManagers(factory.getKeyManagers());
            http.setTlsClientParameters(params);
        } catch (Exception e) {
            throw new RuntimeException("Cannot build key managers", e);
        }
{code}

But looks like when I'm actually doing a call it uses different conduit in ClientImpl.doInvoke()
                
> Different conduits are used when configuring stub and sending actual message
> ----------------------------------------------------------------------------
>
>                 Key: CXF-4741
>                 URL: https://issues.apache.org/jira/browse/CXF-4741
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.6.2, 2.6.4
>            Reporter: Yaroslav Gnatyuk
>
> I was trying to set TLS context as described here: [How to configure the HTTPConduit
for the SOAP Client?|http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html#ClientHTTPTransport%28includingSSLsupport%29-HowtoconfiguretheHTTPConduitfortheSOAPClient%3F]
> However it doesn't work in CXF 2.6.2 and 2.6.4 while it worked perfectly fine in 2.5.3
> When looking into the code (line numbers are for version 2.6.4) I discovered that during
this configuration a new message is created and passed to conduit selector (in this case UpfrontConduitSelector)
- ClientImpl.getConduit():846.
> New conduit is created, assigned to message and returned.
> However when I do an actual call, I get to ClientImpl.doInvoke():486 where another message
is created. Later on prepare() is called on conduit selector at ClientImpl.prepareConduitSelector():850
but the message is different so another conduit is created.
> This results in my conduit config being disregarded and I'm getting SSLHandshakeException

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message