zoukankan      html  css  js  c++  java
  • SimpleObjectBroker

     

    首先要设SimpleObjectBroker的loadBalanced的属性为True,并保证所有的应用服器已向
    SimpleObjectBroker注册,当客户端应用程序查觉原来的应用服器出现故障后立刻调用
    TSimpleObjectBroker的SetConnectedStatus(False)通知TSimpleObjectBroker应用服务器
    发生故障,然后调用GetComputerForProgID要求TSimpleObjectBroker查找另外一台提供相同
    服务的应用程序服务器给客户端应用程序

    只要把XXXConnection的ObjectBroker属性设为某个SimpleObjectBroker,
    而那个SimpleObjectBroker的Servers列表属性里有一系列的服务器地址信息,连接时,用XXXConnection
    的Open方法或设置它的Connected属性为True,组件就会自动尝试Servers列表中的所有服务器,
    如果某个服务器不可用,则它的Enabled将被置为False;如果列表中所有的服务器的Enabled都是False,
    则抛出"No Server Avalible"的异常。

    要写的代码就是:
    1、加入Servers列表项,以指写有哪些服务器可用
    2、要重新连接,写代码把服务器列表中所有Enable属性置为True。


    procedure TForm1.btnApplyUpdatesClick(Sender: TObject);
    begin
    try
    ClientDataSet1.ApplyUpdates(0);
    except
    on Exception do
    begin
    try
    DCOMConnection1.Connected := False;
    SimpleObjectBroker1.SetConnectStatus
    (DCOMConnection1.ComputerName, False);
    finally
    try
    DCOMConnection1.ComputerName := SimpleObjectBroker1.GetComputerForProgID
    (DCOMConnection1.ServerName); // 取得可用应用程序服务器的机器名称
    DCOMConnection1.Connected := True;
    ClientDataSet1.ApplyUpdates(0);
    except
    on EBrokerException do
    ClientDataSet1.SaveToFile('Sample.Dat'); // 保存数据
    end;
    end;
    end;
    end;
    end;

    procedure   TdmArchiveConnect.Connect;
    var
        FIniFileName:   string;
    begin
        //设置ini文件
        FIniFileName   :=   ExtractFilePath(Application.ExeName)   +   'PHYMIS.ini ';

        //载入可用的应用程序服务器
        ServerBroker.Servers.Items[0].ComputerName   :=   ReadIniString(FIniFileName,
            'Server ',   'Server1 ',   ' ');
        ServerBroker.Servers.Items[1].ComputerName   :=   ReadIniString(FIniFileName,
            'Server ',   'Server2 ',   ' ');
        ServerBroker.Servers.Items[2].ComputerName   :=   ReadIniString(FIniFileName,
            'Server ',   'Server3 ',   ' ');

        //设定应用程序服务器
        scktArchive.ServerName   :=   'pArchiveServer.ArchiveAgent ';
        scktArchive.ServerGUID   :=   '{0334ABD2-9792-459C-8036-3288678678F5} ';
        //载入端口设置
        scktArchive.Port   :=   StrToInt(ReadIniString(FIniFileName,   'Server ',   'Port ',
            '211 '));

        //连接应用程序服务器
        if   scktArchive.Connected   then
            scktArchive.Connected   :=   False;
        try
            scktArchive.Connected   :=   True;
            ServerCanUse   :=   True;
        except
            ErrBox( '无法连接到应用程序服务器,请检查网络设置 ');
            ServerCanUse   :=   False;
        end;
    end;

  • 相关阅读:
    hdu2067 简单dp或者记忆化搜索
    hdu2067 简单dp或者记忆化搜索
    洛谷 P4555 [国家集训队]最长双回文串(Manacher)
    洛谷 P1659 [国家集训队]拉拉队排练(Manacher)
    洛谷 P3805【模板】manacher算法
    UVA 1335 Beijing Guards(二分答案)
    UVA 1267 Network(DFS)
    UVA 11520 Fill the Square(模拟)
    UVA 12097 Pie(二分答案)
    UVA 12124 Assemble(二分答案)
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940577.html
Copyright © 2011-2022 走看看