< 前へ | 次へ >

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

レッスン 1.2 のステップでは、StatelessCounterBean.java クラスの必須クラスとインターフェースの作成について取り上げます。
始める前に、レッスン 1.1 を完了する必要があります。
このレッスンでは、以下を行います。
  1. Java エディターで StatelessCounterBean.java クラスを開きます。
  2. @Stateless 注釈の下に、@Interceptors と入力します。
  3. CTRL+S キーを押して保存すると、@Interceptors 行の横にクイック・フィックス・アイコン クイック・フィックス・アイコン が表示されます。クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。
  4. 「import javax.interceptor.Interceptors」を選択し、CTRL+S キーを押して保存します。
  5. クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「Add missing attributes」を選択し、(value={null})(Audit.class) に置換して、CTRL+S を押して保存します。
  6. クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「Create class '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 クラスを開き、以下のコードを置換してから、CTRL+S キーを押して保存します。
    public class StatelessCounterBean {
    
    
    }
    置換後のコード:
    public class StatelessCounterBean implements LocalCounter, RemoteCounter {
    
        private static final String CounterDBKey = "PRIMARYKEY";
    
        // Use container managed persistence - inject the 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;
        }
    }
  9. public class StatelessCounterBean という行の横にあるクイック・フィックス・アイコンを右クリックして、「Create Interface 'LocalCounter'」を選択します。
    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. Local Counter を作成するためのステップに従って Remote Counter インターフェースを作成し、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();
    }
  13. Java エディターの StatelessCounterBean.java クラスに戻ります。
  14. @PersistenceContext の横にあるクイック・フィックス・アイコンを右クリックし、「クイック・フィックス」を選択します。「Import 'PersistenceContext' (javax.persistence)」を選択し、CTRL+S キーを押して保存します。
  15. @EntityManager の横にあるクイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「Import 'EntityManager' (javax.persistence)」を選択し、CTRL+S キーを押して保存します。
  16. JPACounterEntity の横にあるクイック・フィックス・アイコンを右クリックし、「クイック・フィックス」を選択します。「Create class 'JPACounterEntity.java'」を選択します。「新規クラス」ウィザード・ページのデフォルト値を受け入れて、「終了」をクリックします。
これで、レッスン 1.3 の『データ・パーシスタンスのエンティティー・クラスとデータベースの作成』に移行できます。
< 前へ | 次へ >

フィードバック