Sun Java System Application Server 8.2 では、EJB は JNDI サブコンテキスト ejb/ に体系的にマップしています。JNDI 名 Account を EJB に帰属させた場合、Sun Java System Application Server 8.2 によってグローバル JNDI コンテキスト内に、参照 ejb/Account が自動的に作成されます。したがって、この EJB のクライアントは、対応するホームインタフェースを取得するために、ejb/Account をルックアップする必要があります。
ここで、Sun ONE Application Server 6.x に配備されるサーブレットメソッドのコードを調べてみましょう。
ここに提示されるサーブレットでは、ステートフルセッション Bean の BankTeller を呼び出しています。これは JNDI コンテキストのルートにマップされています。ここでコードを検討するメソッドは、EJB のホームインタフェースを取得して、BankTeller オブジェクトをインスタンス化し、このオブジェクトのリモートインタフェースを取得できるようにします。これによって、ユーザーはこのコンポーネントに対するビジネスメソッド呼び出しを作成できるようになります。
/**
* Look up the BankTellerHome interface using JNDI.
*/
private BankTellerHome lookupBankTellerHome(Context ctx)
throws NamingException
{
try
{
Object home = (BankTellerHome) ctx.lookup("ejb/BankTeller");
return (BankTellerHome) PortableRemoteObject.narrow(home,
BankTellerHome.class);
}
catch (NamingException ne)
{
log("lookupBankTellerHome: unable to lookup BankTellerHome" +
"with JNDI name ’BankTeller’: " + ne.getMessage() );
throw ne;
}
}
このコードでは、ルックアップに対する引数として ejb/BankTeller がすでに使用されているので、Sun Java System Application Server 8.2 に配備するためのコード変更を行う必要はありません。