Журнал всех запросов от клиента Flex / BlazeDS с использованием фильтра - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть весеннее приложение для интеграции BlazeDS.Я хотел бы зарегистрировать все запросы.

Я планировал использовать фильтр.В моем фильтре, когда я проверяю параметр запроса.Он не содержит ничего, связанного с запросом клиента.Если я изменяю порядок моего фильтра (у меня есть Spring Security), то он печатает некоторые вещи, связанные с Spring Security.

Я не могу зарегистрировать запрос пользователя.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 06 декабря 2011

Я проделал ту же функцию, используя AOP (AspectJ) для добавления оператора logger в методы конечной точки связи.- Пусть это для вас тоже альтернативный подход.


/** Logger advice and pointcuts for flex remoting stuff based on aspect J*/
public aspect AspectJInvocationLoggerAspect {

    /** The name of the used logger. */
    public final static String LOGGER_NAME = "myPackage.FLEX_INVOCATION_LOGGER";

    /** Logger used to log messages. */
    private static final Logger LOGGER = Logger.getLogger(LOGGER_NAME);

    AspectJInvocationLoggerAspect() {
    }

    /**
     * Pointcut for all flex remoting methods.
     * 
     * Flex remoting methods are determined by two constraints:
     * <ul>
     *   <li>they are public</li>
     *   <li>the are located in a class of name Remoting* within (implement an interface)
     *   {@link com.example.remote} package</li>
     *   <li>they are located within a class with an {@link RemotingDestination} annotation</li>
     * </ul>
     */
    pointcut remotingServiceFunction()
        : (execution(public * com.example.remote.*.*Remote*.*(..)))  
        && (within(@RemotingDestination *));

    before() : remotingServiceFunction() {
        if (LOGGER.isDebugEnabled()) {
            Signature sig = thisJoinPointStaticPart.getSignature();
            Object[] args = thisJoinPoint.getArgs();

            String location = sig.getDeclaringTypeName() + '.' + sig.getName() + ", args=" + Arrays.toString(args);            
            LOGGER.debug(location + " - begin");
        }
    }

    /** Log flex invocation result at TRACE level. */
    after() returning (Object result): remotingServiceFunction() {

        if (LOGGER.isTraceEnabled()) {
            Signature sig = thisJoinPointStaticPart.getSignature();            

            String location = sig.getDeclaringTypeName() + '.' + sig.getName();
            LOGGER.trace(location + " - end = " + result);            
        }
    }
}
...