GWT的servlet实现有onBefore / onAfterDeserialization,它会给我一个钩子来启动和停止事务而不做任何花哨的事情,但是这些方法不允许我在调用服务方法后正确检查错误条件,I只是有权访问序列化的返回值,而不是直接访问可能抛出的任何异常,因此如果不重写GWT servlet的部分,就不可能以这种方式决定是否回滚。
我在考虑使用aspectj的编译时编织。但是,这不适用于Netbeans的编译保存功能,因为需要使用aspectj编译器重新编译模块。
LTW(加载时间编织)怎么样?有没有办法(或示例)在不使用Spring框架的情况下将LTW添加到webapp容器中?
我还在考虑使用基于Java动态代理的AOP,即。将代理放在servlet前面。同样,问题出现了如何告诉Jetty WebApp容器加载代理而不是原始servlet。
或者那里有任何现成的解决方案吗?
答案 0 :(得分:0)
我认为你可以覆盖一个组合
来自public String processCall(RPCRequest rpcRequest)
和RemoteServiceServlet
的{{1}}来做你想做的事。
不理想,因为你需要复制/粘贴几行代码,但它们实际上只是少数代码。 我自己遇到了同样的问题,因为我需要一些自定义,并且相关的方法没有我需要的访问修饰符,所以我最终复制/粘贴了一些部分。
我无法评论您的其余问题,但我不希望找到任何现成的解决方案,因为GWT-RPC似乎没有任何新的粉丝;只是维护遗留系统的人因此,我希望您找不到任何内容或找到不再维护的解决方案。