< 前へ | 次へ >

演習 1.2: SingletonCounterBean.java クラスに必要なクラスとインターフェースの作成

演習 1.2 では、SingletonCounterBean.java クラスに必要なクラスおよびインターフェースの作成手順について説明します。

始める前に、演習 1.1 を完了しなければなりません。
この演習では、以下のことを行います。
  1. Java エディターで SingletonCounterBean.java クラスを開きます。
  2. @Singleton 注釈の下に、@Interceptors と入力します。
  3. CTRL+S キーを押して保存すると、@Interceptors 行の横にクイック・フィックス・アイコン クイック・フィックス・アイコン が表示されます。クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。
  4. 「'Interceptors' をインポートします (javax.interceptor) (import 'Interceptors' (javax.interceptor))」を選択し、CTRL+S を押して保存します。
  5. クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「欠落した属性を追加します」を選択し、「(value={null})」を「(Audit.class)」で置き換え、CTRL+S を押して保存します。
  6. クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「クラス 'Audit' を作成します」を選択します。「Java クラス」ページで、デフォルトを受け入れて「終了」をクリックします。
  7. Audit.java の Java エディターで、デフォルト・コードを以下のコードに置換してから、CTRL+S キーを押して保存します。
    // This program may be used, executed, copied, modified and distributed
    // without royalty for the purpose of developing, using, marketing, or distributing.
    
    package com.ibm.example.websphere.ejb3sample.counter;
    
    
    import java.io.Serializable;
    
    import javax.interceptor.AroundInvoke;
    import javax.interceptor.InvocationContext;
    
    
    public class Audit implements Serializable {
    
        private static final long serialVersionUID = 4267181799103606230L;
    
        @AroundInvoke
    
        public Object methodChecker (InvocationContext ic)
        throws Exception
        {
            System.out.println("Audit:methodChecker - About to execute method: " + ic.getMethod());
            Object result = ic.proceed();
            return result;
        }
    }
  8. Java エディターで SingletonCounterBean クラスを開き、以下のコードを置き換えます。
    public class SingletonCounterBean {
    
    
    }
    上記を次のコードに置き換えます。
    public class SingletonCounterBean implements LocalCounter, RemoteCounter {
    
        private static final String CounterDBKey = "PRIMARYKEY";
    
        // コンテナー管理パーシスタンスを使用して、EntityManager を注入します。
        @PersistenceContext (unitName="Counter")
        private EntityManager em;
        
        public int increment()
        {
            int result = 0;
            
            try {
    
                JPACounterEntity counter = em.find(JPACounterEntity.class, CounterDBKey);
    
                if ( counter == null ) {
                    counter = new JPACounterEntity();
                    counter.setPrimaryKey(CounterDBKey);
                    em.persist( counter );
                }
    
                counter.setValue( counter.getValue() + 1 );
                em.flush();
                em.clear();
    
                result = counter.getValue();
    
            } catch (Throwable t) {            
                System.out.println("SingletonCounterBean:increment - caught unexpected exception: " + t);
                t.printStackTrace();
            }
    
            return result;
        }
    
    
        public int getTheValue()
        {
            int result = 0;
    
            try {
                JPACounterEntity counter = em.find(JPACounterEntity.class, CounterDBKey);
    
                if ( counter == null ) {
                    counter = new JPACounterEntity();
                    em.persist( counter );
                    em.flush();
                }
    
                em.clear();
    
                result = counter.getValue();
            } catch (Throwable t) {
                System.out.println("SingletonCounterBean:increment - caught unexpected exception: " + t);
                t.printStackTrace();
            }
    
            return result;
        }
    }
    CTRL+S を押して、保存します。
  9. public class SingletonCounterBean 行の横にあるクイック・フィックス・アイコンをクリックし、 「インターフェース 'LocalCounter' を作成します」 を選択します。
    ローカル・カウンター・エラー
  10. 「Java インターフェース」ページで、デフォルトを受け入れて「終了」をクリックします。
  11. Java エディターで LocalCounter.java クラスを開きます。すべてのコードを以下のコードに置換して、CTRL+S キーを押して保存します。
    // This program may be used, executed, copied, modified and distributed
    // without royalty for the purpose of developing, using, marketing, or distributing.
    
    package com.ibm.example.websphere.ejb3sample.counter;
    
    import javax.ejb.Local;
    
    @Local
    public interface LocalCounter {
        public int increment();
        public int getTheValue();
    }
  12. Java エディターの SingletonCounterBean.java クラスに戻ります。
  13. public class SingletonCounterBean 行の横にあるクイック・フィックス・アイコンをクリックし、 「インターフェース 'RemoteCounter' を作成します」を選択します。Java インターフェース」ページで、デフォルトを受け入れて「終了」をクリックします。 RemoteCounter.java 内のすべてのコードを次のコードに置き換え、CTRL+S を押して保存します。
    // This program may be used, executed, copied, modified and distributed
    // without royalty for the purpose of developing, using, marketing, or distributing.
    
    package com.ibm.example.websphere.ejb3sample.counter;
    
    import javax.ejb.Remote;
    
    @Remote
    public interface RemoteCounter {
        public int increment();
        public int getTheValue();
    }
  14. Java エディターの SingletonCounterBean.java クラスに戻ります。
  15. @PersistenceContext の横にあるクイック・フィックス・アイコンを 右クリックして「クイック・フィックス」を選択します。「'PersistenceContext' をインポートします (javax.persistence)」を選択し、CTRL+S を押して保存します。
  16. @EntityManager の横にあるクイック・フィックス・アイコンを右クリックして「クイック・フィックス」を選択します。「'EntityManager' をインポートします (javax.persistence)」を選択し、CTRL+S を押して保存します。
  17. JPACounterEntity の横にあるクイック・フィックス・アイコンを右クリックして「クイック・フィックス」を選択します。「Create class 'JPACounterEntity'」を選択します。
  18. 「Java クラス」ページで、デフォルトを受け入れて「終了」をクリックします。
これで、『演習 1.3: データ・パーシスタンスのエンティティー・クラスおよびデータベースの作成』に進む準備ができました。
< 前へ | 次へ >
トピックのタイプを示すアイコン チュートリアルの演習のトピック
インフォメーション・センターのご利用条件 | フィードバック

タイム・スタンプ・アイコン 最終更新: May 29, 2014 10:20

ファイル名: exer12ejb31.html