ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド

4.10 オブジェクトの参照方法

オブジェクトの参照は、以下の手順で行います。

  1. javax.naming.Contextクラスオブジェクトを作成します。

  2. lookup()メソッドを使用して、参照するオブジェクトに合わせたクラスオブジェクトを獲得します。
    lookup()メソッドの引数には、以下を指定します。

    • EJBの場合、“java:comp/env/ejb/EJBアプリケーション名”

    • JDBCの場合、“java:comp/env/jdbc/JDBCリソースアクセス定義名”

    • JMSの場合、“java:comp/env/jms/JMSリソースアクセス定義名”

    • JavaMailの場合、“java:comp/env/mail/JavaMailリソースアクセス定義名”

    • connectorの場合、“java:comp/env/eis/connectorリソースアクセス定義名”

    • 環境エントリの場合、“java:comp/env/環境エントリ名”

    • 名前変換を利用してアクセスする場合、“java:comp/env/deployment descriptorの参照名”

  3. EJB Homeオブジェクトの参照の場合、narrow処理を行います。


記述例を以下に示します。


EJBアプリケーション名が“EJB214ETY”、Homeクラスが“EJB214ETYHomeのEJB Homeオブジェクトの参照例
  // EJB Homeオブジェクトのlookup処理
  java.lang.Object ejbobj = null;
  EJB214ETYHome home = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    ejbobj = (java.lang.Object)nctx.lookup("java:comp/env/ejb/EJB214ETY");
    home = (EJB214ETYHome)javax.rmi.PortableRemoteObject.narrow(ejbobj, EJB214ETYHome.class);
  } catch(javax.naming.NamingException ex) { }

) Enterprise Beanの参照名を定義するときは、“ejb/Bean名”という形式で定義することを推奨します。

EJBアプリケーション名がEJB214EmpCBMLocalHomeクラスがEJB214EmpCBMLocalHomeのEJB Local Homeオブジェクトの参照例
  // EJB Local Homeオブジェクトのlookup処理
  EJB214EmpCBMLocalHome home = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    home = (EJB214EmpCBMLocalHome)nctx.lookup("java:comp/env/ejb/EJB214EmpCBM");
  } catch(javax.naming.NamingException ex) { }

) Enterprise Beanの参照名を定義するときは、“ejb/Bean名”という形式で定義することを推奨します。

JDBCリソースアクセス定義名がDB1のJDBCデータソースの参照例
  // JDBCデータソースのlookup処理
  javax.sql.DataSource dataSource = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    dataSource = (javax.sql.DataSource)nctx.lookup("java:comp/env/jdbc/DB1");
  } catch(javax.naming.NamingException ex) { }
JMSリソースアクセス定義名がTopic”および“Queue”のJMSコネクションファクトリの参照例

JMSコネクションファクトリがjavax.jms.TopicConnectionFactoryの場合

  // JMSコネクションファクトリのlookup処理
  javax.jms.TopicConnectionFactory topic = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    topic = (javax.jms.TopicConnectionFactory)nctx.lookup("java:comp/env/jms/Topic");
  } catch(javax.naming.NamingException ex) { }

JMSコネクションファクトリがjavax.jms.QueueConnectionFactoryの場合

  // JMSコネクションファクトリのlookup処理
  javax.jms.QueueConnectionFactory queue = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    queue = (javax.jms.QueueConnectionFactory)nctx.lookup("java:comp/env/jms/Queue");
  } catch(javax.naming.NamingException ex) { }
JavaMailリソースアクセス定義名がMailSessionのJavaMailメールセションの参照例
  //JavaMailメールセションのlookup処理
  javax.mail.Session session = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    session = (javax.mail.Session)nctx.lookup("java:comp/env/mail/MailSession");
  } catch(javax.naming.NamingException ex) { }
deployment descriptorの参照名が“url/SVURLのURLの参照例
  //URLのlookup処理
  java.net.URL url = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    url = (java.net.URL)nctx.lookup("java:comp/env/url/SVURL");
  } catch(javax.naming.NamingException ex) { }
connectorリソースアクセス定義名がRA01のconnectorコネクションファクトリの参照例
  //connectorコネクションファクトリのlookup処理
  javax.resource.cci.ConnectionFactory cf = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    cf =(javax.resource.cci.ConnectionFactory)nctx.lookup("java:comp/env/eis/RA01");
  } catch(javax.naming.NamingException ex) { }
JMSリソースアクセス定義名がTopicおよびQueueのJMS Destinationの参照例

JMSのDestinationがTopicの場合

  // JMS Destination(javax.jms.Topic)のlookup処理
  javax.jms.Topic topic = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    topic = (javax.jms.Topic)nctx.lookup("java:comp/env/jms/Topic");
  } catch(javax.naming.NamingException ex) { }

JMSのDestinationがQueueの場合

  // JMS Destination(javax.jms.Queue)のlookup処理
  javax.jms.Queue queue = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    queue = (javax.jms.Queue)nctx.lookup("java:comp/env/jms/Queue");
  } catch(javax.naming.NamingException ex) { }
環境エントリ名が“SValue環境エントリ参照例
  //環境エントリのlookup処理
  java.lang.Short val = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    val = (java.lang.Short)nctx.lookup("java:comp/env/SValue");
  } catch(javax.naming.NamingException ex) { }

) 引数に“java:comp/env/”を指定しないでlookup()メソッドを実行することも可能ですが、アプリケーションの移行性を重視する場合には推奨しません。

ORBオブジェクト参照

また、RMI over IIOP通信でコンテナが使用するORBオブジェクトも以下のように参照できます。

  org.omg.CORBA.ORB orb = null;
  try {
    javax.naming.Context nctx = new javax.naming.InitialContext();
    orb = (org.omg.CORBA.ORB)nctx.lookup("java:comp/ORB");
  } catch(javax.naming.NamingException ex) { }