WebService服务

服务类

@Service
@WebService(endpointInterface = "com.api.service.IOperatingIndexWebService", serviceName = "OperatingIndexService")
public class OperatingIndexWebServiceImpl implements IOperatingIndexWebService {

	@Autowired
	private IOperatingIndexService operatingIndexService;
	
	@Resource
	private WebServiceContext wsContext;

	
	@Override
	@InvokeLog(value = "webservice[OperatingIndexService.getKPIValue]", printArgs = true)
	public String getKPIValue(String xmlParam) {
		StringBuilder sb = new StringBuilder();
		
//		获取请求服务的信息
//	    MessageContext mc = wsContext.getMessageContext();
//        Map requestHeaderNames = (Map)mc.get(SOAPMessageContext.HTTP_REQUEST_HEADERS);  
//        Set set = requestHeaderNames.keySet();  
//        for(Object key:set){  
//            System.out.println(key+"   "+requestHeaderNames.get(key));  
//        }  
		try {
			// 判断传过来的xml是否为空
			if (StringUtils.isNotBlank(xmlParam)) {
				// 解析传过来的xml
				RequestXmlHeader header = WebServiceXmlUtil.xml2Bean(xmlParam);
				// 判断区域ID是否是电商的ID
				if (StringUtils.equals(header.getCorporationCode(), OperatingIndexConstants.AREA_ID)) {
					String time = header.getTime();
					List<OperatingIndexBean> api = header.getApi();
					sb.append(OperatingIndexConstants.XML_TITLE
					+ "<return><status>success</status><message>成功</message><Corporation id=\"")
					.append(OperatingIndexConstants.AREA_ID).append("\">");
					// 拿到所有指标名称
					for (int i = 0; i < api.size(); i++) {
						String name = api.get(i).getName();
						// 日登陆人员名单 和 在线人员名单,目前拿不到值传空
						if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_SYSTEM_LOGIN_ROLL)
								|| StringUtils.equals(name, OperatingIndexConstants.BUSINESS_SYSTEM_ONLINE_ROLL)) {
							sb.setLength(0);
							sb.append(OperatingIndexConstants.XML_TITLE).append("<LOGINUSER></LOGINUSER>");
							return StringEscapeUtils.unescapeXml(sb.toString());
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_USER_REG_NUM)) {
							// 注册用户数
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_SYSTEM_ONLINE_NUM)) {
							// 在线用户数
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_DAY_LOGIN_NUM)) {
							// 日登陆人数
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_VISIT_COUNT)) {
							// 累计访问人数
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_SYSTEM_SESSION_NUM)) {
							// 页面会话连接数
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_SYSTEM_RESPONSE_TIME)) {
							// 系统服务响应时长
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name,OperatingIndexConstants.BUSINESS_SYSTEM_RUNNING_TIME)) {
							// 系统运行健康时长
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_DATA_TABLE_SPACE)) {
							// 业务应用系统占用表空间大小
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else if (StringUtils.equals(name, OperatingIndexConstants.BUSINESS_SYSTEM_DB_TIME)) {
							// 数据库平均响应时长
							String operatingIndexNum = operatingIndexService.getOperatingIndexNum(name, time);
							sb.append("<api name=\"").append(name).append("\"><value>")
							.append(operatingIndexNum == null ? "" : operatingIndexNum).append("</value></api>");
						} else {
							// 当指标名称传错的时候
							sb.setLength(0);
							sb.append(OperatingIndexConstants.XML_TITLE
									+ "<return><status>failure</status><message>失败</message><reason>指标名称错误</reason></return>");
							break;
						}
					}
					sb.append("</Corporation></return>");
				} else {
					sb.append(OperatingIndexConstants.XML_TITLE
							+ "<return><status>failure</status><message>失败</message><reason>电商ID或标签名称错误</reason></return>");
				}
			} else {
				sb.append(OperatingIndexConstants.XML_TITLE
						+ "<return><status>failure</status><message>失败</message><reason>传入xml为空</reason></return>");
			}
		} catch (Exception e) {
			sb.setLength(0);
			sb.append(OperatingIndexConstants.XML_TITLE
					+ "<return><status>failure</status><message>失败</message><reason>webservice[OperatingIndexService]接口调用异常</reason></return>");
			e.printStackTrace();
		}
		return sb.toString();
	}


	@Override
	@InvokeLog(value = "webservice[OperatingIndexService.getStatus]", printArgs = true)
	public String getStatus() {
		StringBuilder sb = new StringBuilder();
		sb.append(1);
		return sb.toString();
	}
}

WebServiceXmlUtil

public class WebServiceXmlUtil {

    /**
     * 抽取包头,抽取出requestXml中的corporationCode、time、api,映射到RequestXmlHeader对象并返回
     * xml格式:
	 * <info>
	 * 		<!--传入的地域代码可以为一个或多个-->
	 * 		<corporationCode>地域代码</CorporationCode>
	 * 		<!--传入的指标名称可以为一个或多个--> 
	 * 		<time>时间值</Time>
	 * 		<api name="指标名称"></api>
	 * </info>
     *
     * @param requestXml
     * @return
     */
    public static RequestXmlHeader xml2Bean(String requestXml) {
        Document doc = null;
        try {
            doc = DocumentHelper.parseText(requestXml);
            //获取根节点
            Element root = doc.getRootElement();
            //获取根节点下的所有元素
            List<Element> children = root.elements();
            if (CollectionUtils.isEmpty(children)) {
                throw new CodeSourceException("0104");
            }

            RequestXmlHeader header = new RequestXmlHeader();

            List<OperatingIndexBean> list = new ArrayList<OperatingIndexBean>();
            for (Element element : children) {
            	OperatingIndexBean operatingIndexBean = new OperatingIndexBean();
                String name = element.getName();
                if (name.equals("CorporationCode")) {
                    header.setCorporationCode(element.getTextTrim());
                } else if (name.equals("Time")) {
                    header.setTime(element.getTextTrim());
                } else if (name.equals("api")) {
                	Attribute attr = element.attribute("name");
                	operatingIndexBean.setName(attr.getValue());
                	list.add(operatingIndexBean);
                }
            }
            header.setApi(list);
            return header;
        } catch (Exception e) {
            throw new CodeSourceException("0104", e);
        }
    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值