Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第1部 J2EE共通編> 第4章 JNDI

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

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

  1. javax.naming.Contextクラスオブジェクトを作成します。
  2. lookup()メソッドを使用して、参照するオブジェクトに合わせたクラスオブジェクトを獲得します。
    lookup()メソッドの引数には、以下を指定します。
  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アプリケーション名が“EJB214EmpCBM”、LocalHomeクラスが“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) { }

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED