このドキュメントでは、EJB 2.0仕様によってEJBデプロイメント・ディスクリプタおよびコードに課せられる規則について説明します。
注意: EJBベリファイアは、EJB 2.0仕様に従って開発されたモジュールおよびBean(EJB 2.0仕様に準拠するCMP 1.xのBeanも含む)を検証します。EJB 1.1仕様に従って開発されたモジュールおよびBeanはサポートされません。
JDeveloper 9.0.4のEJBベリファイアは、次の規則の多くを実装しますが、まだ実装されていない規則は、9.0.5で実装される予定です。ここでは、実装されている規則は黒丸で、実装されていない規則は白丸で示します。 たとえば、次のようになります。
Session Bean、エンティティCMP BeanおよびエンティティBMP Beanの規則と、リモートおよびローカル・ホームなどの規則とでは、多くの重複があります。このため、仕様の参照のみの違いで何度も出てくる規則が多数あります。
メッセージは、問題の対象範囲が的確にわかるように書かれています。たとえば、CMP 2.x Entity Beanはabstractである必要がありますが、CMP 1.x Entity Beanはabstractにしないでください。そこで、メッセージでは必要に応じて「CMP 2.x Entity Bean」、「BMP Entity Bean」または「CMP 1.x Entity Bean」と対象を明示しています。一方、すべてのEntity Beanはjavax.ejb.EntityBeanを拡張する必要があるので、メッセージでは「Entity Bean」とのみ書かれています。
規則の中には、最後に[警告]と指定されているものがあります。これは、仕様で厳格に禁止されてはいないが非推奨とされている規則を示します。この場合のメッセージでは、「する必要があります、しないでください」ではなく「することをお薦めします、しないことをお薦めします」と表記されていることがあります。
規則は、囲みDTD要素によってグループ化されます。各規則の最後にある丸カッコ内のパスは、規則が適用されるDTD要素を、囲みDTD要素に対する相対位置で表しています(「.」は囲み要素自体を示します)。
<entity>
, <message-driven>
, <session>
<class-name>
はすでに宣言されています(ejb-name)。
<class-name>
がプロジェクトで見つかりません(ejb-class)。
<name>
はすでに宣言されています(env-entry/env-entry-name)。
<class-name>
はプリミティブ・ラッパー型またはStringにする必要があります(env-entry/env-entry-type)。
<class-name>
に変換可能である必要があります(env-entry/env-entry-value)。
<name>
はすでに宣言されています(ejb-ref/ejb-ref-name、ejb-local-ref/ejb-ref-name)。
<name>
には接頭辞「ejb/」を付けることをお薦めします(ejb-ref/ejb-ref-name、ejb-local-ref/ejb-ref-name)。[警告]
<interface>
インタフェース<class-name>
がプロジェクトで見つかりません(ejb-ref/remote、ejb-ref/home、ejb-ref/local、ejb-ref/local-home)。
<interface>
インタフェースでは、<class-name>
を拡張する必要があります(ejb-ref/remote、ejb-ref/home、ejb-ref/local、ejb-ref/local-home)。
<name>
は外部で定義されているとみなされます(ejb-ref/ejb-link、ejb-local-ref/ejb-link)。[警告]
<name>
はすでに参照されています(resource-ref/res-ref-name)。
<class-name>
がプロジェクトで見つかりません(resource-ref/res-type)。
<name>
はすでに参照されています(resource-env-ref/resource-env-ref-name)。
<class-name>
がプロジェクトで見つかりません(resource-env-ref/resource-env-ref-type)。
<name>
が有効なXML名(NMTOKEN)ではありません(security-identity/run-as/role-name)。
<name>
がアセンブリ・ディスクリプタで宣言されていません(security-identity/run-as/role-name)。
<entity>
, <session>
<interface>
インタフェース<class-name>
がプロジェクトで見つかりません(remote、home、local、local-home)。
<name>
がセキュリティ・ロールにリンクされていません(security-role-ref/role-name)。
<name>
が有効なXML名(NMTOKEN)ではありません(security-role-ref/role-link)。
<name>
がアセンブリ・ディスクリプタで宣言されていません(security-role-ref/role-link)。
<session>
<message-driven>
<interface>
インタフェースはMessage-Driven Beanには適用できません(remote、home、local、local-home)。
<entity>
<name>
は有効なJava識別子である必要があります(ejb-name、10.3.13)。
<name>
には予約済EJB QL識別子を使用しないでください(ejb-name、11.2.6.1)。
<class-name>
がプロジェクトで見つかりません(prim-key-class)。
<entity>
CMP
<name>
は、主キー・フィールド<name>
に対応するように定義されている必要があります(prim-key-class)。
<name>
はpublicである必要があります(prim-key-class)。
<name>
はCMPフィールドである必要があります(primkey-field)。
<class-name>
の主キー・フィールドである必要があります(prim-key-class)。
<entity>
CMP 2.x
<name>
が有効なXML名(NMTOKEN)ではありません(ejb-name)。
<name>
にはEJB QLの予約語を使用しないでください(ejb-name、10.6.14)。
<name>
は有効なJava識別子である必要があります(abstract-schema-name、10.3.13)。
<name>
には予約済EJB QL識別子を使用しないでください(ejb-name、10.6.14)。
<signature>
に対する問合せ宣言がありません(.)。
<signature>
がEntity Beanクラスで見つかりません(query/query-method)。
<signature>
がEntity Beanクラスで見つかりません(query/query-method)。
<name>
は小文字で始める必要があります(cmp-field/field-name)。
<name>
は有効なJava識別子である必要があります(cmp-field/field-name、10.3.1)。
<entity>
CMP 1.x
<name>
が<class-name>
で定義されている必要があります(cmp-field/field-name)。
<entity>
BMP
<ejb-relation>
<name>
はすでに使用されています(ejb-relation-name)。
<name>
はすでに使用されています(ejb-relationship-role/ejb-relationship-role-name)。
<name>
が定義されていません(ejb-relationship-role/relationship-role-source/ejb-name)。
<name>
はCMP 2.xのEntity Beanでないため、関連に使用できません(ejb-relationship-role/relationship-role-source/ejb-name)。
<name>
は有効なJava識別子である必要があります(cmp-field/field-name、10.3.1)。
<name>
に対するアクセッサ・メソッド<signature>
が<class-name>
で見つかりません(ejb-relationship-role/cmr-field/cmr-field-name)。
<assembly-descriptor>
<name>
が有効なXML名(NMTOKEN)ではありません(security-role/role-name)。
<name>
はすでに宣言されています(security-role/role-name)。
<name>
が宣言されていません(method-permission/role-name)。
<name>
が未知です(method-permission/method/ejb-name、container-transaction/method/ejb-name、exclude-list/method/ejb-name)。
<signature>
は<interface-list>
で定義されている必要があります(method-permission/method、container-transaction/method、exclude-list/method)。
<signature>
はすでにトランザクション属性を割り当てています(container-transaction/method)。
<unchecked>
はメソッド<signature>
のセキュリティ・ロールの割当てをオーバーライドします(method-permission/method)。[警告](.)
<exclude-list>
はメソッド<signature>
のセキュリティ・ロールの割当てをオーバーライドします(exclude-list/method)。[警告]
<signature>
にセキュリティ・ロールの割当てがありません(assembly-descriptor)。[警告]
<large-icon>
, <small-icon>
(in <ejb-jar>
, <entity>
, <message-driven>
, <session>
)
<file>
がプロジェクトで見つかりません(.)。
<file>
は有効なGIFまたはJPEGイメージではありません(.)。
<ejb-client-jar>
<file>
がワークスペースで見つかりません(.)。[警告]
<name>
は「ejb」で始めないでください(7.10.4)。
<signature>
を実装する必要があります(7.10.5)。
<signature>
を実装する必要があります(7.10.7)。
<signature>
を実装する必要があります(7.10.6)。
<signature>
を実装する必要があります(7.10.8)。
<signature>
はcreateメソッドに対応している必要があります(7.10.4、7.10.6)。
<class-name>
である必要があります(7.10.5)。
<class-name>
である必要があります(7.10.7)。
<name>
では、SessionContextメソッド<name>
を使用しないでください(7.6.1)。
<name>
では、UserTransactionメソッド<name>
を使用しないでください(7.6.1)。
<name>
では、Enterprise Beanメソッド<name>
を使用しないでください(7.6.1)。
<name>
では、リソース・マネージャ・メソッド<name>
を使用しないでください(7.6.1)。
<signature>
は、メソッドを実装することによってスローされる<class-name>
をスローする必要があります(7.10.5)。
<class-name>
は公開しないでください(7.10.5)。
<class-name>
は公開しないでください(7.10.5)。
<signature>
は、RemoteExceptionをスローする必要があります(7.10.5)。
<signature>
を、<class-name>
および<class-name>
の両方から導出することはできません(7.10.5)。
<name>
はプリミティブ型またはStringにする必要があります(7.10.5)。
<signature>
および<signature>
は同じIDL名にマップされます(7.10.5)。
<class-name>
はシリアライズ可能またはRMI/IIOP互換とみなされます(7.10.5)。[警告]
<class-name>
は公開しないでください(6.7.2)。
<class-name>
は公開しないでください(6.7.2)。
<signature>
はリモート・インタフェース<class-name>
を返す必要があります(7.10.6)。
<signature>
は、RemoteExceptionをスローする必要があります(7.10.6)。
<signature>
は、CreateExceptionをスローする必要があります(7.10.6)。
<signature>
は、ejbCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(7.10.6)。
<signature>
を、<class-name>
および<class-name>
の両方から導出することはできません(RMI/IIOPの規則)(7.10.6)。
<name>
はプリミティブ型またはStringにする必要があります(7.10.6)。
<signature>
および<signature>
は同じIDL名にマップされます(7.10.6)。
<class-name>
はシリアライズ可能またはRMI/IIOP互換とみなされます(7.10.6)。[警告]
<signature>
ではRemoteExceptionをスローしないでください(7.10.7)。
<signature>
は、メソッドを実装中することによってスローされる<class-name>
をスローする必要があります(7.10.7)。
<signature>
ではRemoteExceptionをスローしないでください(7.10.8)。
<signature>
は、CreateExceptionをスローする必要があります(7.10.8)。
<signature>
はローカル・インタフェース<class-name>
を返す必要があります(7.10.8)。
<signature>
は、ejbCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(7.10.8)。
<signature>
を実装する必要があります(実装しないとリモート・インタフェースを実装できません)(10.6.2)。
<signature>
を実装する必要があります(実装しないとローカル・インタフェースを実装できません)(10.6.2)。
<signature>
を実装する必要があります(10.6.10)。
<signature>
を実装する必要があります(10.6.12)。
<class-name>
である必要があります(10.6.4)。
<signature>
はローカルまたはリモートのホーム・インタフェースのcreateメソッドに対応している必要があります(10.6.10、10.6.12)。
<signature>
を実装する必要があります(10.6.5)。
<signature>
はejbCreateメソッドに対応している必要があります(10.6.5)。
<signature>
)メソッドに対して定義されている必要があります(10.6.5)。
<signature>
は、ローカルまたはリモートのホーム・インタフェースのビジネス・メソッドに対応している必要があります(10.6.10、10.6.12)。
<signature>
を実装しないでください(10.6.2)。
<signature>
は、デプロイメント・ディスクリプタの問合せ要素に対応している必要があります(10.5.7)。
<signature>
を実装する必要があります(10.6.9)。
<signature>
を実装する必要があります(10.6.11)。
<signature>
はpublicである必要があります(10.6.8)。
<signature>
はfinalにしないでください(10.6.8)。
<signature>
はstaticにしないでください(10.6.8)。
<signature>
の戻り型は<class-name>
である必要があります(10.6.10、10.6.12)。
<signature>
は、ローカルまたはリモート・インタフェースのビジネス・メソッドに対応している必要があります(10.6.10、10.6.12)。
<name>
を「ejb」で始めないでください(10.6.8)。
<name>
アクセッサ<signature>
を定義する必要があります(cmp-field/field-name、10.3.1)。
<name>
アクセッサ<signature>
を定義する必要があります(cmr-field/field-name、10.3.1)。
<name>
に対応したフィールド<name>
を定義しないでください(cmp-field/field-name、10.3.1)。
<name>
に対応したフィールド<name>
を定義しないでください(10.3.1)。
<name>
ではCMPフィールドにアクセスしないでください(10.5.2)。
<name>
ではCMRフィールドにアクセスしないでください(10.5.2)。
<name>
では、EntityContextメソッド<name>
を使用しないでください(10.5.5)。
<name>
では、Enterprise Beanメソッド<name>
を使用しないでください(10.5.5)。
<name>
では、リソース・マネージャ・メソッド<name>
を使用しないでください(10.5.5)。
<name>
では主キーCMPフィールドを設定しないでください(10.3.1)。
<signature>
は、メソッドを実装することによってスローされる<class-name>
をスローする必要があります(7.10.5)。
<class-name>
は公開しないでください(10.3.1)。
<class-name>
は公開しないでください(10.3.1)。
<signature>
は、RemoteExceptionをスローする必要があります(10.6.9)。
<signature>
を、<class-name>
および<class-name>
の両方から導出することはできません(10.6.9)。
<name>
はプリミティブ型またはStringにする必要があります(10.6.9)。
<signature>
および<signature>
は同じIDL名にマップされます(10.6.9)。
<class-name>
はシリアライズ可能またはRMI/IIOP互換とみなされます(10.6.9)。[警告]
<name>
に対してセッターを公開しないでください(10.3.1)。
<signature>
を公開しないでください(10.3.1)。
<signature>
は、デプロイメント・ディスクリプタの問合せ要素に対応している必要があります(10.6.14)。
<class-name>
は公開しないでください(10.6.10)。
<class-name>
は公開しないでください(10.6.10)。
<signature>
は、リモート・インタフェース<class-name>
を返す必要があります(10.6.10)。
<signature>
は、CreateExceptionをスローする必要があります(10.6.10)。
<signature>
は、ejbCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(10.6.10)。
<signature>
は、ejbPostCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(10.6.10)。
<signature>
は、リモート・インタフェース<class-name>
またはそのコレクションを返す必要があります(10.6.10)。
<signature>
は、FinderExceptionをスローする必要があります(10.6.10)。
<name>
を「remove」で始めないでください(10.6.10)。
<name>
を「ejb」で始めないでください(10.6.8)。
<signature>
は、RemoteExceptionをスローする必要があります(10.6.10)。
<signature>
を、<class-name>
および<class-name>
の両方から導出することはできません(RMI/IIOPの規則)(10.6.10)。
<name>
はプリミティブ型またはStringにする必要があります(10.6.10)。
<signature>
および<signature>
は同じIDL名にマップされます(10.6.10)。
<class-name>
はシリアライズ可能またはRMI/IIOP互換とみなされます(10.6.10)。[警告]
<signature>
ではRemoteExceptionをスローしないでください(10.6.11)。
<signature>
は、メソッドを実装することによってスローされる<class-name>
をスローする必要があります(10.6.11)。
<name>
に対してセッターを公開しないことをお薦めします(10.3.1)。[警告]
<class-name>
)を定義する必要があります(10.6.12)。
<signature>
は、デプロイメント・ディスクリプタの問合せ要素に対応している必要があります(10.6.14)。
<signature>
は、ローカル・インタフェース<class-name>
を返す必要があります(10.6.12)。
<signature>
はCreateExceptionをスローする必要があります(10.6.12)。
<signature>
は、ejbCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(10.6.12)。
<signature>
は、ejbPostCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(10.6.12)。
<signature>
は、ローカル・インタフェース<class-name>
またはそのコレクションを返す必要があります(10.6.12)。
<signature>
はFinderExceptionをスローする必要があります(10.6.12)。
<name>
を「remove」で始めないでください(10.6.12)。
<name>
を「ejb」で始めないでください(10.6.8)。
<signature>
ではRemoteExceptionをスローしないでください(10.6.12)。
<class-name>
はシリアライズ可能とみなされます(10.6.3)。
<class-name>
はpublicである必要があります(10.6.3)。
<class-name>
はabstractにしないでください(10.6.3)。
<signature>
を実装する必要があります(実装しないとリモート・インタフェースを実装できません)(12.2.2)。
<signature>
を実装する必要があります(12.2.9)。
<class-name>
である必要があります(12.2.3)。
<signature>
を実装する必要があります(12.2.4)。
<signature>
は、ejbCreateメソッドに対応している必要があります(12.2.4)。
<signature>
を実装する必要があります(12.2.9)。
<signature>
はpublicである必要があります(12.2.7)。
<signature>
はfinalにしないでください(12.2.7)。
<signature>
はstaticにしないでください(12.2.7)。
<signature>
の戻り型は<class-name>
である必要があります(12.2.8、12.2.10)。
<signature>
ではRemoteExceptionをスローしないことをお薦めします(12.2.7)。[警告]
<name>
を「ejb」で始めないでください(12.2.7)。
<signature>
を実装する必要があります(実装しないとローカル・インタフェースを実装できません)(12.2.2)。
<signature>
を実装する必要があります(12.2.11)。
<signature>
は、ローカルまたはリモートのホーム・インタフェースのcreateメソッドに対応している必要があります(12.2.9、12.2.11)。
<signature>
を実装する必要があります(12.2.9)。
<signature>
を実装する必要があります(12.2.11)。
<class-name>
である必要があります(12.2.5、12.1.7)。
<signature>
は、ローカルまたはリモートのホーム・インタフェースのfinderメソッドに対応している必要があります(12.2.9、12.2.11)。
<signature>
を実装する必要があります(12.2.9)。
<signature>
を実装する必要があります(12.2.11)。
<signature>
は、ローカルまたはリモートのホーム・インタフェースのビジネス・メソッドに対応している必要があります(12.2.9、12.2.11)。
<signature>
は、ローカルまたはリモートのインタフェースのビジネス・メソッドに対応している必要があります(12.2.8、12.2.10)。
<signature>
を実装する必要があります(12.2.9)。
<signature>
を実装する必要があります(12.2.11)。
<name>
は、publicである必要があります(14.1.1)。
<name>
は、transientにしないでください(14.1.1)。
<name>
は、シリアライズ可能とみなされます(14.1.1)。
<signature>
は、リモート・ホーム・インタフェースのcreateメソッドに対応している必要があります(12.2.9、12.2.11)。
<signature>
は、リモート・インタフェースのビジネス・メソッドに対応している必要があります(12.2.8、12.2.10)。
<name>
では、EntityContextメソッド<name>
を使用しないでください(10.5.5)。
<name>
では、Enterprise Beanメソッド<name>
を使用しないでください(10.5.5)。
<name>
では、リソース・マネージャ・メソッド<name>
を使用しないでください(10.5.5)。
<signature>
は、メソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.8)。
<class-name>
は公開しないでください(12.2.8)。
<class-name>
は公開しないでください(12.2.8)。
<signature>
は、RemoteExceptionをスローする必要があります(12.2.8)。
<signature>
を、<class-name>
および<class-name>
の両方から導出することはできません(12.2.8)。
<name>
はプリミティブ型またはStringにする必要があります(12.2.8)。
<signature>
および<signature>
は同じIDL名にマップされます(12.2.8)。
<class-name>
はシリアライズ可能またはRMI/IIOP互換とみなされます(12.2.8)。[警告]
<signature>
は、リモート・インタフェース<class-name>
を返す必要があります(12.2.9)。
<signature>
は、CreateExceptionをスローする必要があります(12.2.9)。
<signature>
は、ejbCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.9)。
<signature>
は、ejbPostCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.9)。
<signature>
は、リモート・インタフェース<class-name>
またはそのコレクションを返す必要があります(12.2.9)。
<signature>
は、FinderExceptionをスローする必要があります(10.6.10)。
<signature>
は、ejbFindメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.9)。
<signature>
は、RemoteExceptionをスローする必要があります(12.2.9)。
<signature>
を、<class-name>
および<class-name>
の両方から導出することはできません(12.2.9)。
<name>
はプリミティブ型またはStringにする必要があります(12.2.9)。
<signature>
および<signature>
は同じIDL名にマップされます(12.2.9)。
<class-name>
はシリアライズ可能またはRMI/IIOP互換とみなされます(12.2.9)。[警告]
<class-name>
は公開しないでください(12.2.9)。
<class-name>
は公開しないでください(12.2.9)。
<name>
には、「create」という名前を付ける必要があります(14.1.8)。
<signature>
ではRemoteExceptionをスローしないでください(12.2.10)。
<signature>
は、メソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.10)。
<signature>
は、ローカル・インタフェース<class-name>
を返す必要があります(12.2.11)。
<signature>
は、CreateExceptionをスローする必要があります(12.2.11)。
<signature>
は、ejbCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.11)。
<signature>
は、ejbPostCreateメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.11)。
<class-name>
)を定義する必要があります(12.2.10)。
<signature>
は、ローカル・インタフェース<class-name>
またはそのコレクションを返す必要があります(12.2.11)。
<signature>
は、FinderExceptionをスローする必要があります(12.2.11)。
<signature>
は、ejbFindメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.11)。
<name>
を「ejb」で始めないでください(12.2.7)。
<name>
を「remove」で始めないでください(12.2.11)。
<signature>
は、homeメソッドを実装することによってスローされる<class-name>
をスローする必要があります(12.2.11)。
<signature>
ではRemoteExceptionをスローしないでください(12.2.11)。
<class-name>
は、publicである必要があります(14.1.9)。
<class-name>
には、引数なしのpublicコンストラクタが必要です(14.1.9)。
<name>
は、publicである必要があります(14.1.9)。
<name>
はstaticにしないでください(14.1.9)。
<name>
は、CMPフィールドに対応している必要があります(14.1.9)。
<class-name>
をスローしないでください(15.7.3)。
<class-name>
をスローしないでください(15.7.4)。
<class-name>
をスローしないでください(15.7.5)。
<name>
では、MessageDrivenContextメソッド<name>
を使用しないでください(15.4.3)。
<name>
では、UserTransactionメソッド<name>
を使用しないでください(15.5.1)
<name>
では、Enterprise Beanメソッド<name>
を使用しないでください(15.5.1)。
<name>
メソッドでは、リソース・マネージャ・メソッド<name>
を使用しないでください(15.5.1)。
Copyright © 1997, 2004, Oracle. All rights reserved.