2011-12-06 4 views
2

私は春のBlazeDS統合アプリケーションを持っています。私はすべての要求を記録したいと思います。フィルタを使用してflex/BlazeDSクライアントからのすべてのリクエストを記録します

私はフィルターを使用する予定でした。私のフィルタでは、リクエストパラメータをチェックします。クライアント要求には何も含まれていません。フィルタの順序を変更すると(私は春のセキュリティがあります)、春のセキュリティに関連するものを表示します。

ユーザーリクエストを記録できません。

何か助けていただければ幸いです。

答えて

2

私はAOP(AspectJ)を使用して通信エンドポイントメソッドにロガーステートメントを挿入することで同じ機能を果たしました。 - これがあなたのための代替アプローチかもしれない。


/** 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);    
     } 
    } 
} 
+0

こんにちは、フィルタを選択した理由は、私はすべてのクライアントの種類、MVCとフレックスを処理したかったです。私はたくさんのグーグルを見つけました。そして、私が見つけた最も近いものはhttp://www.spltech.co.uk/blog/struts-2/integrating-adobe-flex-with-struts-2-and-jboss-using-blazedsでしたフィルタを使ってクリーンなソウルティションが見つからない場合は、インターセプタまたはAOPに切り替える必要があります。 AOPを使って同じことをする方法については、いくつかの光やリンクを投げることができます。 – Mukun

+0

@ user1057094:例を追加しました – Ralph

+0

ありがとうございました。私はそれを試してみましょう。しかし、私はまだ、フィルタを使用してこれを行うには不思議です。 – Mukun