26.3 URLによるオブジェクトの検索

クライアントアプリケーションはResolverにバインドする必要はなく,コードサンプル26-2に示すようにbind()メソッドの呼び出し時にURLを指定するだけです。バインドはURLをオブジェクト名として受け取ります。URLが無効な場合はInvalidURL例外が発生します。bind()メソッドは透過的にlocate()メソッドを呼び出します。locate()メソッドの使用例については,コードサンプル26-3を参照してください。

コードサンプル26-2 URLの指定によるオブジェクトリファレンスの取得

// ResolverClient.java
import com.inprise.vbroker.URLNaming.*;
public class ResolverClient {
  public static void main(String[ ] args) {
     if (args.length == 0) {
        System.out.println(
           "Usage: vbj Client <URL string> [Account name]");
        return;
     }
     String url = args[0];
     try {
        // Initialize the ORB.
        org.omg.CORBA.ORB orb =
                          org.omg.CORBA.ORB.init(args,null);
        // Obtain the URLNaming Resolver
        Resolver resolver = ResolverHelper.narrow(
           orb.resolve_initial_references(
              "URLNamingResolver"));
        // Locate the object
        Bank.AccountManager manager =
        Bank.AccountManagerHelper.
                               narrow(resolver.locate(url));
        // use args[0] as the account name, or a default.
        String name = args.length > 1 ?
                                   args[1] : "Jack B. Quick";
        // Request the account manager to open a named
        // account.
        Bank.Account account = manager.open(name);
        // Get the balance of the account.
        float balance = account.balance();
        // Print out the balance.
        System.out.println("The balance in " + name +
                           "'s account is $" + balance);
     } catch(Exception e) {
        e.printStackTrace();
     }
  }
}

コードサンプル26-3 Resolver.locateメソッドの使用によるオブジェクトリファレンスの取得

// Client.java
public class Client {
  public static void main(String[ ] args) {
     if (args.length == 0) {
        System.out.println(
           "Usage: vbj Client <URL string> [Account name ]");
        return;
     }
     String url = args[0];
     // Initialize the ORB.
     org.omg.CORBA.ORB orb =
                          org.omg.CORBA.ORB.init(args,null);
     // Locate the object
     Bank.AccountManager manager =
                   Bank.AccountManagerHelper.bind(orb, url);
     // use args[0] as the account name, or a default.
     String name = args.length > 1 ?
                                   args[1] : "Jack B. Quick";
     // Request the account manager to open a named account.
     Bank.Account account = manager.open(name);
     // Get the balance of the account.
     float balance = account.balance();
     // Print out the balance.
     System.out.println("The balance in " + name +
                        "'s account is $" + balance);
  }
}