< 上一课 | 下一课 >

课程 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),并按 CTRL+S 进行保存。
  5. 右键单击快速修复图标并选择快速修复。选择添加缺少的属性并将 (value={null}) 替换为 (Audit.class),然后按 CTRL+S 以进行保存。
  6. 右键单击快速修复图标并选择快速修复。选择创建“审计”类。在“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";
    
        // 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("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 旁边的快速修复图标,并选择快速修复。选择创建类“JPACounterEntity”
  18. 在“Java 类”页面中,接受缺省值,并单击完成
现在,您已准备好移至“课程 1.3:创建实体类和数据库以获取数据持久性”。
< 上一课 | 下一课 >
指示主题类型的图标 教程课程主题
信息中心的条款和条件 | 反馈

时间戳记图标 最近一次更新时间: 2014 年 4 月 17 日

文件名:exer12ejb31.html