< 前へ | 次へ >

演習 1.2: StatelessCounterBean.java クラスの必須クラスとインターフェースの作成

演習 1.2 のステップでは、StatelessCounterBean.java クラスの必須クラスとインターフェースの作成について取り上げます。

始める前に、演習 1.1 を完了しなければなりません。
この演習では、以下のことを行います。
  1. Java エディターで StatelessCounterBean.java クラスを開きます。
  2. @Stateless 注釈の下に、@Interceptors と入力します。
  3. CTRL+S キーを押して保存すると、@Interceptors 行の横にクイック・フィックス・アイコン クイック・フィックス・アイコン が表示されます。クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。
  4. 「'Interceptors' をインポートします (java.interceptor) (Import 'Interceptors' (java.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 エディターで StatelessCounterBean クラスを開き、以下のコードを置き換えます。
    public class StatelessCounterBean {
    
    
    }
    上記を次のコードに置き換えます。
    public class StatelessCounterBean 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("StatelessCounterBean: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("StatelessCounterBean:increment - caught unexpected exception: " + t);
                t.printStackTrace();
            }
    
            return result;
        }
    }
    CTRL+S を押して、保存します。
  9. public class StatelessCounterBean 行の横にあるクイック・フィックス・アイコンを右クリックして「クイック・フィックス」を 選択し、「インターフェース 'LocalCounter' を作成します」を 選択します。次に、「新規 Java インターフェース」ダイアログで「終了」をクリックします。
    Local counter エラー
  10. 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();
    }
  11. Java エディターの StatelessCounterBean.java クラスに戻ります。
  12. public class StatelessCounterBean 行の横にあるクイック・フィックス・アイコンを右クリックして「クイック・フィックス」を 選択し、「インターフェース 'RemoteCounter' を作成します」を選択します。 「新規 Java インターフェース」ダイアログで、「終了」をクリックします。 Java エディターで RemoteCounter.java class が開いたら、 すべてのコードを以下のコードで置き換え、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();
    }
  13. Java エディターの StatelessCounterBean.java クラスに戻ります。
  14. @PersistenceContext の横にあるクイック・フィックス・アイコンを右クリックし、「クイック・フィックス」を選択します。「'PersistenceContext' をインポートします (javax.persistence)」を選択し、CTRL+S を押して保存します。
  15. >private EntityManager em; の横にあるクイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。 「'EntityManager' をインポートします (javax.persistence)」を選択し、CTRL+S を押して保存します。
  16. JPACounterEntity の横にあるクイック・フィックス・アイコンを右クリックし、「クイック・フィックス」を選択します。「Create class 'JPACounterEntity'」を選択します。「新規クラス」ウィザード・ページのデフォルト値を受け入れて、「終了」をクリックします。
これで、演習 1.3 の『データ・パーシスタンスのエンティティー・クラスとデータベースの作成』に移行できます。
< 前へ | 次へ >
トピックのタイプを示すアイコン チュートリアルの演習のトピック
インフォメーション・センターのご利用条件 | フィードバック

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

ファイル名: exer12ejb3.html