码头服务器实例的端口



我正在编写一个服务发现应用程序,该应用程序将在Zookeeper节点上注册Web应用程序。属性之一是可用服务的端口号。在代码中,我获得了Jetty Server实例的句柄,但是如何从Jetty Server实例中找到端口号?

行走连接器,并询问他们的注册主机名(因此您知道他们在听哪些网络接口(和本地端口(它们被绑定(。

这是您可以开始的模板。

    for (Connector connector : server.getConnectors())
    {
        if (connector instanceof NetworkConnector)
        {
            // we have a network capable connector
            NetworkConnector networkConnector = (NetworkConnector) connector;
            // What interface?
            String interfaceName = networkConnector.getHost();
            // What local port is it bound to?
            int localPort = networkConnector.getLocalPort();
            // What is the declared protocol default for this connector?
            String defaultProtocol = networkConnector.getDefaultConnectionFactory().getProtocol();
            // What other features does this connector handle?
            for (ConnectionFactory connectionFactory : networkConnector.getConnectionFactories())
            {
                // List of protocols handled by this specific connection factory for this specific connector
                connectionFactory.getProtocols();
                if (connectionFactory instanceof SslConnectionFactory)
                {
                    // this can handle TLS/SSL based connections
                }
                if (connectionFactory instanceof HttpConnectionFactory)
                {
                    // this can handle http protocols
                    // get the http specific configuration
                    HttpConfiguration httpConfig = ((HttpConnectionFactory) connectionFactory).getHttpConfiguration();
                    // what port is recognized as secure
                    httpConfig.getSecurePort();
                    // what scheme is recognized as secure
                    httpConfig.getSecureScheme();
                }
                if (connectionFactory instanceof HTTP2ServerConnectionFactory)
                {
                    // can handle encrypted http/2 protocols (and alpn features)
                }
                if (connectionFactory instanceof HTTP2CServerConnectionFactory)
                {
                    // this can handle http/2's special clear-text "h2c" protocol (no alpn features)
                }
            }
        }
    }

最新更新