2
我有一個Spring BlazeDS集成應用程序。我想記錄所有請求。使用過濾器記錄來自flex/BlazeDS客戶端的所有請求
我打算使用過濾器。在我的過濾器中,當我檢查請求參數時。它不包含與客戶端請求相關的任何內容。如果我改變過濾器的順序(我有彈簧安全),那麼它會打印一些與彈簧安全相關的東西。
我無法記錄用戶請求。
任何幫助表示讚賞。
我有一個Spring BlazeDS集成應用程序。我想記錄所有請求。使用過濾器記錄來自flex/BlazeDS客戶端的所有請求
我打算使用過濾器。在我的過濾器中,當我檢查請求參數時。它不包含與客戶端請求相關的任何內容。如果我改變過濾器的順序(我有彈簧安全),那麼它會打印一些與彈簧安全相關的東西。
我無法記錄用戶請求。
任何幫助表示讚賞。
我已經通過使用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);
}
}
}
嗨,用於選擇過濾器的原因是我想處理所有類型的客戶,MVC和柔性的。我搜索了很多,最近我能找到的是http://www.spltech.co.uk/blog/struts-2/integrating-adobe-flex-with-struts-2-and-jboss-using-blazeds但是如果使用過濾器找不到乾淨的靈魂,那麼我必須切換到攔截器或AOP。所以你可以拋出一些光或一些鏈接,如何使用AOP做同樣的事情。 – Mukun
@ user1057094:我已添加示例 – Ralph
感謝您的示例。我會試一試。但我仍然想知道,如何使用過濾器來做到這一點。 – Mukun