Starring V6不得不说的小秘密,看完豁然开朗
小知识
POINT A、数据映射
1、数据映射的双方对象如果字段基本类型不同,平台可以自动转换,比如int转换成String这样是OK的。
POINT B、逻辑处理
1、逻辑处理的服务设计,输入和输出对象是必须要的,哪怕你根本用不上(比如写自动任务逻辑时),在平台可以建一个空对象 STARRING_NULL,不需要对象的都引用它好了。
POINT C、数据对象
1、对方系统返回JSON报文里面子节点名称完全相同,比如:
{ "children": { "AA": "aa", "BB": "bb", "children": { "AA": "aa", "BB": "bb", "children": { "AA": "aa", "BB": "bb", "children": {} } } } }这种情况下,必须要要在平台定制多个children对象,第一层的children对象引用第二层的children对象再引用第三层,平台不支持递归引用。如果对方是递归对象,只能根据对方能返回的最深层来定制咱们这边的层级。
POINT D、勾选全局超时时,以源方DTA或者ALA剩余时间来记超时,目的DTA的超时时间不生效。
POINT E、接出点的响应报文处理
1、平台在接出点是没有定制报文格式的,返回报文处理事件放在如图所示的事件上是无效的,这个时候放在内部请求后事件。
2、代码的取值赋值和DTA的也不尽相同,不知道写法相同是否可行,内容如下:
public static void replaceStringToNull() throws UnsupportedEncodingException { String logFile = SUtil.getLogFile(); TrcLog.info(logFile, "替换String字符串字典值为compType的字符串"); DtaInfo dtaInfo = DtaInfo.getInstance(); Message message = (Message) dtaInfo.getMessage(); byte[] itemData = (byte[]) message.getBody(); String strItemData = new String(itemData, "UTF-8"); TrcLog.info(logFile, "=====原始数据:" + strItemData); if (strItemData.contains(""compType":""")) { strItemData = strItemData.replace(""compType":""", ""compType":[]"); } TrcLog.info(logFile, "=====替换后数据:" + strItemData); message.setBody(strItemData.getBytes()); TrcLog.info(logFile, "替换String字符串字典值为compType的字符串===处理结束"); }
POINT F、平台DTA、接出点、ALA日志级别可以通过总的日志参数控制,但是最大字节数不受总的控制。
平台接入接出点的日志默认值最大字节数是3000M,比如系统内存是8G,如果平台存在两个接入接出点,跑一段时间后,会占用6个G的缓存,导致平台运行后GC内存会无法回收,最终平台内存频繁回收而导致系统挂掉,需要手动修改最大字节数为30M。
3
4
5
6
7
8