30.4.4. エンティティアクセスの監査

エンティティセクションの audit 要素により、エンティティ bean とアクセス権限の監査の方法を指定できます。これが確立した呼び出し ID となるように、セキュリティドメイン下で エンティティ bean にアクセスする場合にのみ可能となります。audit 要素の コンテンツモデルは図30.5「jbosscmp-jdbc.xml 監査要素のコンテンツモデル」 でご覧になれます。
jbosscmp-jdbc.xml 監査要素のコンテンツモデル

図30.5 jbosscmp-jdbc.xml 監査要素のコンテンツモデル

  • created-by: この任意の要素はエンティティを作成した呼び出し側が指定の column-name または cmp field-nameのいずれかに保存されるよう指定します。
  • created-time: この任意の要素はエンティティの作成時間が指定の column-name または cmp field-nameのいずれかに保存されるよう指定します。
  • updated-by: この任意の要素はエンティティを最後に変更した呼び出し側が指定の column-name あるいは CMP field-nameのいずれかに保存されるよう指示します。
  • updated-time: この任意の要素はエンティティの最終更新時間が指定の column-name または CMP field-nameのいずれかに保存されるよう指定します。
各要素に対して、field-name が与えられる場合は、アクセスされたエンティティ bean の指定 CMP フィールドに、該当する監査情報が格納されるようになっています。エンティティ上に該当する CMP フィールドが宣言される必要はありません。一致するフィールド名がある場合は、 該当する CMP フィールドの抽象 getter と setter を使ってアプリケーション内の監査フィールドにアクセスすることができます。これ以外は、監査フィールドが作成されて内部的にエンティティに追加されます。監査フィールド名を使って EJB-QL クエリ内の監査情報にアクセスすることはできますが、エンティティアクセッサーから直接アクセスすることはできません。
一方、column-name が指定されている場合、該当する監査情報は指定のエンティティテーブルのカラムに格納されます。JBoss がテーブルを作成すると jdbc-typesql-type 要素を使用して、ストレージタイプを定義することができます。
特定のカラム名を持つ監査情報の宣言を以下に示します。
<jbosscmp-jdbc>
    <enterprise-beans>
        <entity>
            <ejb-name>AuditChangedNamesEJB</ejb-name>
            <table-name>cmp2_audit_changednames</table-name>
            <audit>
                <created-by>
                    <column-name>createdby</column-name>
                </created-by>
                <created-time>
                    <column-name>createdtime</column-name>
                </created-time>
                <updated-by>
                    <column-name>updatedby</column-name></updated-by>
                <updated-time>
                    <column-name>updatedtime</column-name>
                </updated-time>
            </audit>
        </entity>
    </enterprise-beans>
</jbosscmp-jdbc>