private static void ConnectToOpenBus()
        {
            // Define propriedades para a oferta de serviço a ser registrada no barramento
            IComponent ic = _component.GetIComponent();

            ServiceProperty[] properties =
            {
                new ServiceProperty("offer.domain",
                                    "Demo Independent Clock")
            };

            // Cria conexão e a define como conexão padrão tanto para entrada como saída.
            OpenBusContext context = ORBInitializer.Context;

            _conn = context.ConnectByAddress(_host, _port);
            context.SetDefaultConnection(_conn);

            // Cria registrador e adiciona a callback de login inválido
            _registerer          = new Registerer(ic, properties, _interval);
            _conn.OnInvalidLogin = InvalidLogin;

            // Faz o login e registra no barramento
            try {
                _conn.OnInvalidLogin(_conn, new LoginInfo());
            }
            catch (Exception e) {
                Console.WriteLine(e);
            }
            finally {
                if (!_conn.Login.HasValue || Offer == null)
                {
                    Exit(1);
                }
            }
        }
        private static void Main(String[] args)
        {
            // Registra handler para o caso do processo ser finalizado
            AppDomain.CurrentDomain.ProcessExit += CurrentDomainProcessExit;

            // Obtém dados através dos argumentos
            string host = args[0];
            ushort port = Convert.ToUInt16(args[1]);

            _entity     = args[2];
            _privateKey = Crypto.ReadKeyFile(args[3]);
            _interval   = Convert.ToInt32(args.Length > 4 ? args[4] : "1");

            // Cria o componente que conterá as facetas do servidor
            ORBInitializer.InitORB();
            ComponentContext component =
                new DefaultComponentContext(new ComponentId("dedicatedclock", 1, 0, 0, ".net"));

            // Cria a faceta Clock para o componente
            component.AddFacet("Clock", Repository.GetRepositoryID(typeof(Clock)),
                               new ClockImpl());

            // Define propriedades para a oferta de serviço a ser registrada no barramento
            IComponent ic = component.GetIComponent();

            ServiceProperty[] properties =
            {
                new ServiceProperty("offer.domain",
                                    "Demo Dedicated Clock")
            };

            // Cria conexão e a define como conexão padrão tanto para entrada como saída.
            OpenBusContext context = ORBInitializer.Context;

            _conn = context.ConnectByAddress(host, port);
            context.SetDefaultConnection(_conn);

            // Cria registrador e adiciona a callback de login inválido
            _registerer          = new Registerer(ic, properties, _interval);
            _conn.OnInvalidLogin = InvalidLogin;

            // Faz o login e registra no barramento
            try {
                _conn.OnInvalidLogin(_conn, new LoginInfo());
            }
            catch (Exception e) {
                Console.WriteLine(e);
            }
            finally {
                if (!_conn.Login.HasValue || Offer == null)
                {
                    Exit(1);
                }
            }

            // Mantém a thread ativa para aguardar requisições
            Console.WriteLine(Resources.ServerOK);
            Thread.Sleep(Timeout.Infinite);
        }