Ajaxフレームワーク ユーザーズガイド
目次 索引 前ページ次ページ

第5章 アプリケーションの開発> 5.10 アプリケーションの開発例(マッシュアップ)

5.10.9 ビジネスクラスの作成(マッシュアップ開発例)

Eclipseを利用して、ビジネスクラスを作成します。
Eclipseの操作方法については、“ビジネスクラスの作成(Eclipse)”を参照してください。

■ビジネスクラスの作成

ビジネスクラス作成時には、以下の情報を入力します。

作成されたビジネスクラスに、以下の記述を追加します。

startupメソッドの記述内容

/* 初期化処理 */
public void startup(DispatchContext context) {
     CalendarBean calendarBean = new CalendarBean();
     context.setResponseBean("body", calendarBean);
}

loginメソッドの記述内容

/* ログイン処理 */
public Object login(DispatchContext context, calendar.CalendarBean dataBean) {
    String globalId = dataBean.getUserid();   // 入力値:ユーザID
    String password = dataBean.getPassword(); // 入力値:パスワード
    String serviceId = "PrivateCalendar";     // サービス名:"PrivateCalendar"(固定)
    
    // ログイン処理(入力値によるログイン可否)を実行
    if(doLogin(globalId, password) == false){
        // ログイン失敗時の処理
        dataBean.setUserid("");
        dataBean.setPassword("");
        return dataBean;
    }
    
    // ログイン成功時、以下の処理を実行
    // ユーザ管理簿からglovalIdとserviceIdをもとに基本認証情報を取得
    BasicAuthInfo basicinfo = BasicAuthDB.getBasicAuthInfoFromDB(globalId, serviceId);
    // 基本認証情報からユーザID、パスワードを取得
    String basic_uid = basicinfo.getUserid();
    String basic_pwd = basicinfo.getPassword();
    // 基本認証情報の生成
    BasicAuth bAuth = new BasicAuth();
    bAuth.setGlobalID(globalId);
    try {
        bAuth.setUserID(basic_uid);
        bAuth.setPassword(basic_pwd);
    } catch (MUEncryptException e) {
        // 暗号化の設定に対する例外の発生・または暗号化アルゴリズムの初期化に失敗
        dataBean.setUserid("");
        dataBean.setPassword("");
        return dataBean;
    }
    // サービス認証情報の生成
    ServiceAuth sAuth = new ServiceAuth(serviceId);
    // サービス認証情報に基本認証情報を格納
    sAuth.setAuth(bAuth);
    // サービス認証情報リストの生成
    AuthorizationList authlist = new AuthorizationList(globalId);
    // 認証情報リストにサービス認証情報を格納
    authlist.add(sAuth);
    // セションの取得
    HttpSessionProfile sessionprofile = (HttpSessionProfile)context.getSessionProfile();
    HttpSession session = sessionprofile.getSession();
    // セションに認証情報リストを格納
    session.setAttribute(Authorization.SESSION_AUTHORIZATION_KEY, authlist);
    
    return dataBean;
}

logoutメソッドの記述内容

/* ログアウト処理 */
public void logout(DispatchContext context) {
    // セションの取得
    HttpSessionProfile sessionprofile = (HttpSessionProfile)context.getSessionProfile();
    HttpSession session = sessionprofile.getSession();
    // セション情報をクリア
    session.removeAttribute(Authorization.SESSION_AUTHORIZATION_KEY);
}

doLoginメソッド(注1)の記述内容

/* 入力された情報でのログイン処理 */
private boolean doLogin(String globalId, String password) {
    // ユーザID/パスワードの照合
    if(globalId.equals("gid001") && password.equals("001") ||
        :(省略)
        globalId.equals("gid005") && password.equals("005"))
    {
        return true;
    }
    // ユーザID/パスワードが違っている場合
    else{
        return false;
    }
}
注1) このメソッドは自動生成されません。

BasicAuthDBクラス(注2)の記述内容

/**
 * 仮想の基本認証データベース(ユーザ管理簿)です。
 */
public class BasicAuthDB {
    // 基本認証データベース
    private static final BasicAuthInfo[] basicDB = {
        // 基本認証情報(グローバルID、サービスID、ユーザID、パスワード)
        new BasicAuthInfo("gid001","PrivateCalendar","user1","user1"),
            :(省略)
        new BasicAuthInfo("gid005","PrivateCalendar","user5","user5")
    };
    
    /** グローバルID、サービスIDをキーに基本認証データベースから認証処理を取得します。 */
    public static BasicAuthInfo getBasicAuthInfoFromDB(String globalid, String serviceid){
        // データベース内の検索
        for(int i=0; i<basicDB.length; i++){
            // 一致した場合、認証情報を返す
            if(basicDB[i].isTargetBasicAuthinfo(globalid, serviceid) == true){
                return basicDB[i];
            }
        }
        // 一致しない場合、nullを返す
        return null;
    }
}
注2) このクラスは自動生成されません。

BasicAuthInfoクラス(注3)の記述内容

/** 基本認証情報クラスです。 */
public class BasicAuthInfo {
    private String globalid;
    private String serviceid;
    private String userid;
    private String password;
    
    /** コンストラクタです。 */
    public BasicAuthInfo(String gid,String sid,String uid,String pw){
        globalid = gid;
        serviceid = sid;
        userid = uid;
        password = pw;
    }
    public String getGlobalid(){
        return globalid;
    }
    public String getServiceid(){
        return serviceid;
    }
    public String getUserid(){
        return userid;
    }
    public String getPassword(){
        return password;
    }
    /** グローバルID、サービスIDの値と一致した場合、true を返します。 */
    public boolean isTargetBasicAuthinfo(String gid, String sid){
        if(globalid.equals(gid) && serviceid.equals(sid)){
            return true;
        }
        else{
            return false;
        }
    }
}
注3) このクラスは自動生成されません。

ログイン情報および認証情報データベースの内容(注4)

サンプルアプリケーションのログイン情報です。

ログインユーザID  ログインパスワード
gid001            001
gid002            002
gid003            003
gid004            004
gid005            005

基本認証サービス(私用カレンダアプリケーション)の認証情報です。GLOBALID(入力されたユーザID)とSERVICEID("PrivateCalendar")をキーに、認証情報(USERIDとPASSWORD)を取得します。
以下の情報は、内部情報として保持されており、認証サービスにアクセスする際に利用されます。

GLOBALID  SERVICEID        USERID     PASSWORD
gid001    PrivateCalendar  user1      user1
gid002    PrivateCalendar  user2      user2
gid003    PrivateCalendar  user3      user3
gid004    PrivateCalendar  user4      user4
gid005    PrivateCalendar  user5      user5
注4) 本来は、RDBやLDAPなどで管理、運用されるデータです。

■コマンドマップの定義

Eclipseを利用してビジネスクラスを作成すると、自動的にコマンドマップ(commands.map)が作成されます。

コマンドマップの記述内容

# 初期化処理
;=calendar.CalendarHandler.startup
# ログイン処理実行
calendar.CalendarBean;login=calendar.CalendarHandler.login
# ログアウト処理実行
;logout=calendar.CalendarHandler.logout

コマンドマップの詳細は、“Apcoordinator ユーザーズガイド”を参照してください。

■ページマップの定義

ページマップ(pages.map)に必要な定義を追加します。

ページマップの記述内容

# pages.map
calendar.CalendarBean;=mainPage.jsp

ページマップの詳細は、“Apcoordinator ユーザーズガイド”を参照してください。


目次 索引 前ページ次ページ

Copyright 2009 FUJITSU LIMITED