8. アノテーション定義支援ツール

Java EE より開発容易性の一環として、アノテーション が導入されます。アノテーション定義を使うことで、配備記述子によるXML編集の煩雑さは解消され、Java EEコンポーネントを簡単に作成できます。しかし、アノテーション定義は、数多く存在し、これらをまとめてソースコード編集すると生産効率が下がる場合があります。WebOTX Developer’s Studioアノテーションエディタは、アノテーション定義をGUI化することで、編集作業を簡略化します。
アノテーションエディタは以下の機能があります。
アノテーションの一覧表示・編集
Javaソースの持つアノテーションを一覧表示します。さらに、GUIでアノテーションの付与・更新・削除機能を提供します。
アノテーションの表示選択
用途別にアノテーションをカテゴリに分け、そのカテゴリ毎にビューに、表示する/しない を選択できる機能を提供します。この機能により、ユーザが表示するアノテーションを制御できるようになります。
アノテーションの検証
ある要素にアノテーションが付与できるかどうかの検証やアノテーションの属性などに入力される値の検証機能を提供します。

8.1. アノテーションの一覧表示・編集

8.1.1. 注釈プロパティー・ビューの表示

注釈プロパティー・ビューは以下の手順で開きます。
メニュー ウィンドウビューの表示 > その他... を選択すると、ビューの表示画面が表示されます。
ビューの表示画面で、JAX-WS 注釈プロパティー を選択して、OK をクリックします。


図8.1.1-1

注釈プロパティー・ビューが表示されます。


図8.1.1-2

エディタで選択されるJava要素によって、付与できるアノテーションを一覧表示します。
注釈プロパティー・ビューは以下のような画面です。


図8.1.1-3

各項目の説明を以下に示します。
表8.1.1-1
項番 項目 説明 備考
(1)
フィルター
クリックした場合、選択が必要・ダイアログを開く。
用途別にアノテーションをカテゴリに分け、そのカテゴリ毎にビューに、表示する/しない を選択できる機能を提供します。この機能により、ユーザが表示するアノテーションを制御できるようになります。
(2)
注釈
アノテーションの名前あるいはアノテーションの属性名を表示します。
(3)

アノテーション名の場合は該当アノテーションがJava要素に付与されるかどうかを示します。
アノテーション属性の場合は、該当属性の値を示します。
(1)アノテーション名の場合:
チェックボックスで設定します。
ONにした場合、該当アノテーションがJava要素に付与されます。
OFFにした場合、該当アノテーションがJava要素に付与されません。

(2)アノテーション属性の場合:
booleanの場合は、チェックボックスで、ONとOFFだけで設定できます。
列挙の場合は、コンボボックスリストで設定できます。
Classの場合は、テキストボックスまたは参照ボタンで編集できます。
配列の場合は、参照ボタンで開くダイアログで設定できます。
その以外は、テキストボックスで編集できます。
(4)
ボタン
アノテーションの属性を表示するかどうかを制御します。
をクリックして、該当アノテーションの属性を表示します。
をクリックして、該当アノテーションの属性を表示しません。
付与の対象となるJava要素は以下の型に分かれています。
表8.1.1-2
記号 説明
[T] Type
Java要素はクラス、インターフェース(アノテーションを含む)、あるいはenum(列挙型)であることを示します。
[C] Constructor
Java要素はコンストラクターであることを示します。
[M] Method
Java要素はメソッドであることを示します。
[F] Field
Java要素はフィールドであることを示します。
[Par] Parameter  
Java要素はパラメータであることを示します。
[A] AnnotationType  
Java要素はアノテーションタイプであることを示します。
[Pkg] Package  
Java要素はパッケージであることを示します。
アノテーションの付与できる対象はTarget属性としてアノテーション側で定義されています。エディタでJava要素にフォーカスをあてると、注釈プロパティー・ビューには、Targetの適合するアノテーションの一覧が表示され、編集することができます。

Caution
コンストラクターはMethodに含まれません。型はConstructorのみまたはMethodのみの場合、コンストラクターはサポートしません。型はConstructor、Method両方である場合、コンストラクターはサポートします。

8.1.2. アノテーションの一覧表示機能

Java要素の型によって、付与できるアノテーションを一覧表示する機能について説明します。
クラス(Type)に付与できるアノテーションの一覧表示は以下の画面の通りです。
付与対象がクラスまたはメソッドで、カテゴリが EJB である場合の画面表示を例に説明を行います。
付与対象がクラスの場合


図8.1.2-1

