SocketFilter
该插件主要是对客户端发送的报文进行接收,并按照一定的格式对报文的内容进行读取和解析。同时,还可以对处理后的报文内容或者是指定的内容发送给客户端,实现客户端和服务端之间的报文交互。
插件配置
- SocketFilter插件所在位置:lib==>be-esb-plugin-base-2.0.jar==>com==>brilliance==>eibs==>core==>service==>instance==>impl==>SocketFilter
- SocketFilter插件需要继承插件共有的父类AbsFilter
- commons.xml的filters中注册该插件,该插件无parameter属性
<filter id="socketFilter" class="SocketFilter"/>
属性 |
说明 |
id |
注册时指定的id命名属性,后续在使用时通过该名称进行插件的调用 |
class |
声明插件时映射的插件类的位置,指向该插件的类文件,注意插件存放的包结构必须严格保持一致才可生效(com.brilliance.eibs.core.service.instance.impl) |
- 客户端需要建立与服务端的连接需要配置socketClientConnection,需要对其进行配置
- 该插件类的位置和SocketFilter插件类位置相同,同样,需要在commons.xml的connections中注册该插件
- 该类继承AbsConnection连接插件共同父类
- 插件属性类似上述filter插件,在此不再赘述
<connection class="SocketClientConnection" id="socketClientConnection"/>
属性配置
属性 |
描述 |
是否必须 |
示例 |
ref |
引用插件名称 |
是 |
引用commons.xml注册的SocketFilter插件指定的id值 |
type |
指定插件功能类型 |
是 |
type属性值分为out和in。out表示组报发报;in表示收报解报 |
encoding |
报文编码 |
是 |
指定收报解报的编码格式,一般为UTF-8 |
示例
客户端socket连接属性配置示例
<connection ref="socketClientConnection">
<property name="ip" value="127.0.0.1" />
<property name="port" value="10018" />
<property name="send_timeout" value="20000" />
<property name="receive_timeout" value="0" />
</connection>
- 然后在services.xml的services中配置连接信息
- 主要是port、interfaceName、transactionName三个属性需要严格对应
- 有默认属性的值可以不配置,采用默认属性
<service id="gjserverlx" state="on" type="socket">
<property name="port" value="10018" />
<property name="trust_ip" value="*" />
<property name="thread_pool_size" value="25" />
<property name="request_queue_len" value="500" />
<property name="receive_timeout" value="0" />
<property name="interfaceName" value="test1" />
<property name="transactionName" value="socketserver" />
</service>
socket客户端发报及接收回调
<transaction id="socketclient" version="2.0">
<step id="1">
<connection ref="fileConnection" type="in">
<property name="path" value="D:\brilliance\Be_Dea_LX\Be_Dea_LX\msg\socket.txt" />
</connection>
<filter ref="publicFilter" type="in">
<field tag="msg" value="${this}" />
<field tag="len" value="${msg.length()}"/>
</filter>
<connection ref="socketClientConnection">
<property name="ip" value="127.0.0.1" />
<property name="port" value="10018" />
<property name="send_timeout" value="20000" />
<property name="receive_timeout" value="0" />
</connection>
<filter ref="fixedFilter" type="out">
<field etag="0" value="${len}" size="8" type="int"/>
<field etag="1" value="${msg}" size="${len}" />
</filter>
<filter ref="socketFilter" type="out" encoding="#{ENCODE}">
<field value="${this}"/>
</filter>
<filter ref="socketFilter" type="in" encoding="#{ENCODE}">
<field tag="len" etag="8" type="int"/>
<field tag="body" etag="${len}" type="string"/>
<log value="${body}"/>
<field etag="close" />
</filter>
</step>
</transaction>
socket服务端收报及返回信息
<transaction id="socketserver" version="2.0">
<step id="1">
<filter ref="socketFilter" type="in" encoding="#{ENCODE}">
<field tag="len" etag="8" type="int"/>
<field tag="body" etag="${len}" type="string"/>
<log value="${body}"/>
<field tag="res" value="${body} ssss"/>
</filter>
<filter ref="fixedFilter" type="out">
<field etag="0" value="${res.length()}" size="8" type="int"/>
<field etag="1" value="${res}" size="${res.length()}" />
</filter>
<filter ref="socketFilter" type="out" encoding="#{ENCODE}">
<field value="${this}" />
</filter>
</step>
</transaction>
示例运行结果