. . .
int main(int argc, char* const* argv) {
try {
// Initialize the ORB.
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
//Install Typed Object Wrappers for Account.
Bank::AccountObjectWrapper::add(orb,
CachingAccountObjectWrapper::factory,
VISObjectWrapper::Client);
// Get the Manager ID.
PortableServer::ObjectId_var managerId =
PortableServer::string_to_ObjectId("BankManager");
// Locate an Account Manager.
Bank::AccountManager_var manager =
Bank::AccountManager::_bind(
"/bank_ow_poa", managerId);
. . .
// TypedClient.java
import com.inprise.vbroker.interceptor.*;
public class TypedClient {
public static void main(String[ ] args) throws Exception {
// Initialize the ORB.
org.omg.CORBA.ORB orb =
org.omg.CORBA.ORB.init(args,null);
doMain (orb, args);
}
public static void doMain(org.omg.CORBA.ORB orb,
String[ ] args) {
// Add a typed object wrapper for Account objects
Bank.AccountHelper.addClientObjectWrapperClass(orb,
BankWrappers.CachingAccountObjectWrapper.class);
// Locate an account manager.
Bank.AccountManager manager =
Bank.AccountManagerHelper.bind(orb, "BankManager");
. . .
}
}
VisiBroker ORBは,クライアント側でこのクラスのために登録されたすべてのオブジェクトラッパーの動作の記録を採っています。クライアントが_bindメソッドを起動して,その型のオブジェクトにバインドしようとすると,必要なオブジェクトラッパーが生成されます。クライアントが特定のクラスのオブジェクトの複数のインスタンスにバインドする場合,各インスタンスは,それぞれ専用のオブジェクトラッパーのセットを持ちます。