エディタでクラス名が選択された場合、javax.ejb.Statelessやjavax.ejb.StatefulなどTargetがTypeであるアノテーションが一覧表示されます。(TargetがMethodであるjavax.ejb.PostActivateやjavax.ejb.PrePassivateなどは、一覧には表示されません。)
付与対象がメソッドの場合
メソッドに付与できるEJBに所属するアノテーションの一覧表示は以下の画面の通りです。


図8.1.2-2

エディタでメソッド名が選択された場合、javax.ejb.PostActivateやjavax.ejb.PrePassivateなどTargetがMethodであるアノテーションが、ビューで表示されます。(前出の、TargetがTypeであるjavax.ejb.Statelessやjavax.ejb.Statefulなどは一覧には表示されません。 )
表8.1.2-1
選択された付与対象 カテゴリ 説明
クラス
プロジェクトのアノテーション表示選択により、選択された該当カテゴリのアノテーションを表示します。詳しくは8.2. アノテーションの表示選択を参照してください。
カテゴリ設定範囲内において、Target定義にクラスが含まれるアノテーションを表示します。
メソッド
カテゴリ設定範囲内において、Target定義にメソッドが含まれるアノテーションを表示します。
その他
カテゴリ設定範囲内において、Target定義に付与対象が含まれるアノテーションを表示します。

Memo
1.javax.ejb.TransactionAttributeやjavax.interceptor.InterceptorsなどTargetがType、Method両方であるアノテーションは、クラス名が選択された場合もメソッドが選択された場合も、一覧に表示されます。
2.アノテーションをTargetとは異なる対象に付与すると、エディタでエラーが発生します。詳しい情報は8.3. アノテーションの検証を参照してください。
3.各アノテーションのTargetは、8.4. サポートするアノテーションを参照してください。

8.1.3. アノテーションの新規追加機能

具体例として、javax.ejb.StatelessをJavaクラスへの、アノテーションの新規追加機能の使い方を説明します。
下図は、アノテーションを追加する前のエディタと注釈プロパティー・ビューの状態です。


図8.1.3-1

注釈プロパティー・ビューで、javax.ejb.StatelessアノテーションのをONに変更します。


図8.1.3-2

javax.ejb.StatelessアノテーションがクラスTestStatelessSessionBeanに付与されます。
下図は、javax.ejb.StatelessアノテーションがクラスTestStatelessSessionBeanに付与された後の画面です。


図8.1.3-3

エディタで、以下の変化をご確認ください。
(1) TestStatelessSessionBeanクラスの定義前で@Stateless()が追加されます。
(2) import javax.ejb.Stateless;句が追加されます。
(3) 注釈プロパティー・ビューでjavax.ejb.Statelessアノテーションの値がONになっています。

8.1.4. アノテーションの属性の変更機能

注釈プロパティー・ビューを使って、Java要素に付与されるアノテーションの属性を追加・更新・削除することができます。
以下は具体例として、javax.ejb.Statelessを変更する場合です。
下図は、属性変更の前のエディタと注釈プロパティー・ビュー状態です。


図8.1.4-1

8.1.4.1. 属性の追加

注釈プロパティー・ビューで、javax.ejb.Statelessアノテーションのdescription属性のにThe description of Stateless Annotationと、入力して、ENTER キーを押します。


図8.1.4.1-1

エディタで、@Statelessアノテーションにdescription属性が追加されます。
結果は、下図のとおりです。


図8.1.4.1-2

括弧が無い場合の手順
後ろに括弧が無いアノテーションに、注釈プロパティー・ビューで正しく属性を追加することはできません。
このような場合、アノテーション記述にエディタを用いて括弧を補うようにします。
詳細は、8.5.1.1. 注釈プロパティー・ビューで属性を追加できないをご覧ください。

8.1.4.2. 属性の変更


図8.1.4.2-1

注釈プロパティー・ビューでjavax.ejb.Statelessのdescription属性の値を "Modified It!" に変更して、ENTER キーを押すと、変更結果がエディタに反映されます。


図8.1.4.2-2

8.1.4.3. 属性の削除


図8.1.4.3-1

注釈プロパティー・ビューでjavax.ejb.Statelessのdescription属性の値を空白にして、ENTER キーを押すと、エディタで@Statelessアノテーションのdescription属性が""になります。


図8.1.4.3-2

8.1.5. アノテーションの削除機能

注釈プロパティー・ビューで、アノテーションを削除する機能です。
具体例として、javax.ejb.Stateless アノテーションの削除方法を説明します。
下図は、アノテーションを削除する前のエディタと注釈プロパティー・ビューの状態です。


