我有一个正确配置的http调用程序设置并处于工作状态。对于身份验证,我使用AOP,它基本上根据各种标准(如Web上下文,用户名pwd等)将身份验证位添加到本地线程中。
现在,问题。当@ service end收到呼叫时,我的服务会对认证位进行处理。仔细调试后,我意识到相应的方面从未被调用过。
以下是将身份验证位添加到本地线程的方面的相关代码。
@Before(value = "execution(public * provision(..))")
public void authenticate(){...}
这是被调用的服务方法。
public ServiceResponse provision(String xyz, String abc){...}
如果我在本地设置中调用“provision()”方法,则会调用该方面。但是当通过http-invoker调用此方法时,它不会被调用?我怎样才能优雅地规避这个问题? (我有一个解决方案,我将身份验证部分添加到provision()方法中,但这会妨碍我的测试能力和SRP。
答案 0 :(得分:0)
如何创建AOP代理?它是通过自动代理完成的吗?由于您使用的是HttpInvokerServiceExporter,我假设您还至少有两个上下文,即应用程序的主上下文和指定导出器的-servlet.xml文件。它是否正确?也许存在一个问题,因为主上下文中的AOP配置不会传播到子-servlet.xml上下文。