1
Synapse 처리기가있는 사용자 정의 로거를 구현하려고하는데 API와 서비스를 구별 할 수 있지만 시냅스 처리기 코드에서 API 이름을 얻으려면 어떻게해야합니까? 서비스 이름은 모든 API에 대해 __SynapseService
입니다.Synapse 처리기에서 API 이름 가져 오기
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();
}
이것은 항상 null입니다. – iozeren
이상합니다. 이것이 WSO2 제품이 API 이름을 읽는 방법입니다. 예. https://github.com/wso2/carbon-apimgt/blob/v6.0.4/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/wso2/carbon/apimgt/gateway/ 핸들러/보안/APIAuthenticationHandler.java # L294 – Bee
ESB 5.0에 동일한 코드 기반이 있는지 여부를 알 수 없습니다. 이 코드는 API 관리자와 관련이 있다고 생각합니다. – iozeren