Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT Spring集成-如何进行AOP日志记录?_Spring_Gwt_Aop_Logging - Fatal编程技术网

GWT Spring集成-如何进行AOP日志记录?

GWT Spring集成-如何进行AOP日志记录?,spring,gwt,aop,logging,Spring,Gwt,Aop,Logging,我有一个GWT应用程序,其中它的RPC服务由GWTHandler bean处理,这样它就可以顺利地与Spring集成。该应用程序运行良好。没问题 我的问题是我不能用Spring做任何AOP日志记录。我喜欢使用AOP从GWT界面记录用户活动。(我当然可以用老方法为用户执行的每个操作调用RPC服务并记录这些操作,但这不是AOP方法)。我必须在AOP中这样做,因为这是客户的要求 我尝试使用普通的SpringAOP和一个通用的切入点模式“execution(*.(..)”)。它能够捕获除GWT服务之外的

我有一个GWT应用程序,其中它的RPC服务由GWTHandler bean处理,这样它就可以顺利地与Spring集成。该应用程序运行良好。没问题

我的问题是我不能用Spring做任何AOP日志记录。我喜欢使用AOP从GWT界面记录用户活动。(我当然可以用老方法为用户执行的每个操作调用RPC服务并记录这些操作,但这不是AOP方法)。我必须在AOP中这样做,因为这是客户的要求

我尝试使用普通的SpringAOP和一个通用的切入点模式“execution(*.(..)”)。它能够捕获除GWT服务之外的所有方法。所以换句话说,它是无用的。当然,我可以使用AOP记录后端SpringDAO,但是我如何知道它来自哪个RPC服务呢?这些DAO被许多类和方法使用(不限于GWT)

我试着探索GWT-ENT软件包。看起来不错。但是,它在客户端工作,并且您的类必须实现Aspectable。这意味着需要更改GWT应用程序上的所有客户端类。此外,您不能使用私有方法,因为要使用GWT-ENT处理AOP,您需要通过GWT.create而不是new()创建类。拥有私有方法会引发错误。我设置了一个简单的应用程序,但真正私有的方法不起作用

我尝试搜索GWT-SL包(我的GWTHandler来自哪里)。他们提到了一些关于AOP的事情,但是信息非常稀少。谷歌没有给我任何解决方案或例子

我已经尽了我所能去搜索谷歌,但是我找不到解决问题的方法

我只想通过AOP记录来自GWT服务的方法。假设客户机转到“报告”选项卡。然后他点击删除按钮记录。我想通过AOP记录该活动


我正在使用GWT(与SmartGWT一起)和Spring/Hibernate堆栈

SpringAOP只会在您的Spring上下文中建议bean的公共方法,因此GWT基础设施是不可用的,除非您通过Spring容器具体实例化它


您可以使用AspectJ的编译时编织将AOP连接到所有内容中,但这可能会有点混乱。除非您正在编译有问题的GWT类,否则它是否能工作也是不确定的。

Spring AOP只会在您的Spring上下文中建议bean的公共方法,因此除非您通过Spring容器专门实例化GWT基础设施,否则GWT基础设施就不存在了


您可以使用AspectJ的编译时编织将AOP连接到所有内容中,但这可能会有点混乱。除非您正在编译有问题的GWT类,否则它是否会起作用也不确定。

我将回答我的问题


我决定在DAO层上进行AOP日志记录,而不是在GWT服务器实现上执行AOP日志记录(理论上应该可以,但实际上不行)。只要确保您记录的是DAO而不是Hibernate会话

我将回答我的问题


我决定在DAO层上进行AOP日志记录,而不是在GWT服务器实现上执行AOP日志记录(理论上应该可以,但实际上不行)。只需确保记录DAO而不是Hibernate会话

GWT服务是由第三方类连接的SpringBean(GWTHandler,类似于Spring的SimpleRhlHandler,忘记了确切的名称)。现在,我正在评估AOP日志应该在哪里进行。我认为最好只记录DAO而不是GWT服务(因为几乎不可能记录它们)。一旦一切都清楚了,我会再次回复。GWT服务是由第三方类连接的SpringBean(GWTHandler,与Spring的SimpleURLHandler类似-忘记了确切的名称)。现在,我正在评估AOP日志应该在哪里进行。我认为最好只记录DAO而不是GWT服务(因为几乎不可能记录它们)。一旦一切变得清晰,我会再次回复。经过一些调查,我决定在DAO层而不是GWT(表示/服务层)中进行AOP日志记录,因为我们不关心用户选择删除记录的可视按钮。如果他删除一条记录,它将只使用一个特定的DAO。因此,AOP记录DAO层是有意义的。此外,我意识到我遇到困难的另一个原因是,以前处理我正在处理的项目的程序员混合了服务层和DAO层。两者之间应该有明确的区别。经过一些调查,我决定在DAO层而不是GWT(表示/服务层)中进行AOP日志记录,因为我们不关心用户选择删除记录的可视按钮。如果他删除一条记录,它将只使用一个特定的DAO。因此,AOP记录DAO层是有意义的。此外,我意识到我遇到困难的另一个原因是,以前处理我正在处理的项目的程序员混合了服务层和DAO层。两者之间应该有清晰的分隔。