Eclipseを利用して、ビジネスクラスを作成します。
Eclipseの操作方法については、“5.9.8 ビジネスクラスの作成(Eclipse)”を参照してください。
ビジネスクラスの作成
ビジネスクラス作成時には、以下の情報を入力します。
パッケージ名: calendar
クラス名: CalendarHandler
メソッドには、以下の内容を追加します。
入力データ | 入力情報 | コマンド | メソッド | 復帰値型 |
|---|---|---|---|---|
入力データなし | 指定しない | 指定しない | 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 ユーザーズガイド”を参照してください。