public static String invoke(BaseRequest baseRequest) {
if (baseRequest.getServiceName() == null || baseRequest.getVersionName() == null || baseRequest.getMethodName() == null) {
return String.format("{\"responseCode\":\"%s\", \"responseMsg\":\"%s\", \"success\":\"%s\"}", "Err-Core-098", "serviceName、versionName、methodName信息不能为null", "{}");
}
JsonObject jsonObjectParameter = new JsonObject();
if (baseRequest.getJsonParameter() != null) {
jsonObjectParameter = new JsonParser().parse(baseRequest.getJsonParameter()).getAsJsonObject();
}
com.isuwang.dapeng.core.metadata.Service service = ApiServices.getService(baseRequest.getServiceName(), baseRequest.getVersionName());
String callerInfo = LoadBalanceFilter.getCallerInfo(baseRequest.getServiceName(), baseRequest.getVersionName(), baseRequest.getVersionName());
SoaHeader header = new SoaHeader();
header.setServiceName(baseRequest.getServiceName());
header.setVersionName(baseRequest.getVersionName());
header.setMethodName(baseRequest.getMethodName());
String parameter = jsonObjectParameter.toString();
if (callerInfo == null && SoaSystemEnvProperties.SOA_REMOTING_MODE.equals("local")) {
jsonPost = new JSONPost(SoaSystemEnvProperties.SOA_SERVICE_IP, SoaSystemEnvProperties.SOA_SERVICE_PORT, true);
} else if (callerInfo != null) {
String[] infos = callerInfo.split(":");
jsonPost = new JSONPost(infos[0], Integer.valueOf(infos[1]), true);
} else {
return String.format("{\"responseCode\":\"%s\", \"responseMsg\":\"%s\", \"success\":\"%s\"}", "Err-Core-098", "无可用的服务实例", "{}");
}
try {
return jsonPost.callServiceMethod(header, parameter, service);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return null;
}