BES中间件Spark协议格式
来源:互联网 发布:网络系统集成质量控制 编辑:程序博客网 时间:2024/06/05 11:39
BES中间件Spark协议格式。
报文格式:TCP包头之后报文内容:
内容
长度(Byte)
取值
说明
Spark协议头
5
Spark
报文开头定义
版本号
1
Spark的版本号
requestID
4
Spark请求的ID
requestLength
4
报文体的长度
invocationType
1
(byte) 0
Spark请求类型
serializatiionType
1
Spark: (byte) 0
Java : (byte) 1
Spark序列化类型
ejbId
8
用于定位要调用的EJB,每个EJB会有一个唯一的ID。每个EJB会有多个服务实例,具体的服务实例的定位使用InstanceKey来定位
instanceKeyLength
2
用于定位EJB服务实例的InstanceKey的长度
instanceKey
${ instanceKeyLength }
InstanceKey用于定位具体的EJB服务实例
remoteBussinessInterfaceId
2
EJB3.0对应的远程的接口的ID。
com.bes.ejb.spark.tcp.InvocationRequest
对象的序列化数据
*
InvocationRequest携带的方法名和方法参数
对象序列化类型格式:
类型
表示形式
起始标记
长度(byte)
结束标记
说明
Type
String
类型名称
Int
类型的引用位置
Value
Null
空值
Binary
二进制值
Boolean
布尔值
Class-Def
类定义
Date
日期
Double
双精度浮点数
Int
整形数
List
列表
Long
长整型数
Map
键值对映射
Object
对象
Reference
引用
String
字符串
Binary
[0x20-0x2F] <二进制数据>
0x20-0x2F
0-15
长度为0-15 byte的二进制数据
[0x34-0x37]<二进制数据>
0x34-0x37
0-1023
长度为0-1023 byte的二进制数据
‘B’ b1 b0 <二进制数据>
‘B’
(b1 << 8) + b0
长度小于64K的二进制数据
0x41 b1 b0 <二进制数据>
0x41
(b1 << 8) + b0
长度
Boolean
‘T’
‘T’
1
True
‘F’
‘F’
1
False
Class-Def
‘C’ [String]* [Int]*
‘C’
*
Class的定义,拆分为基本类型String和Int
Date
0x4A b7 b6 b5 b4 b3 b2 b1 b0
0x4A
从1970-01-01 00:00:00 UTC开始的 毫秒数
0x4b b3 b2 b1 b0
0x4B
从1970-01-01 00:00:00 UTC开始的分钟数
Double
0x5B
0x5B
0.0
0x5C
0x5C
1.0
0x5D b0
0x5D
8为的byte转换为double,-128.0-127.0
0x5E b1 b0
0x5E
16位的short转换换为double
0x5F b1 b2 b1 b0
0x5F
32位的float转换为double
‘D’ b7 b6 b5 b4 b3 b2 b1 b0
64位的double,IEEE浮点数格式
Int
[0x80-0xBF]
0x80-0xBF
-0x10 — 0x3F,计算值的方式为:
[0xC0-0xCF] b0
0xC0-0xCF
-0x800 — 0x7FF ,计算值的方式为:
[0xD0-0xD7] b1 b0
0xD0-0xD7
-0x4000 — 0x3FFFF,计算值的方式为:
'I' b3 b2 b1 b0
‘I’
计算值的方式为:(b3 << 24) + (b2 << 16) + (b1 << 8) + b0
List
0x70-0x77 Type Value *
0x70 – 0x77
固定长度固定类型的List
0x78-0x7F value*
0x78 – 0x7F
固定长度不固定类型的List
0x58 Int Value*
0x58
固定长度不固定类型的List
0x57 Value* ‘Z’
0x57
‘Z’
不固定长度不固定类型的List
‘V’ Type Int Value*
‘V’
固定长度固定类型的List
0x55 Type Value * ‘Z’
0x55
‘Z’
不固定长度固定类型的List
Long
[0xD8-0xEF]
0xD8-0xEF
-0x08 — 0x0F
[0xF0-0xFF] b0
0xF0-0xFF
-0x800 — 0x7FF
[0x38-0x3F] b1 b0
0x38-0x3F
-0x40000 — 0x3FFFF
0x59 b3 b2 b1 b0
0x59
32位的Int转换为Long
'L' b7 b6 b5 b4 b3 b2 b1 b0
64位的Long
Map
'M' type (Value Value)* 'Z'
‘M’
‘Z’
Key类型固定的Map
'H' (Value Value)* 'Z'
‘H’
‘Z’
Key类型不固定的Map
Null
‘N’
‘N’
空值
Object
[0x60-0x6F] Value *
0x60-0x6F
Java对象
‘O’ Int Value *
‘O’
Java对象
Reference
0x51 Int
0x51
Map/List/Object中引用的其他对象在序列化数据中的位置
String
[0x00-0x1F]<UTF8编码格式字符串>
0x00-0x1F
0 — 31位长度的字符串
[0x30-0x34] b0 <UTF8编码格式字符串>
0x30-0x34
([0x30-0x34]-0x30) * 256 + b0
0 —1023长度的字符串
0x52 b1 b0 <UTF8编码格式的字符串> String
0x52
字符串片段,大于64k的字符串拆分为小于64k的字符串片段
‘S’ b1 b0 <UTF8编码格式的字符串>
‘S’
0 — 65536大小的字符串
- BES中间件Spark协议格式
- bes中间件安装
- BES
- 【中间件】TOMCAT8支持HTTPS协议
- 协议格式
- 说说BES
- BES 问题
- HTTP协议 - 协议格式
- HTTP协议 - 协议格式
- HTTP协议 - 协议格式
- HTTP协议 - 协议格式
- HTTP协议 - 协议格式
- HTTP协议 - 协议格式
- 开源华为Portal协议中间件
- 格式协议好东东
- burlap协议定义格式
- HTTP 内容格式(协议)
- IP协议头格式
- Qt的信号和槽是如何工作的
- ranlib的作用
- WM_PAINT介绍及OnPaint()函数的作用原理
- 为什么说 Git 比 SVN 更好
- Java的接口与内部类
- BES中间件Spark协议格式
- iOS UITextField 使用全解
- 常见gcc编译警告整理(开始)
- 初学Qt之--带参数的信号和槽的实现(入门级)
- Unity3D 2D游戏开发 官方教程。(十五)
- 使用js Math.random()函数生成指定范围的随机数字
- 修改min.js
- DirectShow SDK下载
- filco minila air在debian下的蓝牙适配安装