桩注册服务逻辑
This commit is contained in:
parent
9855c823a7
commit
412ba3f6db
@ -3,6 +3,7 @@ package com.xhpc.pp;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.context.annotation.ImportResource;
|
||||
|
||||
/**
|
||||
* 充电桩服务
|
||||
@ -10,6 +11,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
* @author zz
|
||||
*/
|
||||
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
|
||||
@ImportResource(locations={"classpath:svcmainlogic.xml"})
|
||||
public class XhpcPPApplication
|
||||
{
|
||||
public static void main(String[] args) {
|
||||
|
||||
@ -1,13 +1,8 @@
|
||||
package com.xhpc.pp.config;
|
||||
|
||||
import com.xhpc.pp.tx.logic.ServiceLogic;
|
||||
import com.xhpc.pp.utils.SpringContextHolder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
public class EarlierBeanConf {
|
||||
|
||||
@ -18,9 +13,4 @@ public class EarlierBeanConf {
|
||||
this.springContextHolder = springContextHolder;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Map<String, ServiceLogic> serviceLogics() {
|
||||
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,6 @@ import com.xhpc.pp.tx.ServiceParameter;
|
||||
import com.xhpc.pp.tx.ServiceResult;
|
||||
import com.xhpc.pp.tx.TxException;
|
||||
import com.xhpc.pp.utils.SpringContextHolder;
|
||||
import com.xhpc.pp.utils.security.CRCCalculator;
|
||||
import com.xhpc.pp.utils.security.HexUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.quickserver.net.server.ClientBinaryHandler;
|
||||
@ -16,14 +15,18 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xhpc.pp.utils.security.CRCCalculator.calcCrc;
|
||||
|
||||
public class ChargingPileBinaryHandler implements ClientBinaryHandler {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(ChargingPileBinaryHandler.class);
|
||||
|
||||
private static final String SERVICE_REGISTER = "01";
|
||||
private static final String SERVICE_LOGOUT = "1002";
|
||||
|
||||
private static final String DATA_TYPE_STRING = "string";
|
||||
private static final String DATA_TYPE_INT = "int";
|
||||
@ -39,28 +42,27 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler {
|
||||
@Override
|
||||
public void handleBinary(ClientHandler handler, byte[] data) throws IOException {
|
||||
|
||||
String dataStr = HexUtils.toHex(data);
|
||||
String poleNo = ChargingPileServer.getPoleNo(handler);
|
||||
if (data.length <= 2|| !dataStr.startsWith("68")) {
|
||||
log.info("received invalid data <<<< {}, len[{}]", dataStr, data.length);
|
||||
return;
|
||||
} else {
|
||||
log.info("received data <<<< {}, from pole <<<< {}", dataStr, poleNo);
|
||||
}
|
||||
try {
|
||||
int len = HexUtils.toInteger(data, 1, 2);
|
||||
if (data.length < len) {
|
||||
log.error("incorrect input data length {}", data.length);
|
||||
return;
|
||||
}
|
||||
byte[] data2 = Arrays.copyOfRange(data, 2, data.length-2);
|
||||
String crc = CRCCalculator.ModbusCRC(data2);
|
||||
if (!dataStr.endsWith(crc)) {
|
||||
log.error("incorrect input data crc {}", crc);
|
||||
return;
|
||||
}
|
||||
List<byte[]> dataList = parseDataList(data);
|
||||
for (byte[] d : dataList) {
|
||||
String dataStr = HexUtils.toHex(d);
|
||||
String poleNo = ChargingPileServer.getPoleNo(handler);
|
||||
if (d.length <= 2|| !dataStr.startsWith("68")) {
|
||||
log.info("received invalid data <<<< {}, len[{}]", dataStr, d.length);
|
||||
return;
|
||||
} else if (poleNo!=null) {
|
||||
log.info("received data <<<< {}, from pole <<<< {}", dataStr, poleNo);
|
||||
}
|
||||
int len = HexUtils.toInteger(d, 1, 2);
|
||||
if (d.length < len) {
|
||||
log.error("incorrect input data length {}", d.length);
|
||||
return;
|
||||
}
|
||||
String crc = calcCrc(d);
|
||||
if (!dataStr.endsWith(crc)) {
|
||||
log.error("incorrect input data crc {}", crc);
|
||||
return;
|
||||
}
|
||||
process(handler, d);
|
||||
}
|
||||
} catch (TxException e) {
|
||||
@ -76,51 +78,37 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler {
|
||||
Map<String, Object> req = analysis(data, serviceName, version);
|
||||
// log.info("pole [{}] status: |{}|", StringUtils.isNotBlank(poleNo) ? poleNo : "null", req.get("status") != null ? MQPole.PoleStatus.toString((Long) req.get("status")) : "N/A");
|
||||
ServiceParameter sp = new ServiceParameter(serviceName, poleNo, req);
|
||||
|
||||
// try {
|
||||
// log.info("serviceLogic: |{}|", servicemainLogic.getServiceLogic(serviceName).getClass().getName());
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
//service 主逻辑中解析参数为对应的服务
|
||||
ServiceResult result = servicemainLogic.process(sp);
|
||||
|
||||
// 结果不为空的直接回写
|
||||
handler.sendClientBinary(result.getBinary());
|
||||
log.info("server send msg >>>> [{}] |{}|", poleNo, HexUtils.toHex(result.getBinary()));
|
||||
if (result.getBinary() != null) {
|
||||
log.info("server send msg >>>> [{}] |{}|", poleNo, HexUtils.toHex(result.getBinary()));
|
||||
handler.sendClientBinary(result.getBinary());
|
||||
}
|
||||
// 注册成功后需要将当前handler与设备关联
|
||||
if (SERVICE_REGISTER.equals(serviceName)) {
|
||||
log.info("pole registered >>>> [{}] ", poleNo);
|
||||
ChargingPileServer.putHandler((String) req.get("poleNo"), handler);
|
||||
ChargingPileServer.putVersion(handler.getName(), (String) req.get("version"));
|
||||
}
|
||||
// 注销后将桩号对应关系解除
|
||||
if (SERVICE_LOGOUT.equals(serviceName)) {
|
||||
ChargingPileServer.removeHandler(poleNo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private List<byte[]> parseDataList(byte[] data) {
|
||||
List<byte[]> dataList = new ArrayList<>();
|
||||
|
||||
int len = HexUtils.toInteger(data, 1, 2);
|
||||
List<byte[]> dataList = new ArrayList<>();
|
||||
int processedLen, len = HexUtils.toInteger(data, 1, 2)+4;
|
||||
processedLen = 0;
|
||||
int start = 0;
|
||||
while (start < data.length) {
|
||||
if (len > data.length) {
|
||||
log.error("incorrect input data[{}] len[{}]", data, data.length);
|
||||
break;
|
||||
}
|
||||
dataList.add(ArrayUtils.subarray(data, start, len));
|
||||
start = len;
|
||||
len = len + HexUtils.toInteger(data, start, start + 2);
|
||||
dataList.add(ArrayUtils.subarray(data, start, start+len));
|
||||
processedLen += len;
|
||||
start = processedLen;
|
||||
len = HexUtils.toInteger(data, start+1, start + 2)+4;
|
||||
}
|
||||
|
||||
if (dataList.size() > 1) {
|
||||
log.info("detected stick package size[{}]", dataList.size());
|
||||
}
|
||||
|
||||
return dataList;
|
||||
}
|
||||
|
||||
@ -129,7 +117,6 @@ public class ChargingPileBinaryHandler implements ClientBinaryHandler {
|
||||
List<ServiceField> fieldList = FieldService.fieldList(ver, service);
|
||||
if (fieldList == null || fieldList.isEmpty())
|
||||
throw TxException.INNER_ERROR("field mapper not found");
|
||||
|
||||
Map<String, Object> result = new HashMap<String, Object>();
|
||||
int pos = 6;
|
||||
for (ServiceField field : fieldList) {
|
||||
|
||||
@ -79,7 +79,7 @@ public class ChargingPileServer {
|
||||
}
|
||||
|
||||
public static void sendClientMsg(String poleNo, byte[] msg) {
|
||||
//TODO 采集服务器充电桩 协议0x100A
|
||||
|
||||
if (!HexUtils.toHex(msg).startsWith("00101005")) {
|
||||
log.info("server send msg >>>> [{}] |{}|", poleNo, HexUtils.toHex(msg));
|
||||
}
|
||||
@ -87,22 +87,17 @@ public class ChargingPileServer {
|
||||
poleNo = "0000000000000000" + poleNo;
|
||||
poleNo = poleNo.substring(poleNo.length() - 16);
|
||||
}
|
||||
|
||||
ClientHandler handler = handlerMapper.get(poleNo);
|
||||
|
||||
if (handler == null || !handler.isOpen()) {
|
||||
log.error("send message failed. [{}] connection lost", poleNo);
|
||||
removeHandler(poleNo);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
handler.sendClientBinary(msg);
|
||||
} catch (IOException e) {
|
||||
log.error("send message failed. " + e.getMessage(), e);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public static void putVersion(String handler, String version) {
|
||||
|
||||
@ -48,6 +48,7 @@ public class FieldService {
|
||||
}
|
||||
|
||||
public static List<ServiceField> fieldList(String version, String service) {
|
||||
|
||||
Map<String, List<ServiceField>> vermap = versionMapFields.get(version);
|
||||
if (vermap == null)
|
||||
vermap = versionMapFields.get(ChargingPileServer.default_version);
|
||||
@ -60,6 +61,7 @@ public class FieldService {
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> querySQL(String sql) {
|
||||
|
||||
Map<String, String> query = new HashMap<>();
|
||||
query.put("sql", sql);
|
||||
return fieldMapper.querySQL(query);
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
package com.xhpc.pp.service;
|
||||
|
||||
import com.xhpc.pp.tx.ServiceParameter;
|
||||
import com.xhpc.pp.tx.ServiceResult;
|
||||
import com.xhpc.pp.tx.TxException;
|
||||
import com.xhpc.pp.tx.logic.ServiceLogic;
|
||||
import com.xhpc.pp.utils.security.CRCCalculator;
|
||||
import com.xhpc.pp.utils.security.HexUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Lazy
|
||||
@Component("RegisterLogic")
|
||||
public class RegisterLogic implements ServiceLogic {
|
||||
|
||||
private static Logger log = LoggerFactory.getLogger(RegisterLogic.class);
|
||||
|
||||
@Override
|
||||
public ServiceResult service(ServiceParameter sp) throws TxException {
|
||||
|
||||
Map<String, Object> req = sp.getParameters();
|
||||
if (req == null) {
|
||||
throw TxException.INVALID_PARAMETER;
|
||||
}
|
||||
String poleNo = (String) req.get("poleNo");
|
||||
String resultStr = "680C00000002".concat(poleNo).concat("00");
|
||||
resultStr = resultStr.concat(CRCCalculator.calcCrc(resultStr));
|
||||
return new ServiceResult(HexUtils.toBytes(resultStr), ServiceResult.OK);
|
||||
}
|
||||
}
|
||||
@ -19,26 +19,26 @@ public class ServiceMainLogic {
|
||||
@Resource
|
||||
private Map<String, ServiceLogic> serviceLogics;
|
||||
|
||||
public ServiceResult process(ServiceParameter param) {
|
||||
public ServiceResult process(ServiceParameter sp) {
|
||||
|
||||
ServiceResult result;
|
||||
try {
|
||||
ServiceLogic logic = getServiceLogic(param.getServiceName());
|
||||
startTransaction(param);
|
||||
result = logic.service(param);
|
||||
commitTransaction(param);
|
||||
ServiceLogic logic = getServiceLogic(sp.getServiceName());
|
||||
// startTransaction(sp);
|
||||
result = logic.service(sp);
|
||||
// commitTransaction(sp);
|
||||
} catch (TxException e) {
|
||||
log.error("服务请求失败:错误码[" + e.getReturnCode() + "],错误:{" + e.getMessage() + "}");
|
||||
// saveErrorLog(param, e);
|
||||
// saveErrorLog(sp, e);
|
||||
try {
|
||||
terminateTransaction(param);
|
||||
terminateTransaction(sp);
|
||||
result = new ServiceResult(e.getReturnCode(), e.getMessage());
|
||||
} catch (Exception e1) {
|
||||
result = new ServiceResult(null, e1.getMessage());
|
||||
result = new ServiceResult(e1.getMessage());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
result = new ServiceResult(null, e.getMessage());
|
||||
result = new ServiceResult(e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -89,16 +89,12 @@ public class ServiceMainLogic {
|
||||
}
|
||||
|
||||
public ServiceLogic getServiceLogic(String serviceName) throws Exception {
|
||||
|
||||
if (serviceName == null || "".equals(serviceName))
|
||||
throw new TxException("0101", "请求参数错误");
|
||||
|
||||
log.debug("获取ServiceCommandLogic,serviceName:" + serviceName);
|
||||
|
||||
ServiceLogic logic = serviceLogics.get(serviceName);
|
||||
|
||||
if (logic == null)
|
||||
throw new TxException("0102", "请求的业务类型错误," + serviceName);
|
||||
|
||||
return logic;
|
||||
}
|
||||
|
||||
|
||||
@ -5,13 +5,15 @@ import java.util.Map;
|
||||
|
||||
public class ServiceResult {
|
||||
|
||||
public static final String RESULT_OK = "0000";
|
||||
public static final String OK = "0";
|
||||
public static final String FAIL = "1";
|
||||
|
||||
private String code;
|
||||
private byte[] binary;
|
||||
|
||||
private Object json;
|
||||
|
||||
public ServiceResult(String code, String body) {
|
||||
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
String messageCode = "0101";
|
||||
if (code != null && code.trim().length() > 0) {
|
||||
@ -30,11 +32,16 @@ public class ServiceResult {
|
||||
this.json = json;
|
||||
}
|
||||
|
||||
public ServiceResult() {
|
||||
public ServiceResult(byte[] binary) {
|
||||
|
||||
this.binary = binary;
|
||||
this.code = OK;
|
||||
}
|
||||
|
||||
public ServiceResult(byte[] binary) {
|
||||
public ServiceResult(byte[] binary, String code) {
|
||||
|
||||
this.binary = binary;
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public Object getJson() {
|
||||
@ -49,4 +56,11 @@ public class ServiceResult {
|
||||
return binary;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,11 +5,6 @@ import com.xhpc.pp.tx.ServiceResult;
|
||||
|
||||
public interface ServiceLogic {
|
||||
|
||||
/**
|
||||
* 实现具体服务
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
ServiceResult service(ServiceParameter param) throws Exception;
|
||||
ServiceResult service(ServiceParameter sp) throws Exception;
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.xhpc.pp.utils.security;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class CRCCalculator {
|
||||
|
||||
public static String ModbusCRC(byte[] pData) {
|
||||
@ -19,6 +21,18 @@ public class CRCCalculator {
|
||||
return String.format("%04X", crc);
|
||||
}
|
||||
|
||||
public static String calcCrc(byte[] data) {
|
||||
byte[] data2 = Arrays.copyOfRange(data, 2, data.length-2);
|
||||
return CRCCalculator.ModbusCRC(data2);
|
||||
}
|
||||
|
||||
public static String calcCrc(String msg) {
|
||||
byte[] data = HexUtils.toBytes(msg);
|
||||
assert data != null;
|
||||
byte[] data2 = Arrays.copyOfRange(data, 2, data.length);
|
||||
return CRCCalculator.ModbusCRC(data2);
|
||||
}
|
||||
|
||||
public static int byteArrayToInt(byte[] b) {
|
||||
return b[3] & 0xFF |
|
||||
(b[2] & 0xFF) << 8 |
|
||||
@ -35,41 +49,4 @@ public class CRCCalculator {
|
||||
};
|
||||
}
|
||||
|
||||
private static byte[] hi = {
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41,
|
||||
(byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x01, (byte) 0xC0, (byte) 0x80, (byte) 0x41, (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40
|
||||
};
|
||||
|
||||
private static byte lo[] = {
|
||||
(byte) 0x00, (byte) 0xC0, (byte) 0xC1, (byte) 0x01, (byte) 0xC3, (byte) 0x03, (byte) 0x02, (byte) 0xC2, (byte) 0xC6, (byte) 0x06, (byte) 0x07, (byte) 0xC7, (byte) 0x05, (byte) 0xC5, (byte) 0xC4, (byte) 0x04,
|
||||
(byte) 0xCC, (byte) 0x0C, (byte) 0x0D, (byte) 0xCD, (byte) 0x0F, (byte) 0xCF, (byte) 0xCE, (byte) 0x0E, (byte) 0x0A, (byte) 0xCA, (byte) 0xCB, (byte) 0x0B, (byte) 0xC9, (byte) 0x09, (byte) 0x08, (byte) 0xC8,
|
||||
(byte) 0xD8, (byte) 0x18, (byte) 0x19, (byte) 0xD9, (byte) 0x1B, (byte) 0xDB, (byte) 0xDA, (byte) 0x1A, (byte) 0x1E, (byte) 0xDE, (byte) 0xDF, (byte) 0x1F, (byte) 0xDD, (byte) 0x1D, (byte) 0x1C, (byte) 0xDC,
|
||||
(byte) 0x14, (byte) 0xD4, (byte) 0xD5, (byte) 0x15, (byte) 0xD7, (byte) 0x17, (byte) 0x16, (byte) 0xD6, (byte) 0xD2, (byte) 0x12, (byte) 0x13, (byte) 0xD3, (byte) 0x11, (byte) 0xD1, (byte) 0xD0, (byte) 0x10,
|
||||
(byte) 0xF0, (byte) 0x30, (byte) 0x31, (byte) 0xF1, (byte) 0x33, (byte) 0xF3, (byte) 0xF2, (byte) 0x32, (byte) 0x36, (byte) 0xF6, (byte) 0xF7, (byte) 0x37, (byte) 0xF5, (byte) 0x35, (byte) 0x34, (byte) 0xF4,
|
||||
(byte) 0x3C, (byte) 0xFC, (byte) 0xFD, (byte) 0x3D, (byte) 0xFF, (byte) 0x3F, (byte) 0x3E, (byte) 0xFE, (byte) 0xFA, (byte) 0x3A, (byte) 0x3B, (byte) 0xFB, (byte) 0x39, (byte) 0xF9, (byte) 0xF8, (byte) 0x38,
|
||||
(byte) 0x28, (byte) 0xE8, (byte) 0xE9, (byte) 0x29, (byte) 0xEB, (byte) 0x2B, (byte) 0x2A, (byte) 0xEA, (byte) 0xEE, (byte) 0x2E, (byte) 0x2F, (byte) 0xEF, (byte) 0x2D, (byte) 0xED, (byte) 0xEC, (byte) 0x2C,
|
||||
(byte) 0xE4, (byte) 0x24, (byte) 0x25, (byte) 0xE5, (byte) 0x27, (byte) 0xE7, (byte) 0xE6, (byte) 0x26, (byte) 0x22, (byte) 0xE2, (byte) 0xE3, (byte) 0x23, (byte) 0xE1, (byte) 0x21, (byte) 0x20, (byte) 0xE0,
|
||||
(byte) 0xA0, (byte) 0x60, (byte) 0x61, (byte) 0xA1, (byte) 0x63, (byte) 0xA3, (byte) 0xA2, (byte) 0x62, (byte) 0x66, (byte) 0xA6, (byte) 0xA7, (byte) 0x67, (byte) 0xA5, (byte) 0x65, (byte) 0x64, (byte) 0xA4,
|
||||
(byte) 0x6C, (byte) 0xAC, (byte) 0xAD, (byte) 0x6D, (byte) 0xAF, (byte) 0x6F, (byte) 0x6E, (byte) 0xAE, (byte) 0xAA, (byte) 0x6A, (byte) 0x6B, (byte) 0xAB, (byte) 0x69, (byte) 0xA9, (byte) 0xA8, (byte) 0x68,
|
||||
(byte) 0x78, (byte) 0xB8, (byte) 0xB9, (byte) 0x79, (byte) 0xBB, (byte) 0x7B, (byte) 0x7A, (byte) 0xBA, (byte) 0xBE, (byte) 0x7E, (byte) 0x7F, (byte) 0xBF, (byte) 0x7D, (byte) 0xBD, (byte) 0xBC, (byte) 0x7C,
|
||||
(byte) 0xB4, (byte) 0x74, (byte) 0x75, (byte) 0xB5, (byte) 0x77, (byte) 0xB7, (byte) 0xB6, (byte) 0x76, (byte) 0x72, (byte) 0xB2, (byte) 0xB3, (byte) 0x73, (byte) 0xB1, (byte) 0x71, (byte) 0x70, (byte) 0xB0,
|
||||
(byte) 0x50, (byte) 0x90, (byte) 0x91, (byte) 0x51, (byte) 0x93, (byte) 0x53, (byte) 0x52, (byte) 0x92, (byte) 0x96, (byte) 0x56, (byte) 0x57, (byte) 0x97, (byte) 0x55, (byte) 0x95, (byte) 0x94, (byte) 0x54,
|
||||
(byte) 0x9C, (byte) 0x5C, (byte) 0x5D, (byte) 0x9D, (byte) 0x5F, (byte) 0x9F, (byte) 0x9E, (byte) 0x5E, (byte) 0x5A, (byte) 0x9A, (byte) 0x9B, (byte) 0x5B, (byte) 0x99, (byte) 0x59, (byte) 0x58, (byte) 0x98,
|
||||
(byte) 0x88, (byte) 0x48, (byte) 0x49, (byte) 0x89, (byte) 0x4B, (byte) 0x8B, (byte) 0x8A, (byte) 0x4A, (byte) 0x4E, (byte) 0x8E, (byte) 0x8F, (byte) 0x4F, (byte) 0x8D, (byte) 0x4D, (byte) 0x4C, (byte) 0x8C,
|
||||
(byte) 0x44, (byte) 0x84, (byte) 0x85, (byte) 0x45, (byte) 0x87, (byte) 0x47, (byte) 0x46, (byte) 0x86, (byte) 0x82, (byte) 0x42, (byte) 0x43, (byte) 0x83, (byte) 0x41, (byte) 0x81, (byte) 0x80, (byte) 0x40
|
||||
};
|
||||
}
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:util="http://www.springframework.org/schema/util"
|
||||
xmlns="http://www.springframework.org/schema/beans"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
|
||||
|
||||
<util:map id="serviceLogics">
|
||||
|
||||
<entry key="01" value-ref="RegisterLogic"/>
|
||||
</util:map>
|
||||
</beans>
|
||||
Loading…
x
Reference in New Issue
Block a user