Hitachi

Cosminexus V11 アプリケーションサーバ Cosminexus Reliable Messaging


7.4.5 ObjectMessageインタフェース

ObjectMessageインタフェースはシリアライズできるJavaオブジェクトを含むメッセージを送受信するために使用します。ObjectMessageインタフェースはMessageインタフェースを継承しているため,Messageインタフェースの機能を持っています。

〈この項の構成〉

(1) ペイロードの設定と取得

ObjectMessageインタフェースを使用することでペイロードを設定および取得できます。このペイロードはシリアライズできるJavaオブジェクトです。JMSメッセージの各要素については,「2.5.1 JMSメッセージの構成」を参照してください。

(2) 形式

public interface ObjectMessage extends Message
{
  public java.io.Serializable 
               getObject() throws JMSException;
  public void  setObject(java.io.Serializable object)
                 throws JMSException;
}

(3) フィールド

ありません。

(4) メソッド

「(2) 形式」に記載した順序で各メソッドを説明します。

(a) getObjectメソッド

public java.io.Serializable getObject() throws JMSException

直列化できるメッセージ本体データを返します。メッセージ本体が設定されていない場合はデフォルト値であるnullを返します。

  • 引数

    ありません。

  • 戻り値

    メッセージのデータを含む直列化できるオブジェクト。

  • 例外

    例外クラス

    説明

    JMSException

    内部エラーのためにJMSプロバイダがオブジェクトの取得に失敗しました。

    MessageFormatException

    ペイロードの型が無効なため直列化されたオブジェクトの復元が失敗しました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。

(b) setObjectメソッド

public void setObject(java.io.Serializable object) throws JMSException

メッセージのデータを含む直列化できるオブジェクトを設定します。

setObjectメソッドの内部では引数オブジェクトのコピーを生成し,そのコピーをObjectMessageオブジェクトのペイロードに設定します。そのため,そのあと引数オブジェクトを変更してもObjectMessageオブジェクトのペイロードに影響しなくなります。

注意

ユーザが定義したクラスのオブジェクトをObjectMessageオブジェクトのペイロードに設定する場合は,ユーザが定義したクラスまたはクラスが含まれるJARファイルのクラスパスを,コンテナ拡張ライブラリとしてApplication ServerのJ2EEサーバ用オプション定義ファイルに指定してください。J2EEサーバ用オプション定義ファイルについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

クラスパスが指定されていない状態で,ObjectMessageオブジェクトのペイロードにユーザが定義したクラスのオブジェクトを設定しようとすると,JMSExceptionが発生します。

  • 引数

    引数名

    説明

    object

    メッセージのデータ

  • 戻り値

    ありません。

  • 例外

    例外クラス

    説明

    JMSException

    object引数にnullが指定されました。

    内部エラーのためにJMSプロバイダがオブジェクトの設定に失敗しました。

    MessageFormatException

    引数の型が無効なためオブジェクトの直列化が失敗しました。

    MessageNotWriteableException

    読み取り専用モードのプロパティに情報を書き込もうとしました。

    例外クラスには障害コードと障害情報が設定されます。障害コードと対処については,「7.9 障害コードの詳細」を参照してください。