Hi,
I'm confused with your question. What's your current problem? The conduit is always null or you still see "Unconnected sockets not
implemented"?
What's your cxf bc provider configuration? And could you set your inteceptor phase as PRE_LOGICAL and try again?
Freeman

ning_sunrise wrote:
Hi Freeman:
     I update cxf to 2.1.5 but I have same problem. To test this, I do like
following
     soap -> servicemix cxf bc(with ws security + ssl) -> servicemix camel
-> servicemix cxf-bc- provider( ssl to external web service + Outbound
Interceptor) --> external web service.
     In the  Outbound Interceptor, I changed the conduit like this

     public OutboundSslInterceptor() {
                super(Phase.PRE_STREAM);
        }

     public void handleMessage(Message message) throws Fault {
        
            System.out.println("start setting in ssl");
System.out.println(message.size()); MessageExchange me = message.get(MessageExchange.class); HTTPConduit conduit = (org.apache.cxf.transport.http.HTTPConduit)
message
                                .getExchange().getConduit(message);

                if (conduit != null) {
                        
                        System.out.println("Setting conduit");
                        
                        TLSClientParameters sslParams = new 
TLSClientParameters();

                        sslParams.setDisableCNCheck(Boolean.TRUE);
                        sslParams
                                        .setTrustManagers(new TrustManager[] { 
new My509TrustManager() });
                        conduit.setTlsClientParameters(sslParams);
                        return;
                }
                System.out.println("Setting in ssl conduit is null");
        }


From the debug information, I saw the camel send the soap message to
cxf provider, but I can not get conduit, it always null.

      What  is wrong?  Did I set the interceptor  in correct Phase?

      Thanks
      Ning



ning_sunrise wrote:
Hi:
    I try do some flow like following    soap-->servicemix cxf bc (with ws
security) -->servicemix cxf-se->servicmeix cxf-bc-provider --> external
web service.

    The connection  between  servicmeix cxf-bc-provider --> external web
service is ssl.
     My problem is  we can not handle the ssl  by using java
keystore/truststore file. We have to write our customize TrustManager, we
want to  add code like following before we sent out soap request to
external ws.
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(com.mycompany.Service.class); factory.setAddress(external ws url); Session.service = (com.mycompany.Service) factory.create(); Client client = ClientProxy.getClient(Session.adc); HTTPConduit http = (HTTPConduit) client.getConduit(); TLSClientParameters tls = new TLSClientParameters(); tls.setDisableCNCheck(true); tls.setTrustManagers(new TrustManager[]{new MyCustomTrustManager()}); http.setTlsClientParameters(tls);
     ............

     I can make the code work outside servicemix.
Does anyone know how to do it in servicemix BC or a working around?
     Thanks
      Ning




--
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com

Reply via email to