public void rejectedExecution( Runnable r,             
				   ThreadPoolExecutor executor ) {

	if( this.threadPoolExecutor != executor ) {

	    this.logger.log( Level.SEVERE,
			     getClass().getName(),
			     "A ThreadPoolExecutor rejected a Runnable to be executed but the executor is unknown. Returning." );
	    return; // Not our concern
	}

	
	this.logger.log( Level.WARNING,
			 getClass().getName(),
			 "Execution rejected for Runnable: " + r );

	try {

	    HTTPRequestDistributor distributor = (HTTPRequestDistributor)r;
	    // This must be handled fast because this method blocks the underlying
	    // socket manager to accept more connections! -> Threaded?
	    PreparedHTTPResponse errorResponse = this.getDefaultResponseBuilder().buildPreparedErrorResponse( 
							 null,                        // no HTTP headers read -> none available!  
							 null,                        // no POST data
							 distributor.getSocketID(),   // UUID socketID, 
							 distributor.getSocket(),     // Socket socket, 
							 null,                        // no session id UUID sessionID,   
							 null,                        // No exception
							 Constants.HTTP_STATUS_SERVERERROR_SERVICE_UNAVAILABLE,  // int statusCode,
							 null,                        // String reasonPhrase,
							 null,                        // String errorMessage,
							 
							 null,                        // Map<String,BasicType> additionalSettings
							 null                         //Map<String,BasicType> optionalReturnSettings
														    );
	    errorResponse.prepare( null ); // No optionalReturnSettings
	    errorResponse.execute();
	    errorResponse.dispose();
														    
	    
	} catch( ClassCastException e ) {

	    this.logger.log( Level.SEVERE,
			     getClass().getName() + ".rejectedExecution(...)",
			     "The ThreadPoolExecutor rejected the passed Runnable '" + r + "' but it's NOT a HTTPRequestDistributor. Cannot send error reply." );

	} catch( Exception e ) {

	    // This will be ANY exception throw new the prepared error response (during preparation, execution or cleanup).
	    // As this is a pertty risky process (the request was not meant to be handled at all) we should simply ignore
	    // all errors and exceptions.
	    this.getLogger().log( Level.SEVERE,
				  getClass().getName() + ".rejectedExecution(...)",
				  "[" + e.getClass().getName() + "] Failed to process rejected (!) request (ignoring): " + e.getMessage() );

	}

    }