Ajaxフレームワーク ユーザーズガイド |
目次 索引 |
第5章 アプリケーションの開発 | > 5.10 アプリケーションの開発例(マッシュアップ) |
Eclipseを利用して、ビジネスクラスを作成します。
Eclipseの操作方法については、“ビジネスクラスの作成(Eclipse)”を参照してください。
ビジネスクラス作成時には、以下の情報を入力します。
入力データ |
入力情報 |
コマンド |
メソッド |
復帰値型 |
---|---|---|---|---|
入力データなし |
指定しない |
指定しない |
startup |
void |
データBean |
クラス名: CalendarBean |
login |
login |
object |
入力データなし |
指定しない |
logout |
logout |
void |
作成されたビジネスクラスに、以下の記述を追加します。
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 ユーザーズガイド”を参照してください。
目次 索引 |