レッスン 1.2 のステップでは、StatelessCounterBean.java クラスの必須クラスとインターフェースの作成について取り上げます。
始める前に、レッスン 1.1 を完了する必要があります。
このレッスンでは、以下を行います。
- @Interceptors 注釈と必須の依存関係を追加します。
- Audit.java Java™ クラスを作成します。
- StatelessCounterBean.java クラスにコードを追加します。
- LocalCounter.java インターフェースと RemoteCounter.java インターフェースを作成します。
- Java エディターで StatelessCounterBean.java クラスを開きます。
- @Stateless 注釈の下に、@Interceptors と入力します。
- CTRL+S キーを押して保存すると、@Interceptors 行の横にクイック・フィックス・アイコン
が表示されます。クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。
- 「import javax.interceptor.Interceptors」を選択し、CTRL+S キーを押して保存します。
- クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「Add missing attributes」を選択し、(value={null}) を (Audit.class) に置換して、CTRL+S を押して保存します。
- クイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「Create class 'Audit'」を選択します。
「新規 Java クラスの作成」ページで、デフォルト値を受け入れてから「終了」をクリックします。
- 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;
}
}
- 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;
}
}
- public
class StatelessCounterBean という行の横にあるクイック・フィックス・アイコンを右クリックして、「Create
Interface 'LocalCounter'」を選択します。
- 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();
}
- Java エディターの StatelessCounterBean.java クラスに戻ります。
- 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();
}
- Java エディターの StatelessCounterBean.java クラスに戻ります。
- @PersistenceContext の横にあるクイック・フィックス・アイコンを右クリックし、「クイック・フィックス」を選択します。「Import
'PersistenceContext' (javax.persistence)」を選択し、CTRL+S キーを押して保存します。
- @EntityManager の横にあるクイック・フィックス・アイコンを右クリックして、「クイック・フィックス」を選択します。「Import
'EntityManager' (javax.persistence)」を選択し、CTRL+S キーを押して保存します。
- JPACounterEntity の横にあるクイック・フィックス・アイコンを右クリックし、「クイック・フィックス」を選択します。「Create
class 'JPACounterEntity.java'」を選択します。「新規クラス」ウィザード・ページのデフォルト値を受け入れて、「終了」をクリックします。
これで、レッスン 1.3 の『データ・パーシスタンスのエンティティー・クラスとデータベースの作成』に移行できます。