ページの先頭行へ戻る
Interstage Interaction Manager V10 Ajaxフレームワーク ユーザーズガイド
Interstage

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

Interstage Studioワークベンチを利用して、ビジネスクラスを作成します。

ビジネスクラスの作成

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

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

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などで管理、運用されるデータです。

コマンドマップの定義

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

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

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

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

ページマップの定義

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

ページマップの記述内容

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

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