パッケージ jakarta.jms

インターフェース StreamMessage

  • すべてのスーパーインターフェース:
    Message

    public interface StreamMessage
    extends Message
    StreamMessage オブジェクトは、Java プログラミング言語でプリミティブ型のストリームを送信するために使用されます。記入され、順番に読み取られます。Message インターフェースから継承し、ストリームメッセージ本文を追加します。その方法は、主に java.io.DataInputStream および java.io.DataOutputStream に見られる方法に基づいています。

    プリミティブ型は、各型のメソッドを使用して明示的に読み書きできます。また、オブジェクトとして一般的に読み書きすることもできます。たとえば、StreamMessage.writeInt(6) の呼び出しは StreamMessage.writeObject(new Integer(6)) と同等です。明示的なフォームは静的プログラミングに便利であり、コンパイル時に型が不明な場合はオブジェクトフォームが必要であるため、両方のフォームが提供されます。

    メッセージが最初に作成されたとき、および clearBody が呼び出されたとき、メッセージの本文は書き込み専用モードになっています。reset への最初の呼び出しが行われた後、メッセージ本文は読み取り専用モードになります。メッセージが送信された後、メッセージを送信したクライアントは、送信されたメッセージに影響を与えることなく、メッセージを保持および変更できます。同じメッセージオブジェクトを複数回送信できます。メッセージが受信されると、プロバイダーは reset を呼び出して、メッセージ本文がクライアントに対して読み取り専用モードになるようにしました。

    clearBody が読み取り専用モードのメッセージで呼び出された場合、メッセージ本文はクリアされ、メッセージ本文は書き込み専用モードになります。

    クライアントが書き込み専用モードでメッセージを読み取ろうとすると、MessageNotReadableException がスローされます。

    クライアントが読み取り専用モードでメッセージを書き込もうとすると、MessageNotWriteableException がスローされます。

    StreamMessage オブジェクトは、次の変換テーブルをサポートしています。マークされたケースはサポートされている必要があります。マークされていないケースは JMSException をスローする必要があります。プリミティブの valueOf() メソッドがプリミティブの有効な String 表現として受け入れない場合、String -to-primitive 変換はランタイム例外をスローする可能性があります。

    行型として書き込まれた値は、列型として読み取ることができます。

     |        | boolean byte short char int long float double String byte[]
     |----------------------------------------------------------------------
     |boolean |    X                                            X
     |byte    |          X     X         X   X                  X
     |short   |                X         X   X                  X
     |char    |                     X                           X
     |int     |                          X   X                  X
     |long    |                              X                  X
     |float   |                                    X     X      X
     |double  |                                          X      X
     |String  |    X     X     X         X   X     X     X      X
     |byte[]  |                                                        X
     |----------------------------------------------------------------------
     

    null 値をプリミティブ型として読み取ろうとすると、null 値を指定して、プリミティブの対応する valueOf(String) 変換メソッドを呼び出すことになります。char は String 変換をサポートしていないため、char として null 値を読み取ろうとすると、NullPointerException がスローされます。

    導入:
    JMS 1.0
    バージョン:
    Jakarta Messaging 2.0
    関連事項:
    Session.createStreamMessage(), BytesMessage, MapMessage, Message, ObjectMessage, TextMessage
    • メソッドの詳細

      • readBoolean

        boolean readBoolean()
                     throws JMSException
        ストリームメッセージから boolean を読み取ります。
        戻り値:
        読み込まれた boolean 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readByte

        byte readByte()
               throws JMSException
        ストリームメッセージから byte 値を読み取ります。
        戻り値:
        8 ビット byte としてのストリームメッセージの次のバイト
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readShort

        short readShort()
                 throws JMSException
        ストリームメッセージから 16 ビット整数を読み取ります。
        戻り値:
        ストリームメッセージからの 16 ビット整数
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readChar

        char readChar()
               throws JMSException
        ストリームメッセージから Unicode 文字値を読み取ります。
        戻り値:
        ストリームメッセージの Unicode 文字
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readInt

        int readInt()
             throws JMSException
        ストリームメッセージから 32 ビット整数を読み取ります。
        戻り値:
        int として解釈されるストリームメッセージからの 32 ビット整数値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readLong

        long readLong()
               throws JMSException
        ストリームメッセージから 64 ビット整数を読み取ります。
        戻り値:
        long として解釈されるストリームメッセージからの 64 ビット整数値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readFloat

        float readFloat()
                 throws JMSException
        ストリームメッセージから float を読み取ります。
        戻り値:
        ストリームメッセージからの float 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readDouble

        double readDouble()
                   throws JMSException
        ストリームメッセージから double を読み取ります。
        戻り値:
        ストリームメッセージからの double 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readString

        StringSE readString()
                   throws JMSException
        ストリームメッセージから String を読み取ります。
        戻り値:
        ストリームメッセージからの Unicode 文字列
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
      • readBytes

        int readBytes​(byte[] value)
               throws JMSException
        ストリームメッセージから指定された byte[] オブジェクト(読み取りバッファー)にバイト配列フィールドを読み取ります。

        フィールド値を読み取るには、読み取りバッファーの長さよりも短い値が返されるまで、readBytes を連続して呼び出す必要があります。最後に読み取られたバイトに続くバッファ内のバイトの値は未定義です。

        readBytes がバッファーの長さに等しい値を返す場合、後続の readBytes 呼び出しを行う必要があります。読み取るバイトがこれ以上ない場合、この呼び出しは -1 を返します。

        バイト配列フィールドの値が null の場合、readBytes は -1 を返します。

        バイト配列フィールドの値が空の場合、readBytes は 0 を返します。

        byte[] フィールド値に対する最初の readBytes 呼び出しが行われると、次のフィールドを読み取ることが有効になる前に、フィールドの完全な値を読み取る必要があります。それが行われる前に次のフィールドを読み取ろうとすると、MessageFormatException がスローされます。

        バイトフィールド値を新しい byte[] オブジェクトに読み込むには、readObject メソッドを使用します。

        パラメーター:
        value - データが読み込まれるバッファ
        戻り値:
        バッファに読み込まれた合計バイト数。バイトフィールドの終わりに達したためにデータがなくなった場合は -1
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
        関連事項:
        readObject()
      • readObject

        ObjectSE readObject()
                   throws JMSException
        ストリームメッセージからオブジェクトを読み取ります。

        このメソッドを使用して、同等の writeObject メソッド呼び出しまたは同等のプリミティブ writetype メソッドでストリームに書き込まれた Java プログラミング言語のオブジェクト(「Java オブジェクト」)をオブジェクト化された形式で返すことができます。

        バイト値は Byte[] ではなく byte[] として返されることに注意してください。

        バイトフィールドの完全な値が読み取られる前に、readObject を呼び出してバイトフィールド値を新しい byte[] オブジェクトに読み取ろうとすると、MessageFormatException がスローされます。

        戻り値:
        オブジェクト化された形式のストリームメッセージからの Java オブジェクト (たとえば、オブジェクトが int として書き込まれた場合、Integer が返されます。)
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの読み取りに失敗した場合。
        MessageEOFException - メッセージストリームの予期しない終了に達した場合。
        MessageFormatException - この型変換が無効な場合。
        MessageNotReadableException - メッセージが書き込み専用モードの場合。
        関連事項:
        readBytes(byte[] value)
      • writeBoolean

        void writeBoolean​(boolean value)
                   throws JMSException
        boolean をストリームメッセージに書き込みます。値 true は、値 (byte)1 として書き込まれます。値 false は、値 (byte)0 として書き込まれます。
        パラメーター:
        value - 書き込まれる boolean 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeByte

        void writeByte​(byte value)
                throws JMSException
        byte をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる byte 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeShort

        void writeShort​(short value)
                 throws JMSException
        short をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる short 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeChar

        void writeChar​(char value)
                throws JMSException
        char をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる char 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeInt

        void writeInt​(int value)
               throws JMSException
        int をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる int 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeLong

        void writeLong​(long value)
                throws JMSException
        long をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる long 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeFloat

        void writeFloat​(float value)
                 throws JMSException
        float をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる float 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeDouble

        void writeDouble​(double value)
                  throws JMSException
        double をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる double 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeString

        void writeString​(StringSE value)
                  throws JMSException
        String をストリームメッセージに書き込みます。
        パラメーター:
        value - 書き込まれる String 値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeBytes

        void writeBytes​(byte[] value)
                 throws JMSException
        バイト配列フィールドをストリームメッセージに書き込みます。

        バイト配列 value は、バイト配列フィールドとしてメッセージに書き込まれます。連続して書き込まれたバイト配列フィールドは、フィールドが読み取られるときに 2 つの別個のフィールドとして扱われます。

        パラメーター:
        value - 書き込まれるバイト配列値
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeBytes

        void writeBytes​(byte[] value,
                        int offset,
                        int length)
                 throws JMSException
        バイト配列の一部をバイト配列フィールドとしてストリームメッセージに書き込みます。

        バイト配列 value の一部は、バイト配列フィールドとしてメッセージに書き込まれます。連続して書き込まれたバイト配列フィールドは、フィールドが読み取られるときに 2 つの別個のフィールドとして扱われます。

        パラメーター:
        value - 書き込まれるバイト配列値
        offset - バイト配列内の初期オフセット
        length - 使用するバイト数
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • writeObject

        void writeObject​(ObjectSE value)
                  throws JMSException
        ストリームメッセージにオブジェクトを書き込みます。

        このメソッドは、オブジェクト化されたプリミティブオブジェクト型(IntegerDoubleLong ...)、String オブジェクト、バイト配列に対してのみ機能します。

        パラメーター:
        value - 書き込まれる Java オブジェクト
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージの書き込みに失敗した場合。
        MessageFormatException - オブジェクトが無効な場合。
        MessageNotWriteableException - メッセージが読み取り専用モードの場合。
      • reset

        void reset()
            throws JMSException
        メッセージ本文を読み取り専用モードにし、ストリームを先頭に再配置します。
        例外:
        JMSException - 内部エラーのために Jakarta Messaging プロバイダーがメッセージのリセットに失敗した場合。
        MessageFormatException - メッセージの形式が無効な場合。