Code:
<bean id="myRemote" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="myRemoteTarget" />
<property name="interceptorNames">
<list>
<value>logBillingIpAddressInterceptor</value>
</list>
</property>
</bean>
Where "myRemoteTarget" is your HessianServiceExporter'ed class that has your serviceInterface defined.
Have the logBillingIpAddressInterceptor class extend a class that implements the MethodBefore Advice like so:
Code:
public abstract void processRequest(HttpServletRequest req,
HttpServletResponse res);
public void before(Method method, Object[] args, Object arg2)
throws Throwable {
if (!method.getDeclaringClass().equals(HessianServiceExporter.class))
return;
if (!method.getName().equals("handleRequest"))
return;
if (args.length != 2)
return;
if (!args[0].getClass().equals(HttpServletRequest.class))
return;
if (!args[1].getClass().equals(HttpServletResponse.class))
return;
processRequest((HttpServletRequest) args[0],
(HttpServletResponse) args[1]);
}
and then your class can have a method like this:
Code:
public void processRequest(HttpServletRequest req, HttpServletResponse res) {
log.info("Request from " + req.getRemoteAddr() + " for "
+ req.getRequestURI());
}
granted that doesn't get you the httprequest in your myRemoteTarget class, but it might help you out.