jochenr commented on issue #5218:
URL: https://github.com/apache/camel-quarkus/issues/5218#issuecomment-1751782453

   
   Hello @ppalaga ,
   
   I just want to update this issue by providing the findings we made (together 
with Red Hat Support):
   
   My reproducers actually show several issues:
   
   1.) CXF configuration issue with HTTPConduit
   
   
   ```
                TrustManager[] trustAllCerts = new TrustManager[] { new 
X509TrustManager() {
                   public java.security.cert.X509Certificate[] 
getAcceptedIssuers() {
                       return null;
                   }
   
                   public void checkClientTrusted(X509Certificate[] certs, 
String authType) {
                   }
   
                   public void checkServerTrusted(X509Certificate[] certs, 
String authType) {
                   }
   
               } };
                        
   
   
               TLSClientParameters tlsCP = new TLSClientParameters();
               tlsCP.setDisableCNCheck(true);
               tlsCP.setHostnameVerifier(new NoopHostnameVerifier());
              
        // this is needed with new version
        // is this just a workaround or does it make sense, if I set a 
"NoopHostnameVerifier" ?
               tlsCP.setTrustManagers(trustAllCerts);
   
               httpConduit.setTlsClientParameters(tlsCP);
   
   ```
   
   same for an CxfEndpoint as producer in Quarkus camel-cxf:
   
   ```                  
                        CxfEnpoint mockToSapCxfProducer;
                        ....
   
                        /* this is now need start*/
                        SSLContextParameters sslContextParameters = new 
SSLContextParameters();
                        TrustManagersParameters trustManagersParameters = new 
TrustManagersParameters();
                        
trustManagersParameters.setTrustManager(trustAllCerts[0]);
                        
sslContextParameters.setTrustManagers(trustManagersParameters);
                        /* this is now needs end*/
                        
mockToSapCxfProducer.setSslContextParameters(sslContextParameters);
                        
                        mockToSapCxfProducer.setHostnameVerifier(new 
NoopHostnameVerifier());
   ```          
   
   
   2.) Order/place where to get the HTTPConduit 
   
   You have to get the HTTPConduit
   ```          
                        HTTPConduit httpConduit = (HTTPConduit) 
ClientProxy.getClient(port).getConduit();
   ```          
   AFTER putting ENDPOINT_ADDRESS_PROPERTY did not work in my real application.
   
   Otherwise the default Endpoint of the WSDL is used instead of the one 
provided with "requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY...."
   Then it's the same as the WS-RM Problem (see 3.)
   
   this works:
   ```
                ContactWS port = service.getPort(ContactWS.class);
                   BindingProvider bp = (BindingProvider) port;
                Map<String, Object> requestContext = bp.getRequestContext();
                requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
"https://myhost/mywebservice";);
                HTTPConduit httpConduit = (HTTPConduit) 
ClientProxy.getClient(port).getConduit();
                //....do something with the conduit....like describes in 1.)
   ```
                
   this DOES NOT work any more with new version:
   ```
                ContactWS port = service.getPort(ContactWS.class);
                   BindingProvider bp = (BindingProvider) port;
                HTTPConduit httpConduit = (HTTPConduit) 
ClientProxy.getClient(port).getConduit();
                //....do something with the conduit....like describes in 1.)
                Map<String, Object> requestContext = bp.getRequestContext();
                requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
"https://myhost/mywebservice";);
   ```          
        
   See here: 
https://github.com/jochenr/my-camel-quarkus-projects/blob/9d6f45be41eea419cf23cff99b62620eecdb7b75/camel-quarkus-cxf-soap-wssecurity/quarkus-root/src/test/java/de/jochenr/integration/contact/CxfClientSyncTest.java#L82
                
                
   3.) WS-RM /WS-ReliableMessabingis always using the default URL from the WSDL 
file.
   
   See:
   
https://github.com/jochenr/my-camel-quarkus-projects/tree/main/camel-quarkus-cxf-soap-wsrm
   and my previous comment              
   https://github.com/apache/camel-quarkus/issues/5218#issuecomment-1730918810
   and
   https://github.com/quarkiverse/quarkus-cxf/issues/1061
   
   
   You cannot override it with 
"requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
"https://myhost/mywebservice";);" in a client using jax-ws api.
   
   And you also cannot override it in an producer CxfEndpoint 
   ```
   CxfEnpoint mockToSapCxfProducer = new 
CxfProducerEndpointBuilder("https://myhost/mywebservice";, context);
   ....
   ```
   
   
https://github.com/jochenr/my-camel-quarkus-projects/blob/9d6f45be41eea419cf23cff99b62620eecdb7b75/camel-quarkus-cxf-soap-wsrm/quarkus-root/src/test/java/de/jochenr/integration/contact/ContactTest.java#L114
   calls a Rest endoint
   from there the camel route uses a CxfProducer to call the backend
   
https://github.com/jochenr/my-camel-quarkus-projects/blob/9d6f45be41eea419cf23cff99b62620eecdb7b75/camel-quarkus-cxf-soap-wsrm/quarkus-root/src/main/java/de/jochenr/quarkus/integration/contact/route/AsyncRouteBuilder.java#L101
   
   
   
   
   4.) QuarkusTest doesn't show exceptions in the cases above, but is just 
hanging.
   This made finding the issues above quite hard....
   
   
   
   I think the root issues of 1.) - 3.) is inside Cxf and should be fixed there.
   
   Since my employer is Red Hat Customer we continue working on the issues 
using the Red Hat Support portal.
   We need all of this (and more) fixed before the next release of "Red Hat 
Build of Camel-Quarkus".
   
   Should  we leave this open until everything is fixed or should we close it, 
because we contiue to work on it with Red Hat Support?
   
   Regards,
   Jochen


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@camel.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to