図8.1.5-1

注釈プロパティー・ビューでjavax.ejb.StatelessアノテーションのをOFFにします。


図8.1.5-2

エディタで、@Statelessアノテーションが削除されます。


図8.1.5-3

Memo
削除されたアノテーションの定義クラスのimport句((1)の部分)は、他の箇所で利用していない場合、同時に削除されます。

8.2. アノテーションの表示選択

8.2.1. 機能説明

アノテーションの表示選択の使用方法について説明します。

8.2.2. 選択が必要・ダイアログの表示

注釈プロパティー・ビューの右上隅にある逆三角形のアイコン > フィルター... をクリックします。


図8.2.2-1

選択が必要・ダイアログが表示されます。


図8.2.2-2

選択が必要・ダイアログは以下のような画面です。


図8.2.2-3

各項目の説明を以下に示します。
表8.2.2-1
項番 項目 説明 備考
(1)
ダイアログの提示情報
「Select Annotation Categories to Filter」というメッセージが表示されます。

(2)
Java EE共通 チェックボックス
Java EE共通カテゴリに所属するアノテーションを注釈プロパティー・ビューで表示しないかどうかを指定します。
ONにした場合、注釈プロパティー・ビューで表示しません。
OFFにした場合、注釈プロパティー・ビューで表示します。
(3)
EJB チェックボックス
EJBカテゴリに所属するアノテーションを注釈プロパティー・ビューで表示しないかどうかを指定します。
(4)
JAXB チェックボックス
JAXB カテゴリに所属するアノテーションを注釈プロパティー・ビューで表示しないかどうかを指定します。
(5)
JPA チェックボックス
JPA カテゴリに所属するアノテーションを注釈プロパティー・ビューで表示しないかどうかを指定します。
(6)
JAX-WS チェックボックス
JAX-WSカテゴリに所属するアノテーションを注釈プロパティー・ビューで表示しないかどうかを指定します。
(7)
すべて選択(S) ボタン
すべてのカテゴリを選択します。
(8)
選択をすべて解除(D)ボタン
すべてのカテゴリの選択を解除します。

(9)
OKボタン
カテゴリに所属するアノテーション表示・非表示の変更を適用します。

(10)
キャンセルボタン
カテゴリに所属するアノテーション表示・非表示の変更を適用しません。


Caution
全てのカテゴリにおいてJavaモジュールのバージョンは5.0以上でなければなりません。

8.2.3. 表示するカテゴリの選択

注釈プロパティー・ビューに表示するカテゴリを選択できます。 これにより、必要なアノテーションだけを表示でき、目的のアノテーションの探索が容易になります。

下図では、注釈プロパティー・ビューにアノテーションが表示されていません。


図8.2.3-1

ここで、EJBカテゴリをビューに表示するように、[選択が必要]ダイアログで設定します。

[選択が必要]ダイアログでは、ビューに表示しないカテゴリを指定します。 したがって、EJBカテゴリをビューに表示する場合は、EJBをOFFにします。


図8.2.3-2

エディタ内の、クラスを選択すると、クラスに付与できるEJBカテゴリのアノテーションが一覧表示されるようになります。


図8.2.3-3

他の四つのカテゴリに所属するアノテーションは表示されないことを、ご確認ください。

Caution
1.注釈プロパティー・ビューで表示されないアノテーションも、エディタで入力することは可能です。
2. エディタでアノテーションが正しく付与できない場合、8.3. アノテーションの検証をご覧ください。

8.3. アノテーションの検証

アノテーションを記述した際の、妥当性の検証機能について説明します。
妥当性は、付与する対象、指定する属性などについて判定されます。
各アノテーションの妥当な指定については、8.4. サポートするアノテーションを参照してください。

8.3.1. アノテーションの定義位置の検証機能

付与する対象の妥当性についての検証です。
以下は、メソッドには付与できない@Statefulアノテーションを、エディタで強制的に付与した際の、エラーの例です。 マウスをエラー発生箇所に置くと、関連するエラーメッセージが表示されます。


図8.3.1-1

8.3.2. アノテーションの属性名の検証機能

属性名の妥当性についての検証です。
クラスに付与される@Statefulアノテーションに "mappedName2"という、存在しない属性を設定しています。 マウスをエラー発生箇所に置くと、関連するエラーメッセージが表示されます。


図8.3.2-1

8.3.3. アノテーションの属性のタイプの検証機能

属性に指定した型の妥当性についての検証です。
@MessageDrivenアノテーションのactivationConfig属性に、期待する型とは異なる文字列型の値を設定すると、エディタでエラーが発生します。また、マウスをエラー発生箇所に置くと、関連するエラーメッセージが表示されます。


図8.3.3-1

8.4. サポートするアノテーション

各アノテーションが付与できる Target について説明します。 また、以下のアノテーションについては、これまでに説明した操作が機能しませんが、エディタからの入力は可能です。

8.4.1. Java EE共通 アノテーション

Java EE共通カテゴリに所属するアノテーションは以下の通りです。
表8.4.1-1
項番 パッケージ名 アノテーション名 Target
1
javax.annotation
Generated
[ALL]
2
javax.annotation
PostConstruct
[M]
3
javax.annotation
PreDestroy
[M]
4
javax.annotation
Resource
[F, M, T]
5
javax.annotation
Resources
[T]
6
javax.annotation
ManagedBean
[T]
7
javax.annotation.security
DeclareRoles
[T]
8
javax.annotation.security
DenyAll
[M]
9
javax.annotation.security
PermitAll
[M, T]
10
javax.annotation.security
RolesAllowed
[M, T]
11
javax.annotation.security
RunAs
[T]
12
javax.annotation.sql
DataSourceDefinition
[T]
13
javax.annotation.sql
DataSourceDefinitions
[T]
14
javax.ejb
EJB
[F, M, T]
15
javax.ejb
EJBs
[T]
16
javax.persistence
PersistenceContext
[F, M, T]
17
javax.persistence
PersistenceContexts
[T]
18
javax.persistence
PersistenceUnit
[F, M, T]
19
javax.persistence
PersistenceUnits
[T]

Memo
EJB(s)、PersistenceContext(s)とPersistenceUnit(s)の6つのアノテーションが他のパッケージからJava EE共通カテゴリに移動します。

8.4.2. EJBアノテーション

EJB カテゴリに所属するアノテーションは以下の通りです。
表8.4.2-1
項番 パッケージ名 アノテーション名 Target
1
javax.ejb
ActivationConfigProperty
[]
2
javax.ejb
ApplicationException
[T]
3
javax.ejb
Init
[M]
4
javax.ejb
Local
[T]
5
javax.ejb
LocalHome
[T]
6
javax.ejb
MessageDriven
[T]
7
javax.ejb
PostActivate
[M]
8
javax.ejb
PrePassivate
[M]
9
javax.ejb
Remote
[T]
10
javax.ejb
RemoteHome
[T]
11
javax.ejb
Remove
[M]
12
javax.ejb
Stateful
[T]
13
javax.ejb
Stateless
[T]
14
javax.ejb
Timeout
[M]
15
javax.ejb
TransactionAttribute
[M, T]
16
javax.ejb
TransactionManagement
[T]
17
javax.interceptor
AroundInvoke
[M]
18
javax.interceptor
ExcludeClassInterceptors
[M]
19
javax.interceptor
ExcludeDefaultInterceptors
[M, T]
20
javax.interceptor
Interceptors
[M, T]
21
javax.ejb
AccessTimeout
[M, T]
22
javax.ejb
AfterBegin
[M]
23
javax.ejb
AfterCompletion
[M]
24
javax.ejb
Asynchronous
[M, T]
25
javax.ejb
BeforeCompletion
[M]
26
javax.ejb
ConcurrencyManagement
[T]
27
javax.ejb
DependsOn
[T]
28
javax.ejb
LocalBean
[T]
29
javax.ejb
Lock
[M, T]
30
javax.ejb
Schedule
[M]
31
javax.ejb
Schedules
[M]
32
javax.ejb
Singleton
[T]
33
javax.ejb
Startup
[T]
34
javax.ejb
StatefulTimeout
[T]
35
javax.interceptor
AroundTimeout
[M]
36
javax.interceptor
Interceptor
[T]
37
javax.interceptor
InterceptorBinding
[A]

Memo
javax.ejbパッケージに置くEJBとEJBsアノテーションがJava EE共通カテゴリに移動します。

8.4.3. JPAアノテーション

JPA カテゴリに所属するアノテーションは以下の通りです。
表8.4.3-1
項番 パッケージ名 アノテーション名 Target
1
javax.persistence
AssociationOverride
[T,M,F]
2
javax.persistence
AssociationOverrides
[T,M,F]
3
javax.persistence
AttributeOverride
[T,M,F]
4
javax.persistence
AttributeOverrides
[T,M,F]
5
javax.persistence
Basic
[M,F]
6
javax.persistence
Column
[M,F]
7
javax.persistence
ColumnResult
[]
8
javax.persistence
DiscriminatorColumn
[T]
9
javax.persistence
DiscriminatorValue
[T]
10
javax.persistence
Embeddable
[T]
11
javax.persistence
Embedded
[M,F]
12
javax.persistence
EmbeddedId
[M,F]
13
javax.persistence
Entity
[T]
14
javax.persistence
EntityListeners
[T]
15
javax.persistence
EntityResult
[]
16
javax.persistence
Enumerated
[M,F]
17
javax.persistence
ExcludeDefaultListeners
[T]
18
javax.persistence
ExcludeSuperclassListeners
[T]
19
javax.persistence
FieldResult
[]
20
javax.persistence
GeneratedValue
[M,F]
21
javax.persistence
Id
[M,F]
22
javax.persistence
IdClass
[T]
23
javax.persistence
Inheritance
[T]
24
javax.persistence
JoinColumn
[M,F]
25
javax.persistence
JoinColumns
[M,F]
26
javax.persistence
JoinTable
[M,F]
27
javax.persistence
Lob
[M,F]
28
javax.persistence
ManyToMany
[M,F]
29
javax.persistence
ManyToOne
[M,F]
30
javax.persistence
MapKey
[M,F]
31
javax.persistence
MappedSuperclass
[T]
32
javax.persistence
NamedNativeQueries
[T]
33
javax.persistence
NamedNativeQuery
[T]
34
javax.persistence
NamedQueries
[T]
35
javax.persistence
NamedQuery
[T]
36
javax.persistence
OneToMany
[M,F]
37
javax.persistence
OneToOne
[M,F]
38
javax.persistence
OrderBy
[M,F]
39
javax.persistence
PersistenceProperty
[]
40
javax.persistence
PostLoad
[M]
41
javax.persistence
PostPersist
[M]
42
javax.persistence
PostRemove
[M]
43
javax.persistence
PostUpdate
[M]
44
javax.persistence
PrePersist
[M]
45
javax.persistence
PreRemove
[M]
46
javax.persistence
PreUpdate
[M]
47
javax.persistence
PrimaryKeyJoinColumn
[T,M,F]
48
javax.persistence
PrimaryKeyJoinColumns
[T,M,F]
49
javax.persistence
QueryHint
[]
50
javax.persistence
SecondaryTable
[T]
51
javax.persistence
SecondaryTables
[T]
52
javax.persistence
SequenceGenerator
[T,M,F]
53
javax.persistence
SqlResultSetMapping
[T]
54
javax.persistence
SqlResultSetMappings
[T]
55
javax.persistence
Table
[T]
56
javax.persistence
TableGenerator
[T,M,F]
57
javax.persistence
Temporal
[M,F]
58
javax.persistence
Transient
[M,F]
59
javax.persistence
UniqueConstraint
[]
60
javax.persistence
Version
[M,F]
61
javax.persistence
Access
[T,M,F]
62
javax.persistence
Cacheable
[T]
63
javax.persistence
CollectionTable
[M,F]
64
javax.persistence
ElementCollection
[M,F]
65
javax.persistence
MapKeyClass
[M,F]
66
javax.persistence
MapKeyColumn
[M,F]
67
javax.persistence
MapKeyEnumerated
[M,F]
68
javax.persistence
MapKeyJoinColumn
[M,F]
69
javax.persistence
MapKeyJoinColumns
[M,F]
70
javax.persistence
MapKeyTemporal
[M,F]
71
javax.persistence
MapsId
[M,F]
72
javax.persistence
OrderColumn
[M,F]
73
javax.persistence.metamodel
StaticMetamodel
[T]

Memo
javax.persistenceパッケージに置くPersistenceContext(s)とPersistenceUnit(s)アノテーションがJava EE共通カテゴリに移動します。

8.4.4. JAXBアノテーション

JAXB カテゴリに所属するアノテーションは以下の通りです。
表8.4.4-1
項番 パッケージ名 アノテーション名 Target
1
javax.xml.bind.annotation
XmlAccessorOrder
[Pkg, T]
2
javax.xml.bind.annotation
XmlAccessorType
[Pkg, T]
3
javax.xml.bind.annotation
XmlAnyAttribute
[F, M]
4
javax.xml.bind.annotation
XmlAnyElement
[F, M]
5
javax.xml.bind.annotation
XmlAttachmentRef
[F, M, Par]
6
javax.xml.bind.annotation
XmlAttribute
[F, M]
7
javax.xml.bind.annotation
XmlElement
[F, M]
8
javax.xml.bind.annotation
XmlElementDecl
[M]
9
javax.xml.bind.annotation
XmlElementRef
[F, M]
10
javax.xml.bind.annotation
XmlElementRefs
[F, M]
11
javax.xml.bind.annotation
XmlElements
[F, M]
12
javax.xml.bind.annotation
XmlElementWrapper
[F, M]
13
javax.xml.bind.annotation
XmlEnum
[T]
14
javax.xml.bind.annotation
XmlEnumValue
[F]
15
javax.xml.bind.annotation
XmlID
[F, M]
16
javax.xml.bind.annotation
XmlIDREF
[F, M]
17
javax.xml.bind.annotation
XmlInlineBinaryData
[F, M, T]
18
javax.xml.bind.annotation
XmlList
[F, M, Par]
19
javax.xml.bind.annotation
XmlMimeType
[F, M, Par]
20
javax.xml.bind.annotation
XmlMixed
[F, M]
21
javax.xml.bind.annotation
XmlNs
[]
22
javax.xml.bind.annotation
XmlRegistry
[T]
23
javax.xml.bind.annotation
XmlRootElement
[T]
24
javax.xml.bind.annotation
XmlSchema
[Pkg]
25
javax.xml.bind.annotation
XmlSchemaType
[F, M, Pkg]
26
javax.xml.bind.annotation
XmlSchemaTypes
[Pkg]
27
javax.xml.bind.annotation
XmlSeeAlso
[T]
28
javax.xml.bind.annotation
XmlTransient
[F, M]
29
javax.xml.bind.annotation
XmlType
[T]
30
javax.xml.bind.annotation
XmlValue
[F, M]
31
javax.xml.bind.annotation.adapters
XmlJavaTypeAdapter
[F, M, Pkg, Par, T]
32
javax.xml.bind.annotation.adapters
XmlJavaTypeAdapters
[Pkg]

8.4.5. JAX-WSアノテーション

JAX-WS カテゴリに所属するアノテーションは以下の通りです。
表8.4.5-1
項番 パッケージ名 アノテーション名 Target
1
javax.jws
WebService
[T]
2
javax.jws
WebMethod
[M]
3
javax.jws
WebParam
[Par]
4
javax.jws
WebResult
[M]
5
javax.jws
HandlerChain
[T,M,F]
6
javax.jws
Oneway
[M]
7
javax.jws.soap
SOAPBinding
[T,M]
8
javax.xml.ws
WebServiceProvider
[T]
9
javax.xml.ws
WebServiceClient
[T]
10
javax.xml.ws
WebServiceRef
[T,M,F]
11
javax.xml.ws
WebServiceRefs
[T]
12
javax.xml.ws
ServiceMode
[T]
13
javax.xml.ws
WebFault
[T]
14
javax.xml.ws
BindingType
[T]
15
javax.xml.ws
RequestWrapper
[M]
16
javax.xml.ws
ResponseWrapper
[M]
17
javax.xml.ws
WebEndpoint
[M]
18
javax.xml.ws
RespectBinding
[T,M,F]
19
javax.xml.ws.soap
Addressing
[T,M,F]
20
javax.xml.ws.soap
MTOM
[T,M,F]
21
javax.xml.ws
FaultAction
[M]
22
javax.xml.ws
Action
[M]
23
javax.xml.ws.spi
WebServiceFeatureAnnotation
[A]
24
com.nec.webotx.webservice.xml.ws.api
FeatureConstructor
[C]
25
com.nec.webotx.webservice.xml.ws.api.server
InstanceResolverAnnotation
[A]
26
com.nec.webotx.webservice.xml.ws.developer
MemberSubmissionAddressing
[T,M,F]
27
com.nec.webotx.webservice.xml.ws.developer.servlet
HttpSessionScope
[T]

Caution
1. javax.jws.soapパッケージに置くInitParam、SOAPMessageHandlerとSOAPMessageHandlersの3つのアノテーションがJAX-WSでは未サポートのアノテーションのため、サポートしません。
2. com.nec.webotx.webservice.xml.ws.developer.Statefulは、javax.ejb.Statefulとクラス名衝突が発生しまった原因で、現時点でサポートしません。
3. FeatureConstructorはコンストラクターで表示されません。

8.4.6. JAX-RSアノテーション

Caution
JAX-RSアノテーションはV9.2からサポートします。

JAX-RS カテゴリに所属するアノテーションは以下の通りです。
表8.4.6-1
項番 パッケージ名 アノテーション名 Target
1
javax.ws.rs
Consumes
[T,M]
2
javax.ws.rs
Produces
[T,M]
3
javax.ws.rs
GET
[M]
4
javax.ws.rs
POST
[M]
5
javax.ws.rs
PUT
[M]
6
javax.ws.rs
DELETE
[M]
7
javax.ws.rs
HEAD
[M]
8
javax.ws.rs
ApplicationPath
[T]
9
javax.ws.rs
Path
[T,M]
10
javax.ws.rs
PathParam
[Par,M,F]
11
javax.ws.rs
QueryParam
[Par,M,F]
12
javax.ws.rs
FormParam
[Par,M,F]
13
javax.ws.rs
MatrixParam
[Par,M,F]
14
javax.ws.rs
CookieParam
[Par,M,F]
15
javax.ws.rs
HeaderParam
[Par,M,F]
16
javax.ws.rs
Encoded
[Par,M,F,C,T]
17
javax.ws.rs
DefaultValue
[Par,M,F]
18
javax.ws.rs
HttpMethod
[A]
19
javax.ws.rs.core
Context
[Par,M,F]
20
javax.ws.rs.ext
Provider
[T]
21
javax.ws.rs
OPTIONS
[M]

8.4.7. Servletアノテーション

Caution
ServletアノテーションはV9.2からサポートします。

Servlet カテゴリに所属するアノテーションは以下の通りです。
表8.4.7-1
項番 パッケージ名 アノテーション名 Target
1
javax.servlet.annotation
ServletSecurity
[T]
2
javax.servlet.annotation
WebFilter
[T]
3
javax.servlet.annotation
WebInitParam
[T]
4
javax.servlet.annotation
MultipartConfig
[T]
5
javax.servlet.annotation
WebServlet
[T]
6
javax.servlet.annotation
HttpConstraint
[]
7
javax.servlet.annotation
HandlesTypes
[T]
8
javax.servlet.annotation
WebListener
[T]
9
javax.servlet.annotation
HttpMethodConstraint
[]

8.4.8. JSFアノテーション

Caution
JSFはアノテーションV9.2からサポートします。

JSF カテゴリに所属するアノテーションは以下の通りです。
表8.4.8-1
項番 パッケージ名 アノテーション名 Target
1
javax.faces.component
FacesComponent
[T]
2
javax.faces.component.behavior
FacesBehavior
[T]
3
javax.faces.validator
FacesValidator
[T]
4
javax.faces.event
ListenerFor
[T]
5
javax.faces.event
ListenersFor
[T]
6
javax.faces.application
ResourceDependency
[T]
7
javax.faces.application
ResourceDependencies
[T]
8
javax.faces.render
FacesBehaviorRenderer
[T]
9
javax.faces.render
FacesRenderer
[T]
10
javax.faces.convert
FacesConverter
[T]
11
javax.faces.event
NamedEvent
[T]
12
javax.faces.bean
RequestScoped
[T]
13
javax.faces.bean
ApplicationScoped
[T]
14
javax.faces.bean
NoneScoped
[T]
15
javax.faces.bean
SessionScoped
[T]
16
javax.faces.bean
ReferencedBean
[T]
17
javax.faces.bean
ManagedProperty
[F]
18
javax.faces.bean
ViewScoped
[T]
19
javax.faces.bean
ManagedBean
[T]
20
javax.faces.bean
CustomScoped
[T]

8.4.9. CDIアノテーション

Caution
CDIアノテーションはV9.2からサポートします。

CDI カテゴリに所属するアノテーションは以下の通りです。
表8.4.9-1
項番 パッケージ名 アノテーション名 Target
1
javax.decorator
Decorator
[T]
2
javax.decorator
Delegate
[F,Par]
3
javax.enterprise.context
ApplicationScoped
[T,M,F]
4
javax.enterprise.context
ConversationScoped
[T,M,F]
5
javax.enterprise.context
Dependent
[M,T,F]
6
javax.enterprise.context
NormalScope
[A]
7
javax.enterprise.context
RequestScoped
[T,M,F]
8
javax.enterprise.context
SessionScoped
[T,M,F]
9
javax.enterprise.event
Observes
[Par]
10
javax.enterprise.inject
Alternative
[T,M,F]
11
javax.enterprise.inject
Any
[T,M,F,Par]
12
javax.enterprise.inject
Default
[T,M,Par,F]
13
javax.enterprise.inject
Disposes
[Par]
14
javax.enterprise.inject
Model
[T,M,F]
15
javax.enterprise.inject
New
[F,Par,M,T]
16
javax.enterprise.inject
Produces
[M,F]
17
javax.enterprise.inject
Specializes
[T,M]
18
javax.enterprise.inject
Stereotype
[A]
19
javax.enterprise.inject
Typed
[F,M,T]
20
javax.enterprise.util
Nonbinding
[M]
21
javax.inject
Inject
[M,C,F]
22
javax.inject
Named
[]
23
javax.inject
Qualifier
[A]
24
javax.inject
Scope
[A]
25
javax.inject
Singleton
[]

8.4.10. Bean Validationアノテーション

Caution
Bean ValidationアノテーションはV9.2からサポートします。

Bean Validation カテゴリに所属するアノテーションは以下の通りです。
表8.4.10-1
項番 パッケージ名 アノテーション名 Target
1
javax.validation
Constraint
[A]
2
javax.validation
GroupSequence
[T]
3
javax.validation
OverridesAttribute
[M]
4
javax.validation
ReportAsSingleViolation
[A]
5
javax.validation
Valid
[M,F,C,Par]
6
javax.validation.constraints
AssertFalse
[M,F,A,C,Par]
7
javax.validation.constraints
AssertTrue
[M,F,A,C,Par]
8
javax.validation.constraints
DecimalMax
[M,F,A,C,Par]
9
javax.validation.constraints
DecimalMin
[M,F,A,C,Par]
10
javax.validation.constraints
Digits
[M,F,A,C,Par]
11
javax.validation.constraints
Future
[M,F,A,C,Par]
12
javax.validation.constraints
Max
[M,F,A,C,Par]
13
javax.validation.constraints
Min
[M,F,A,C,Par]
14
javax.validation.constraints
NotNull
[M,F,A,C,Par]
15
javax.validation.constraints
Null
[M,F,A,C,Par]
16
javax.validation.constraints
Past
[M,F,A,C,Par]
17
javax.validation.constraints
Pattern
[M,F,A,C,Par]
18
javax.validation.constraints
Size
[M,F,A,C,Par]

8.4.11. Targetが限定されたアノテーション

次のアノテーションは、付与できるTargetが、以下のように限定されています。
表8.4.11-1
アノテーション名 カテゴリ Target
javax.ejb.ActivationConfigProperty
EJB
MessageDrivenアノテーションのactivationConfig属性の値。
javax.persistence.ColumnResult
JPA
SqlResultSetMappingアノテーションのcolumns属性の値。
javax.persistence.EntityResult
JPA
SqlResultSetMappingアノテーションのentities属性の値。
javax.persistence.FieldResult
JPA
EntityResultアノテーションのfields属性の値。
javax.persistence.PersistenceProperty
JPA
PersistenceContextアノテーションのproperties属性の値。
javax.persistence.QueryHint
JPA
NamedQueryとNamedNativeQueryアノテーションのhints属性の値。
javax.persistence.UniqueConstraint
JPA
Table、SecondaryTable、JoinTable、TableGeneratorアノテーションのuniqueConstraints属性の値。
javax.xml.bind.annotation.XmlNs
JAXB
XmlSchemaのxmlns属性の値。

8.5. 注意制限事項

8.5.1. 注意事項

8.5.1.1. 注釈プロパティー・ビューで属性を追加できない

後ろに括弧が無いアノテーションに、注釈プロパティー・ビューで正しく属性を追加することはできません。
この問題は、アノテーション記述にエディタを用いて括弧を補うことで回避可能です。

例えば、下図の @Statelessアノテーションの後ろには括弧が有りません。
この状態で、注釈プロパティー・ビューで、javax.ejb.Statelessアノテーションの description属性の欄に "test description without kakko" を入力して、ENTER キーを押します。


図8.5.1.1-1

入力された値は正しくJavaソースの@Statelessアノテーションに反映されません。


図8.5.1.1-2

なお、注釈プロパティー・ビューでアノテーションを付与する場合、アノテーションには自動的に括弧が追加されます。
括弧が生成されない例
WebOTX DeveloperのEJB 生成ウィザードで自動的に付与されるアノテーションで、以下の5つには括弧が生成されません。 エディタで独自にアノテーションを記述する場合には、括弧まで記述するようご注意ください。

8.5.2. 制限事項

特にありません。