@Override
    public void connect(Object address) throws Exception {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
            Tr.entry(tc, "connect, vc=" + getVCHash());
        }
        // Determine if this is a redundant connect.
        if (connected) {
            handleRedundantConnect();
        }
        this.targetAddress = (TCPConnectRequestContext) address;
        // Nothing specific to SSL on connect. Pass through.
        ((OutboundConnectionLink) getDeviceLink()).connect(address);
        // PK13349 - mark that we are now connected
        this.connected = true;

        // First check if the sslContext and sslEngine have already been set (discrimination case)
        if (sslContext == null || getSSLEngine() == null) {
            // Create a new SSL context based on the current properties in the ssl config.
            this.sslContext = getChannel().getSSLContextForOutboundLink(this, getVirtualConnection(), address);
            // Discrimination has not happened yet. Create new SSL engine.
            // PK46069 - use engine that allows session id re-use
            this.sslEngine = SSLUtils.getOutboundSSLEngine(sslContext, getLinkConfig(),
                                                           targetAddress.getRemoteAddress().getHostName(),
                                                           targetAddress.getRemoteAddress().getPort(),
                                                           this);
        }
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
            Tr.debug(tc, "SSL engine hc=" + getSSLEngine().hashCode() + " associated with vc=" + getVCHash());
        }

        // Now do the SSL handshake.
        readyOutbound(getVirtualConnection(), false);
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
            Tr.exit(tc, "connect");
        }
    }
@ Override public void connect ( Object address ) throws Exception { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . entry ( tc , "connect, vc=" + getVCHash ( ) ) ; } if ( connected ) { handleRedundantConnect ( ) ; } this . targetAddress = ( TCPConnectRequestContext ) address ; ( ( OutboundConnectionLink ) getDeviceLink ( ) ) . connect ( address ) ; this . connected = true ; if ( sslContext == null || getSSLEngine ( ) == null ) { this . sslContext = getChannel ( ) . getSSLContextForOutboundLink ( this , getVirtualConnection ( ) , address ) ; this . sslEngine = SSLUtils . getOutboundSSLEngine ( sslContext , getLinkConfig ( ) , targetAddress . getRemoteAddress ( ) . getHostName ( ) , targetAddress . getRemoteAddress ( ) . getPort ( ) , this ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "SSL engine hc=" + getSSLEngine ( ) . hashCode ( ) + " associated with vc=" + getVCHash ( ) ) ; } readyOutbound ( getVirtualConnection ( ) , false ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) { Tr . exit ( tc , "connect" ) ; } }
/*
@see com.ibm.wsspi.channelfw.base.OutboundProtocolLink#connect(java.lang.Object)