2.6.2 SessionBeanを利用したサービス部品の適用範囲
SessionBeanを利用したサービス部品の適用範囲を次に示します。
(1) 前提となる仕様
SessionBeanを利用したサービス部品は,EJB 2.0の仕様に従って作成されている必要があります。
(2) 利用できるサービス部品の配備先
SessionBeanを利用したサービス部品として利用できるのは,サービスプラットフォーム上に配備されているサービス部品です。
(3) SessionBeanの作成条件
SessionBeanを利用したサービス部品は,次の条件に従って作成されている必要があります。
- 引数・戻り値に指定できるクラス
-
SessionBeanを利用したサービス部品の引数・戻り値に指定するクラスは,次の条件を満たしている必要があります。
-
ユーザ定義クラスが基本型クラスで構成されていること。
-
引数・戻り値に指定されるユーザ定義型のクラスが,privateなフィールドとそのフィールドに外部からアクセスするためのpublicなアクセスメソッド(setXX,getXX)を持っていること(JavaBeans形式)。
-
公開するメソッドの引数・戻り値にinterfaceのユーザ定義型を指定していないこと。
-
公開するメソッドの引数・戻り値にabstractクラスのユーザ定義型クラスを指定していないこと。
-
公開するメソッドの引数・戻り値にjava.lang.Object以外のクラスを継承するユーザ定義型クラスを指定していないこと。
-
公開するメソッドの引数・戻り値に,異なるパッケージのユーザ定義型クラスを指定していないこと。
-
次の表に示すJavaデータ型のうち,利用できるJavaデータ型だけを利用していること。
表2‒13 Javaデータ型の利用可否 Javaでのデータ型
メソッドの引数・戻り値としての利用の可否
直接使用する場合
配列として使用する場合
ユーザ定義データ型クラスのメンバ変数として使用する場合
boolean
○
○
○
javax.xml.rpc.holders.BooleanHolder
○
×
×
byte
○
○
○
javax.xml.rpc.holders.ByteHolder
○
×
×
byte[]
○
○
○
javax.xml.rpc.holders.ByteArrayHolder
○
×
×
double
○
○
○
javax.xml.rpc.holders.DoubleHolder
○
×
×
float
○
○
○
javax.xml.rpc.holders.FloatHolder
○
×
×
int
○
○
○
javax.xml.rpc.holders.IntHolder
○
×
×
long
○
○
○
javax.xml.rpc.holders.LongHolder
○
×
×
short
○
○
○
javax.xml.rpc.holders.ShortHolder
○
×
×
java.lang.Byte
○
○
○
javax.xml.rpc.holders.ByteWrapperHolder
○
×
×
java.lang.Byte[]
○
○
○
java.lang.Double
○
○
○
javax.xml.rpc.holders.DoubleWrapperHolder
○
×
×
java.lang.Float
○
○
○
javax.xml.rpc.holders.FloatWrapperHolder
○
×
×
java.lang.Integer
○
○
○
javax.xml.rpc.holders.IntegerWrapperHolder
○
×
×
java.lang.Long
○
○
○
javax.xml.rpc.holders.LongWrapperHolder
○
×
×
java.lang.Object
×
×
×
javax.xml.rpc.holders.ObjectHolder
×
×
×
java.lang.Object[]
×
×
×
java.lang.Short
○
○
○
javax.xml.rpc.holders.ShortWrapperHolder
○
×
×
java.lang.String
○
○
○
javax.xml.rpc.holders.StringHolder
○
×
×
java.math.BigDecimal
○
○
○
javax.xml.rpc.holders.BigDecimalHolder
○
×
×
java.math.BigInteger
○
○
○
javax.xml.rpc.holders.BigIntegerHolder
○
×
×
java.util.Date
○
○
○
javax.xml.namespace.QName
○
○
○
javax.xml.rpc.holders.QNameHolder
○
×
×
java.lang.Boolean
○
○
○
javax.xml.rpc.holders.BooleanWrapperHolder
○
×
×
java.util.Calendar
○
○
○
javax.xml.rpc.holders.CalendarHolder
○
×
×
-
- メソッドのオーバーロード
-
SessionBeanを利用したサービス部品では,同じ名称のメソッドは指定できません。
- トランザクション
-
SessionBeanのトランザクション管理種別(transaction-type)やメソッドに割り当てるトランザクション属性(trans-attribute)は,HCSCサーバからのトランザクションを引き継がないよう設定します。SessionBeanを利用したサービス部品には,トランザクションを引き継げません。
サービス部品でのトランザクション属性の指定の可否を次の表に示します。
表2‒14 サービス部品でのトランザクション属性の指定可否 サービス部品のトランザクションモード
トランザクション属性
指定の可否
BMT
−
○
CMT
Required
×
RequiresNew
○
Supports
×
NotSupported
○
Mandatory
×
Never
×
- メソッドの例外
-
メソッドのthrows節に記載できる例外は,java.rmi.RemoteException,およびjava.lang.RuntimeExceptionの継承クラスだけです。
- SessionBeanの種別
-
SessionBeanのサービス部品は,Stateless Session Beanとして作成されている必要があります。
サービスプラットフォームの実行環境では,EJBサービスに対する実行要求ごとに接続(create)と切断(remove)を発行します。そのため,Stateful Session Beanを使用して内部的な状態を保持するようなサービス部品は利用できません。
(4) スキーマの形式
SessionBeanを利用したサービス部品で利用するスキーマは,一定の条件を満たしている必要があります。スキーマの条件の詳細については,「2.6.5 XMLスキーマの適用範囲」を参照してください。