SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Seamアプリケーション開発のためのJBoss Toolsのセットアップ

手取り足取りチュートリアルで新たなツールを手に入れる

  • X ポスト
  • このエントリーをはてなブックマークに追加

ログイン/認証ロジックの処理

 プロジェクトウィザードはログインを作成するだけでなく、ログインをルートパッケージ内のAuthenticator.javaというビジネスオブジェクトに接続します。Authenticator.java内にログインの検証をすべてコーディングし、成功か否かに応じてtrueまたはfalseを返してください。

@Name("authenticator")
''public class'' Authenticator
{
    @Logger Log log;
    
    @In Identity identity;
   
    ''public boolean'' authenticate()
    {
        log.info("authenticating #0", identity.getUsername());
        //write your authentication logic here,
        //return true if the authentication was
        //successful, false otherwise
        identity.addRole("admin");
        ''return true;''
    }
}

JPAエンティティの作成

 EclipseのProject Explorer内でプロジェクトノードを右クリックし、[New]→[Seam Generate Entities]メニューオプションを選択します。これにより、新しいウィザードが起動され、プロジェクト作成時に定義した接続プロファイルを使ってJPAエンティティが自動的に生成されます(図13を参照)。さらに、各エンティティについて基本的なメンテナンスWebページも作成されるので、反復的な作業にかかる時間が大いに節約されます。

図13 Generate Seam Entitiesウィザード。新しいウィザードにより、プロジェクト作成時に定義した接続プロファイルを使ってJPAエンティティが自動的が生成されます。
図13 Generate Seam Entitiesウィザード。新しいウィザードにより、プロジェクト作成時に定義した接続プロファイルを使ってJPAエンティティが自動的が生成されます。

 このウィザードは、この例のために作成した平凡なデータモデルでは申し分なく働くのですが、テーブルが何百もあるプロダクションデータベースで実行したところ、うまく働きませんでした。データベース内の全テーブルについて1つ1つエンティティの作成を試みているようで、どれを含めるかは指定できませんでした。しかし、エンティティクラスを前もって作成しておけば、関連するメンテナンスページの生成前にそれらを選択することができました。

 幸いなことに、このような複雑なデータベーススキーマに対しては、Eclipse IDE for Java EEに付属のDali JPAツールを使用して、エンティティを作成し、それらをSeamプロジェクトにインポートすることができました。とはいえ、デフォルトのアクションやメンテナンスWebページなど、生成された追加的なコードの一部は失われました。

 さらに、生成されたSeam JPAコードを手作業で操作する必要もありました。JPAエンティティ内に含まれている、疑わしい実スキーマ名を削除しなければなりませんでした。たとえば次のものを、

@Entity
@Table(name = "author", catalog = "devx")
''public class'' Author ''implements'' java.io.Serializable 

 次のような純粋なテーブルベースの注釈に置き換えることにしました。

@Entity
@Table(name = "author")
''public class'' Author ''implements'' java.io.Serializable 

 実際の注釈にデータベース名を含めることに関するロジックはよくわかりません。実のところ、これはJPA Entity Managerが使用するデータベース接続のプロパティなのです。したがって、それは実際のコードに属していないと思います。

 このような懸念事項はありますが、それもSeamが個々のJPAエンティティについて、ナビゲーションと統合的な検証機能を備えた一連の完璧な検索/編集ページを生成してくれることを思えばどうということはありません。後はHTMLに若干の操作を行って、レイアウトを修正し、デフォルトのラベルをもっとユーザーフレンドリーなものに置き換えるだけで済みます。

 もう1つ付け加えると、デフォルトのFaceletsテンプレート(WebContent/layout/template.xhtml)を修正して、生成された各ページへのデフォルトのリンクの表示方法を変更することができます(図14を参照)。

図14 JPAエンティティに対して生成された検索/編集ページ。デフォルトのFaceletsテンプレート(WebContent/layout/template.xhtml)を修正できます。
図14 JPAエンティティに対して生成された検索/編集ページ。デフォルトのFaceletsテンプレート(WebContent/layout/template.xhtml)を修正できます。

次のページ
新しい対話の作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Jacek Furmankiewicz(Jacek Furmankiewicz)

Compuware Corporation of Canadaの上級開発者/設計者。UNIX、PowerBuilder、C#/Microsoft .NET、Java、PHP、Microsoft SQL Server、OracleなどでITの専門家として12年の経験がある。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2495 2008/06/06 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング