【问题标题】:Getting API name from Synapse handler从 Synapse 处理程序获取 API 名称
【发布时间】:2017-07-14 21:14:28
【问题描述】:

我正在尝试使用 Synapse 处理程序实现自定义记录器,我可以区分 API 和服务,但是如何从 Synapse 处理程序代码中获取 API 名称?所有 API 的服务名称为 __SynapseService

    public static boolean isProxyService(MessageContext messageContext,
            AxisService axisService) {

        if (axisService != null) {
            Parameter val = axisService.getParameter("serviceType");
            if (val != null && val.getValue().toString().equalsIgnoreCase("Proxy")) {
                if (logger.isDebugEnabled()) {
                    logger.debug("Parameter Value Service Type: "
                            + val.getValue().toString());
                }
                return true;
            }
        }
        return false;
    }
    public static boolean isAPI(MessageContext messageContext,
            AxisService axisService) {

        if(!isProxyService(messageContext, axisService) && axisService.getAxisServiceGroup().getServiceGroupName().equals(SynapseConstants.SYNAPSE_SERVICE_NAME)){
            return true;
        }
        return false;
    }
    public static String getServiceName(MessageContext messageContext,  AxisService axisService) {
        org.apache.axis2.context.MessageContext msgContext = ((Axis2MessageContext) messageContext).getAxis2MessageContext();       

        return msgContext.getServiceContext().getName();
    }

【问题讨论】:

    标签: wso2 wso2esb synapse


    【解决方案1】:

    试试这个。

    String apiName = (String) messageContext.getProperty("SYNAPSE_REST_API");
    

    【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多