前編に続いて、GeronimoのEJBコンテナ機能を試していこう。
ログインに成功すれば 「hello world.」というメッセージが表示される。追加した3ユーザーのそれぞれのパスワードは system = manager、user1 = p1、user2 = p2 だ。この system ユーザーは管理コンソールにログイン可能なように、他の2つは異なる管理属性が設定されている。そこで、筆者は、管理コンソールアプリケーションを、LDAPレルムの情報を参照するように変更してみたが、問題なく動作できた。
その際に利用した設定ファイルがweb.xml(リスト5)とgeronimo-web.xml(リスト6)だ。web.xml では レルムgeronimo-properties-realmではなく、レルム ldap-realmを参照するように変更したのみだ。geronimo-web.xml はGeronimo生成する各レルムの利用方法のページを参考に、LDAP内の状態に合わせて、アプリケーション側の管理ロール名 admin とLDAP側とのマッピングを変更し記述したものだ。具体的には、(リスト4)のように <role-mappings>エレメント内をGeronimoが提示したものから修正している。
リスト4●<role-mappings>エレメントの修正
<role-mappings> <role role-name="admin"> <principal name="admin" designated-run-as="true" class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" /> <principal name="system" class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" /> </role> </role-mappings> |
リスト5●web.xml(抜粋)
<security-constraint> <web-resource-collection> <web-resource-name></web-resource-name> <url-pattern>/portal/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>PUT</http-method> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name></web-resource-name> <url-pattern>/secure/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>PUT</http-method> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <!-- <realm-name>geronimo-properties-realm</realm-name> --> <realm-name>ldap-realm</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/loginerror.jsp</form-error-page> </form-login-config> </login-config> <security-role> <role-name>admin</role-name> </security-role> </web-app> |
リスト7●geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://geronimo.apache.org/xml/ns/web" xmlns:naming="http://geronimo.apache.org/xml/ns/naming" configId="MyConfigName" parentId="geronimo/j2ee-server/1.0/car"> <context-root>/console2</context-root> <context-priority-classloader>true</context-priority-classloader> <security-realm-name>ldap-realm</security-realm-name> <security> <default-principal> <principal name="anonymous" class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" /> </default-principal> <role-mappings> <role role-name="admin"> <principal name="admin" designated-run-as="true" class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" /> <principal name="system" class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" /> </role> </role-mappings> </security> </web-app> |
Geronimoは、前述のプロパティファイルレルム、LDAPレルム以外にRDBMSを用いたレルムなどが利用可能だ。
写真5●デプロイの指定 [画像のクリックで拡大表示] |
写真6●DayTraderのトップページ [画像のクリックで拡大表示] |
写真7●模擬株取引 [画像のクリックで拡大表示] |
写真8●Geronimoが提供している様々な機能のテストプログラム [画像のクリックで拡大表示] |
冒頭で説明しているが DayTraderアプリケーションは、はじめからデプロイされているアプリケーションだ。そこで筆者はGeronimoのソースコードから DayTraderアプリケーションの最新版をビルドしなおし、デプロイを行ってみた。
EARファイルのデプロイも WARファイルと同様に 管理コンソールの [Deploy New]メニューから行う。DayTraderアプリケーション内には、EJBが多数あるため、デプロイはEARファイルの指定とデプロイプランファイルの2つを指定するようになっている(写真5)。
デプロイ後、 http://localhost:8080/daytrader にアクセスすれば、DayTraderのトップページ(写真6)が表示される。
このアプリケーションを動作させるためには、ページ左側メニューの[Configuration]をクリックして表示される設定ユーティリティの[(Re)-populate Trade Database]を実行し、データベースにテーブルとデータを生成する必要がある。初期設定に成功するとトップページの各種メニューが利用できるようになり、模擬株取引が行える(写真7)。
[Web Primitives]というメニューを選択すると、各機能のテスト用のリンクが表示される。このページからはGeronimoが提供している様々な機能のテストプログラムを実行することができるようになっている(写真8)。
紹介したアプリケーション以外にも debug-tool、jsp-examples、juddi、servlets-examplesといったデモアプリケーションがデプロイされているので、興味があれば試してみていただきたい。前述のように、一通り試したところ特に問題なく、期待以上に安定していると感じた。
Tomcatの機能でクラスタリング可能
前回、現時点のGeronimoにはクラスタリング機能はない、と紹介したがTomcatのクラスタリング機能を用いることで、Webコンテナのレベルでクラスタリングを行うことが可能だ。ただし、この方法は設定ファイルのエディットとApache Webサーバーを別途用意(Geronimoは Webサーバーを内蔵せず、TomcatまたはJettyで代用している)する必要がある。
この方法は本連載の第4回で紹介したTomcatをクラスタリングさせる方法を応用したものだ。詳しい方法はこちらに紹介されているので、興味のある方はごらんいただきたい。
まだまだ紹介しきれない Geronimo だが、その概要がお分かり頂けたただろうか。数多くのApache プロダクトの集大成としてJ2EEアプリケーションサーバーが Apache ライセンスでリリースされたことの意味は非常に大きいと思う。今後も目が離せないプロダクトだ。
(前編を読む)
■著者紹介 黒住幸光(くろずみ ゆきみつ)氏 |