Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ActiveMQ之后的WSO2 Synapse处理程序HandlerRequestInFlow到序列_Java_Wso2_Wso2esb_Axis2_Wso2carbon - Fatal编程技术网

Java ActiveMQ之后的WSO2 Synapse处理程序HandlerRequestInFlow到序列

Java ActiveMQ之后的WSO2 Synapse处理程序HandlerRequestInFlow到序列,java,wso2,wso2esb,axis2,wso2carbon,Java,Wso2,Wso2esb,Axis2,Wso2carbon,我正在尝试编写一个定制的synapse处理程序来记录传入的请求和对wso2carbon.log的相应响应,我已经完成了这项工作,但是,当请求从消息队列ActiveMQ返回到目标序列时,我很难将相同的UUID记录到日志中 我的意思是我得到一个请求-我创建一个UUID-我记录并保存它-在响应时我也记录它-我将它保存在传输头的原始上下文中,我希望在我从活动MQ获取它时记录它,但是消息进入一个序列,并且似乎没有被HandlerRequestInFlow和HandlerResponseInFlow?可以做

我正在尝试编写一个定制的synapse处理程序来记录传入的请求和对wso2carbon.log的相应响应,我已经完成了这项工作,但是,当请求从消息队列ActiveMQ返回到目标序列时,我很难将相同的UUID记录到日志中

我的意思是我得到一个请求-我创建一个UUID-我记录并保存它-在响应时我也记录它-我将它保存在传输头的原始上下文中,我希望在我从活动MQ获取它时记录它,但是消息进入一个序列,并且似乎没有被HandlerRequestInFlowHandlerResponseInFlow?可以做些什么

在处理程序中,我使用“扩展AbstractSynapseHandler”来启动日志记录过程

这是处理程序的代码:

package org.wso2.handler.synapse;

import org.apache.commons.lang3.StringUtils;
import org.apache.synapse.AbstractSynapseHandler;
import org.apache.synapse.MessageContext;
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.slf4j.MDC;
import java.util.Map;
import java.util.UUID;

public class MessageIDHandler extends AbstractSynapseHandler {

private static final String TransactionUUID = "TransactionUUID";
private static final String LOG_KEY = "messageId";

@SuppressWarnings("unchecked")
public boolean handleRequestInFlow(MessageContext messageContext) {
    org.apache.axis2.context.MessageContext axis2MC;
    axis2MC = ((Axis2MessageContext) messageContext).
            getAxis2MessageContext();
    Map<String, String> headers = (Map<String, String>) axis2MC.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);        
    
    String messageId = headers.get("X-Transaction-ID");        

    if(StringUtils.isEmpty(messageId)){
        messageId = UUID.randomUUID().toString();
        headers.put("X-Transaction-ID", messageId);
    }

    messageContext.setProperty(TransactionUUID, messageId);
    MDC.put(LOG_KEY, messageId + " - REQUEST");

    return true;
}

public boolean handleRequestOutFlow(MessageContext messageContext) {        
    return true;
}

public boolean handleResponseInFlow(MessageContext messageContext) {
    MDC.put(LOG_KEY, String.valueOf(messageContext.getProperty(TransactionUUID)) + " - RESPONSE");
    return true;
}

public boolean handleResponseOutFlow(MessageContext messageContext) {
    return true;
}
}
package org.wso2.handler.synapse;
导入org.apache.commons.lang3.StringUtils;
导入org.apache.synapse.AbstractSynapseHandler;
导入org.apache.synapse.MessageContext;
导入org.apache.synapse.core.axis2.Axis2MessageContext;
导入org.slf4j.MDC;
导入java.util.Map;
导入java.util.UUID;
公共类MessageIDHandler扩展了AbstractSynapseHandler{
私有静态最终字符串TransactionUUID=“TransactionUUID”;
私有静态最终字符串日志\u KEY=“messageId”;
@抑制警告(“未选中”)
公共布尔handleRequestInFlow(MessageContext MessageContext){
org.apache.axis2.context.MessageContext axis2MC;
axis2MC=((Axis2MessageContext)messageContext)。
getAxis2MessageContext();
Map headers=(Map)axis2MC.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_headers);
字符串messageId=headers.get(“X-Transaction-ID”);
if(StringUtils.isEmpty(messageId)){
messageId=UUID.randomUUID().toString();
headers.put(“X-Transaction-ID”,messageId);
}
setProperty(TransactionUUID,messageId);
put(LOG_键,messageId+“-REQUEST”);
返回true;
}
公共布尔handleRequestOutFlow(MessageContext MessageContext){
返回true;
}
公共布尔HandlerResponseInFlow(MessageContext MessageContext){
put(LOG_KEY,String.valueOf(messageContext.getProperty(TransactionUUID))+“-RESPONSE”);
返回true;
}
公共布尔HandlerResponseOutflow(MessageContext MessageContext){
返回true;
}
}