ページの先頭行へ戻る
Interstage Business Application Server オープンJavaフレームワークユーザーズガイド
FUJITSU Software

3.3.1 AP層の作成

Web層からの要求に応じて呼び出される業務アプリケーションを作成します。業務アプリケーションでは、データベースとのやり取りなどの処理を行い、処理結果をWeb層に返します。

■EmployeeDao.java(DAOのインタフェース)

package test;
public interface EmployeeDao {
  public void init();
  public void destroy();
  public String[] execDaoSelect();
  public boolean execDaoInsert(String Employee);
  public boolean execDaoDelete(String Employee);
}

■EmployeeDaoImpl.java(DAOの実装クラス)

package test;
public class EmployeeDaoImpl implements EmployeeDao{
    
    public void init() {
        // 初期処理
    }
    public void destroy() {
        // 終了処理
    }
    // AOPが差し込まれる対象となるメソッド
    public String[] execDaoSelect(){
        String[] data = null;
        // データベースから社員全員の名前を取得します
        //data[] = ...
        return data; 
    }
    // AOPが差し込まれる対象となるメソッド
    public boolean execDaoInsert(String Employee){
        boolean ret = true;
        // データベースに指定した社員名を登録します
        //ret = ...
        return ret; 
    }
    // AOPが差し込まれる対象となるメソッド
    public boolean execDaoDelete(String Employee){
        boolean ret = true;
        // データベースから指定した社員を削除します
        //ret = ...
        return ret; 
    }
}

■ListService.java(業務アプリケーションのインタフェース)

package test;
public interface ListService {
    public String[] getEmployeeList();
}

■ListServiceImpl.java(業務アプリケーションの実装クラス)

package test;
public class ListServiceImpl  implements ListService {
    private EmployeeDao employeeDao;
    public void setEmployeeDao(EmployeeDao employeeDao) {
        // DIによって生成されたインスタンスが格納されます
        this.employeeDao = employeeDao;
    }
    public String[] getEmployeeList() {
        // 社員の名前一覧を返却します    
        String[] employeeList = employeeDao.execDaoSelect();
        return employeeList;
    }
}

■AopDatabaseCheck.java(AOPで差し込む処理)

package test;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class AopDatabaseCheck{
    // データベースに関するチェック処理を指定されたメソッドの前後で処理を行います
    @Around("execution(* execDao*())")
    public Object aroundMessage( ProceedingJoinPoint pjp ) throws Throwable {
        try{
            // DBチェック処理
        }catch(Exception e){
            throw e;
        }
        // AOPによって処理を差し込んだため、もとの処理を呼び出します
        Object retval = pjp.proceed() ;
            
        // メッセージ
        System.out.println("...");
        return retval ;
    }
}