private boolean loadWebSocketModule(String classname) {

        try {

            // Attempt to find WebSocket module
            Class<?> module = Class.forName(classname);

            // Create loader
            TunnelLoader loader = (TunnelLoader) module.getConstructor().newInstance();

            // Install module, if supported
            if (loader.isSupported()) {
                install(loader);
                return true;
            }

        }

        // If no such class or constructor, etc., then this particular
        // WebSocket support is not present
        catch (ClassNotFoundException e) {}
        catch (NoClassDefFoundError e) {}
        catch (NoSuchMethodException e) {}

        // Log errors which indicate bugs
        catch (InstantiationException e) {
            logger.debug("Error instantiating WebSocket module.", e);
        }
        catch (IllegalAccessException e) {
            logger.debug("Error instantiating WebSocket module.", e);
        }
        catch (InvocationTargetException e) {
            logger.debug("Error instantiating WebSocket module.", e);
        }

        // Load attempt failed
        return false;

    }
Classnames of all implementation-specific WebSocket tunnel modules.
guacamole/src/main/java/org/apache/guacamole/tunnel/TunnelModule.java