com.ibm.jms

类 JMSStreamMessage

  • 所有已实现的接口:
    JmsMessage, java.io.Serializable, javax.jms.Message, javax.jms.StreamMessage


    公用类 JMSStreamMessage
    扩展 JMSMessage
    实现 javax.jms.StreamMessage

    StreamMessage 用于发送 Java 原语流。 会按顺序对其进行填充和读取。 它继承自 JMSMessage 并添加流消息体。 其方法主要基于在 java.io.DataInputStreamjava.io.DataOutputStream中找到的方法。

    可以使用每种类型的方法来显式读取或写入基本类型。 它们也可以一般地作为对象来读取或写入。 例如,对 StreamMessage.writeInt(6) 的调用等同于 StreamMessage.writeObject(new Integer(6))。 提供这两种格式是因为显式格式便于静态编程,并且在编译时不知道类型时需要对象格式。

    在首次创建信息和调用 clearBody() 时,信息正文处于只写模式。 第一次调用 reset () 方法后,消息体处于只读方式。 发送消息后,提供程序始终调用 reset () 方法来读取其内容。 同样,当接收到消息时,提供程序会调用 reset () ,以便消息体处于客户机的只读方式。

    如果在只读模式下调用clearBody(),则会清除邮件正文,邮件正文处于只写模式。

    如果客户机尝试以仅写方式读取消息,那么将抛出 MessageNotReadableException

    如果客户机尝试以只读方式写入消息,那么将抛出 MessageNotWriteableException

    流消息支持以下转换表。 支持标记的案例,未标记的案例将抛出 JMSException。 如果基元 valueOf() 方法不接受字符串作为基元的有效字符串表示,则字符串到基元的转换会产生运行时异常。

    可以将作为行类型写入的值作为列类型读取。

    布尔值 字节 短整型 字符型 int long 浮点值 双精度值 字符串 byte[]
    布尔值 X X
    字节 X X X X X
    短整型 X X X X
    字符型 X X
    int X X X
    long X X
    浮点值 X X X
    双精度值 X X
    字符串 X X X X X X X X
    byte[] X

    尝试将空值作为 Java 基元类型读取时,会被视为使用空值调用基元的相应 valueOf(String) 转换方法。 由于 char 不支持字符串转换,因此尝试将空值作为 char 读取时会抛出 NullPointerException 异常。

    要创建流消息,请调用 Session.createStreamMessage()。 请勿调用缺省构造函数。

    另请参阅:
    序列化表单
    • 字段详细信息

      • 斯卡西德

        公共静态最终 java.lang.String sccsid
        从 CMVC 抽取文件时展开的 SCCSID
        另请参阅:
        常量字段值
    • 构造函数详细信息

      • JMSStreamMessage

        public JMSStreamMessage()
        不推荐使用。 

        要创建流消息,请调用 Session.createStreamMessage()

        请勿调用此缺省构造函数。

    • 方法详细信息

      • readBoolean

        public boolean readBoolean()
                            抛出 javax.jms.JMSException
        从流消息中读取布尔值。
        指定者:
        readBoolean在接口中javax.jms.StreamMessage
        返回:
        读取的布尔值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readByte

        public byte readByte()
                      抛出 javax.jms.JMSException
        从流消息中读取字节值。
        指定者:
        readByte在接口中javax.jms.StreamMessage
        返回:
        流消息中的下一个字节作为 8 位字节
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readBytes

        public int readBytes(byte[] value)
                      抛出 javax.jms.JMSException
        将字节数组字段从流消息中读取到指定的 byte [] 对象 (读缓冲区)。

        要读取字段值,应连续调用 readBytes() 直到返回的值小于读取缓冲区的长度。 缓冲区中上次字节读取后的字节值未定义。

        如果 readBytes() 返回的值等于缓冲区的长度,则必须执行后续的 readBytes() 调用。 如果没有字节可读取,该调用将返回 -1 。

        如果字节数组字段值为空,readBytes() 返回 -1 。

        如果字节数组字段值为空,readBytes() 返回 0。

        在对 byte[] 字段值进行第一次 readBytes() 调用后,必须先读取字段的全部值,才能读取下一个字段。 在读取下一个字段之前,如果尝试读取下一个字段,将引发 MessageFormatException 异常。

        指定者:
        readBytes在接口中javax.jms.StreamMessage
        参数:
        value -从中读取数据的缓冲区
        返回:
        读入缓冲区的总字节数,或 -1 (如果已到达字节字段的末尾,没有更多数据)
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readChar

        public char readChar()
                      抛出 javax.jms.JMSException
        从流消息中读取 Unicode 字符值。
        指定者:
        readChar在接口中javax.jms.StreamMessage
        返回:
        来自流消息的 Unicode 字符
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readDouble

        public double readDouble()
                          抛出 javax.jms.JMSException
        从流消息中读取双精度值。
        指定者:
        readDouble在接口中javax.jms.StreamMessage
        返回:
        来自流消息的双精度值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readFloat

        public float readFloat()
                        抛出 javax.jms.JMSException
        从流消息中读取浮点数。
        指定者:
        readFloat在接口中javax.jms.StreamMessage
        返回:
        来自流消息的浮点值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readInt

        公共 int readInt()
                    抛出 javax.jms.JMSException
        从流消息中读取 32 位整数。
        指定者:
        readInt在接口中javax.jms.StreamMessage
        返回:
        来自流消息的 32 位整数值,解释为 int
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readLong

        public long readLong()
                      抛出 javax.jms.JMSException
        从流消息中读取 64 位整数。
        指定者:
        readLong在接口中javax.jms.StreamMessage
        返回:
        流消息中的 64 位整数值,解释为 long
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readObject

        public java.lang.Object readObject()
                                    抛出 javax.jms.JMSException
        从流消息中读取 Java 对象。

        该方法可用于返回已通过 writeObject() 方法调用写入流的对象,或其等效的原始写入方法() 方法。 它将返回其中一个基本对象包装器类 (Integer , Double , Long ...) , 字符串或字节数组。

        指定者:
        readObject在接口中javax.jms.StreamMessage
        返回:
        来自流消息的 Java 对象
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readShort

        public short readShort()
                        抛出 javax.jms.JMSException
        从流消息中读取 16 位整数。
        指定者:
        readShort在接口中javax.jms.StreamMessage
        返回:
        来自流消息的 16 位整数
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • readString

        public java.lang.String readString()
                                    抛出 javax.jms.JMSException
        从流消息中读取字符串。
        指定者:
        readString在接口中javax.jms.StreamMessage
        返回:
        来自流消息的 Unicode 字符串
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法读取消息
        javax.jms.MessageEOFException -如果消息流结束
        javax.jms.MessageFormatException -如果此类型转换无效
        javax.jms.MessageNotReadableException -如果消息处于仅写方式
      • 重置

        public void reset ()
                   抛出 javax.jms.JMSException
        将消息置于只读方式,并将流重新定位到开头。
        指定者:
        reset在接口中javax.jms.StreamMessage
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而未能重置消息
        javax.jms.MessageFormatException -如果消息的格式无效
      • writeBoolean

        public void writeBoolean(boolean value)
                          抛出 javax.jms.JMSException
        将布尔值写入流消息。 值 true 写为值 (byte)1; 值 false 写为值 (byte)0
        指定者:
        writeBoolean在接口中javax.jms.StreamMessage
        参数:
        value -要写入的布尔值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将布尔值写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeByte

        public void writeByte(byte value)
                       抛出 javax.jms.JMSException
        将字节写入流消息。
        指定者:
        writeByte在接口中javax.jms.StreamMessage
        参数:
        value -要写入的字节值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将字节写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeBytes

        public void writeBytes(byte[] value)
                        抛出 javax.jms.JMSException
        将字节数组写入流消息。
        指定者:
        writeBytes在接口中javax.jms.StreamMessage
        参数:
        value -要写入的字节数组
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而未能将字节数组写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeBytes

        public void writeBytes(byte[] value、
                               int         offset,
                               int 长度)
                        抛出 javax.jms.JMSException
        将字节数组的一部分写入流消息。
        指定者:
        writeBytes在接口中javax.jms.StreamMessage
        参数:
        value -要写入的字节数组值
        offset -字节数组中的初始偏移量
        length -要使用的字节数
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将字节数组部分写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeChar

        public void writeChar(char value)
                       抛出 javax.jms.JMSException
        将一个字符写入流消息。
        指定者:
        writeChar在接口中javax.jms.StreamMessage
        参数:
        value -要写入的字符值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将 char 写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeDouble

        public void writeDouble(double value)
                         抛出 javax.jms.JMSException
        将双精度值写入流消息。
        指定者:
        writeDouble在接口中javax.jms.StreamMessage
        参数:
        value -要写入的双精度值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将双精度值写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeFloat

        public void writeFloat(float value)
                        抛出 javax.jms.JMSException
        将浮点数写入流消息。
        指定者:
        writeFloat在接口中javax.jms.StreamMessage
        参数:
        value -要写入的浮点值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将浮点写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeInt

        public void writeInt(int value)
                      抛出 javax.jms.JMSException
        将 int 写入流消息。
        指定者:
        writeInt在接口中javax.jms.StreamMessage
        参数:
        value -要写入的整数
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将 int 写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeLong

        public void writeLong(long value)
                       抛出 javax.jms.JMSException
        将长整型写入流消息。
        指定者:
        writeLong在接口中javax.jms.StreamMessage
        参数:
        value -要写入的长整型
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将长整型写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeObject

        public void writeObject(java.lang.Object value)
                         抛出 javax.jms.JMSException
        将 Java 对象写入流消息。

        此方法仅适用于基本对象包装器类 (Integer , Double , Long ...) , 字符串和字节数组。

        指定者:
        writeObject在接口中javax.jms.StreamMessage
        参数:
        value -要写入的 Java 对象
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将对象写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式。
        javax.jms.MessageFormatException -如果对象无效
      • writeShort

        public void writeShort(short value)
                        抛出 javax.jms.JMSException
        将简短消息写入流消息。
        指定者:
        writeShort在接口中javax.jms.StreamMessage
        参数:
        value -要写入的短文
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将短信息写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
      • writeString

        public void writeString(java.lang.String value)
                         抛出 javax.jms.JMSException
        将字符串写入流消息。
        指定者:
        writeString在接口中javax.jms.StreamMessage
        参数:
        value -要写入的字符串值
        抛出:
        javax.jms.JMSException -如果 JMS 由于内部 JMS 错误而无法将字符串写入消息
        javax.jms.MessageNotWriteableException -如果消息处于只读方式
© Copyright IBM Corp. 2008 , 2016. All Rights Reserved.