2.5.2 SessionBeanを利用したサービス部品の適用範囲

SessionBeanを利用したサービス部品の適用範囲を次に示します。

<この項の構成>
(1) 前提となる仕様
(2) 利用できるサービス部品の配備先
(3) SessionBeanの作成条件
(4) スキーマの形式

(1) 前提となる仕様

SessionBeanを利用したサービス部品は,EJB 2.0の仕様に従って作成されている必要があります。

(2) 利用できるサービス部品の配備先

SessionBeanを利用したサービス部品として利用できるのは,Cosminexus上に配備されているサービス部品です。

(3) SessionBeanの作成条件

SessionBeanを利用したサービス部品は,次の条件に従って作成されている必要があります。

引数・戻り値に指定できるクラス
SessionBeanを利用したサービス部品の引数・戻り値に指定するクラスは,次の条件を満たしている必要があります。
  • ユーザ定義クラスが基本型クラスで構成されていること。
  • 引数・戻り値に指定されるユーザ定義型のクラスが,privateなフィールドとそのフィールドに外部からアクセスするためのpublicなアクセサメソッド(setXX,getXX)を持っていること(JavaBeans形式)。
  • 公開するメソッドの引数・戻り値にinterfaceのユーザ定義型を指定していないこと。
  • 公開するメソッドの引数・戻り値にabstractクラスのユーザ定義型クラスを指定していないこと。
  • 公開するメソッドの引数・戻り値にjava.lang.Object以外のクラスを継承するユーザ定義型クラスを指定していないこと。
  • 公開するメソッドの引数・戻り値に,異なるパッケージのユーザ定義型クラスを指定していないこと。
  • 次の表に示すJavaデータ型のうち,利用できるJavaデータ型だけを利用していること。

    表2-9 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-10 サービス部品でのトランザクション属性の指定可否

サービス部品のトランザクションモードTx属性指定の可否
BMT
CMTRequired×
RequiresNew
Supports×
NotSupported
Mandatory×
Never×
(凡例)
○:利用できます(EJBの仕様どおりに動作します)。
×:利用できません。
-:該当しません。

メソッドの例外
メソッドのthrows節に記載できる例外は,javax.rmi.RemoteException,およびjava.lang.RuntimeExceptionの継承クラスだけです。
SessionBeanの種別
SessionBeanのサービス部品は,Stateless Session Beanとして作成されている必要があります。
Cosminexus サービスプラットフォームの実行環境では,EJBサービスに対する実行要求ごとに接続(create)と切断(remove)を発行します。そのため,Stateful Session Beanを使用して内部的な状態を保持するようなサービス部品は利用できません。

(4) スキーマの形式

SessionBeanを利用したサービス部品で利用するスキーマは,「2.5.5 XMLスキーマの適用範囲」に示す条件を満たしている必要があります。スキーマの条件の詳細については,「2.5.5 XMLスキーマの適用範囲」を参照してください。