Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://rtm-cs.sinp.msu.ru/manual/mico/doc/node41.html
Дата изменения: Mon Jun 7 21:54:58 1999 Дата индексирования: Mon Oct 1 21:22:05 2012 Кодировка: |
Up until now we described how objects are moved between different instances of the same server. Here we explain how to move objects between two completely different servers. This is for example useful if a server has to be replaced by a new version without interrupting usual business.
Recall that we augmented the account object by a management interface
in section 4.3.4. The management interface offered a method
exit()
that terminates the server when invoked. Now let us add a
method migrate()
that migrates an account object to a new server.
The new server is specified through an implementation repository entry.
// account.idl
interface Account {
...
void migrate (in CORBA::ImplementationDef destination);
};
Here is the implementation of the migrate()
method:
1: #include "account.h"
2:
3: class Account_impl : virtual public Account_skel {
4: ...
5: public:
6: ...
7: virtual void migrate (CORBA::ImplementationDef_ptr dest)
8: {
9: CORBA::BOA_var boa = _boa();
10: boa->change_implementation (this, dest);
11: }
12: };
The change_implementation()
in line 10 does the whole job. It will
save the object's state as described in section 4.3.4
and tell the BOA daemon to use the new implementation from now on. See
demo/boa/account4
for an example.
The current version of MICO can only perform the migration when the destination implementation is not currently active, which means that:
This limitation will be removed in a future version of MICO.