デプロイされたアプリケーションは、前述した通り、Seamアプリケーションフレームワークを用いた、基本的なCRUD機能を持つWebアプリケーションである。以降では、自動生成されたICEfaces×JBoss Seamアプリケーションについて見ていくことにする。
画面レイアウト
まず画面についてだが、(JSPではなく)Faceletsを用いて構築されている。画面のレイアウトは、layout/template.xhtmlファイルに記述されており、次のような特徴を持つ。
- スタイルとしては、ICEfacesのデフォルトのテーマであるXPを用いている
- 画面の左上に、コネクションステータスコンポーネント(ice:outputConnectionStatus)により、サーバとの接続状況が表示される
- フッタには、折りたたみパネルコンポーネント(ice:panelCollapsible)を用いている
認証と承認
ログインページにアクセスすると、図9のような認証画面が表示される。
この認証機能は、JBoss Seamが提供するIdentityコンポーネントを用いて実装されている。Identityコンポーネントは、ユーザ名、パスワードを用いた認証のためのコンポーネントである。このコンポーネントは、components.xmlに設定されている(リスト6の
リスト5 認証用のクラスであるAuthenticatorクラス(コメントなどを省略している)
@Name("authenticator")
public class Authenticator {
@In
Identity identity;
public boolean authenticate() {
identity.addRole("admin");
return true;
}
}
リスト6は、components.xmlファイルにおける、JBoss Seamにおけるセキュリティの設定である。
リスト6 JBoss Seamのセキュリティ設定(components.xml)
<drools:rule-base name="securityRules">
<drools:rule-files>
<value>/security.drl</value>
</drools:rule-files>
</drools:rule-base>
<security:identity authenticate-method="#{authenticator.authenticate}"
security-rules="#{securityRules}" remember-me="true" />
<event type="org.jboss.seam.notLoggedIn">
<action expression="#{redirect.captureCurrentView}" />
</event>
<event type="org.jboss.seam.postAuthenticate">
<action expression="#{redirect.returnToCapturedView}" />
</event>
詳細はJBoss Seamリファレンスマニュアルを参照いただくとして、ここでは簡単に説明しておく。
<drools>タグ
ルールエンジンであるDrools(JBoss Rules)を用いることを設定している。認証および承認のルールの設定ファイルはsecurity.drlであり、現状では何も設定されていない。
<security>タグ
前述した通り、Identityコンポーネントを設定している。また、認証および承認のルールにsecurity.drlを用いるように設定している。
<event>タグ
イベントリスナを設定している。ここでは、ある(承認されていない)ページにアクセスしエラーになった際に、そのページを保持しておき、再度ログインした場合に該当ページに遷移させるように設定している。
上記、イベントとアクションの設定は、容易ながら非常に強力である。たとえば、画面上部(ヘッダ)のリンクIceUserListをクリックすると、次ページの図10(左)のようなユーザ一覧が表示される。ログインしていない状態で、この画面の下部にある「Create iceUser」ボタンを押下すると、(図9のように)ログインすべき旨のエラーとなる。ここで、適当なユーザ名とパスワード(値は何でもよい)を用いてログインすると、ログイン前にアクセスしようとしていた新規ユーザ作成ページへと遷移する。