@FFDCIgnore(PrivilegedActionException.class)
    public static SSLSocketFactory getSSLSocketFactoryBySSLRef(String sslRef, Map<String, Object> props, boolean fallbackOnDefault) {

        if (!SSLSupportService.isSSLSupportServiceReady()) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                Tr.debug(tc, "The SSL support service is not ready and can't create SSLSocketFactory");
            }
            return null;
        }

        SSLSupport sslSupportService = SSLSupportService.getSSLSupport();

        JSSEHelper jsseHelper = sslSupportService.getJSSEHelper();
        Boolean sslCfgExists = null;
        try {
            final JSSEHelper f_jsseHelper = jsseHelper;
            if (sslRef != null) {
                final String f_sslRef = sslRef;
                try {
                    sslCfgExists = AccessController.doPrivileged(new PrivilegedExceptionAction<Boolean>() {
                        @Override
                        public Boolean run() throws SSLException {
                            return Boolean.valueOf(f_jsseHelper.doesSSLConfigExist(f_sslRef));
                        }
                    });

                } catch (PrivilegedActionException pae) {
                    Throwable cause = pae.getCause();
                    throw (SSLException) cause;
                }

                if (!sslCfgExists.booleanValue())
                    return null;
            }

            return SSLSupportService.getSSLSocketFactory(sslRef);
        } catch (SSLException e) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                Tr.debug(tc, "SSL Exception with ssl ref id " + sslRef + ": " + e.toString());
            }
            throw new IllegalArgumentException(e);
        } catch (Exception e) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                Tr.debug(tc, "Exception with ssl ref id " + sslRef + ": " + e.toString());
            }
            throw new IllegalStateException(e);
        }
    }
@ FFDCIgnore ( PrivilegedActionException . class ) public static SSLSocketFactory getSSLSocketFactoryBySSLRef ( String sslRef , Map < String , Object > props , boolean fallbackOnDefault ) { if ( ! SSLSupportService . isSSLSupportServiceReady ( ) ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "The SSL support service is not ready and can't create SSLSocketFactory" ) ; } return null ; } SSLSupport sslSupportService = SSLSupportService . getSSLSupport ( ) ; JSSEHelper jsseHelper = sslSupportService . getJSSEHelper ( ) ; Boolean sslCfgExists = null ; try { final JSSEHelper f_jsseHelper = jsseHelper ; if ( sslRef != null ) { final String f_sslRef = sslRef ; try { sslCfgExists = AccessController . doPrivileged ( new PrivilegedExceptionAction < Boolean > ( ) { @ Override public Boolean run ( ) throws SSLException { return Boolean . valueOf ( f_jsseHelper . doesSSLConfigExist ( f_sslRef ) ) ; } } ) ; } catch ( PrivilegedActionException pae ) { Throwable cause = pae . getCause ( ) ; throw ( SSLException ) cause ; } if ( ! sslCfgExists . booleanValue ( ) ) return null ; } return SSLSupportService . getSSLSocketFactory ( sslRef ) ; } catch ( SSLException e ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "SSL Exception with ssl ref id " + sslRef + ": " + e . toString ( ) ) ; } throw new IllegalArgumentException ( e ) ; } catch ( Exception e ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "Exception with ssl ref id " + sslRef + ": " + e . toString ( ) ) ; } throw new IllegalStateException ( e ) ; } }
Get the SSLSocketFactory by sslRef, if could not get the configuration, try use the server's default
ssl configuration when fallbackOnDefault = true

@param sslRef
@param props             the additional props to override the properties in SSLConfig
@param fallbackOnDefault if true, will fall back on server default ssl configuration
@return