java RMI-service中的常见事务逻辑?

Rop*_*Rop 5 java rmi jdbc rmic jrmp

我们有几个遗留的Java服务与RMI-api,由旧的JRMP方法实现,需要'rmic'预编译.

作为将所有内容迁移到最新JDK的一部分,我还尝试将RMI内容重写为更新的方法,其中实现类从UnicastRemoteObject扩展,从而摆脱了rmic预编译步骤.

下面是一个简单的例子,如下所示:https: //www.mkyong.com/java/java-rmi-hello-world-example/ 但我无法通过提交/回滚事务逻辑找到这样的示例.

在当前的遗留代码中,所有事务逻辑都在JRMP容器代码中的单个公共方法invokeObject()中处理,该方法将在一个地方拦截所有 RMI api调用,并且如果RMI调用是如果抛出异常,则成功或回滚.

在没有JRMP容器存在的新方法中,我无法弄清楚如何做到这一点.显然,我不想将提交/回滚逻辑编码到每个api方法中(它们有很多种),但仍然将统一逻辑保存在一个地方.

任何建议,提示,参考等,如何在一个点上拦截所有RMI调用来实现事务逻辑?

df7*_*899 1

我不知道你是否已经考虑过这一点,一种能够很好地满足 RMI 和事务边界双重要求的可能性显然是 Spring。Spring Remoting 的一个示例在这里

@Transactional注释广泛用于声明式事务管理 - Spring 会自动将您的 bean 包装在 AOP 事务顾问中。

然后,这两者可以很好地结合在一起,例如使用可以作为远程服务导出的单个事务 bean。

上面的 Spring Remoting 链接基于 Spring Boot,这是一种简单的入门方法。默认情况下,Boot 希望将嵌入式服务器引入到环境中,尽管可以禁用此功能。同样,还有其他选项,例如独立的AnnotationConfigApplicationContextWebXmlApplicationContext现有 Web 应用程序中的。

当然,对于寻求建议的问题,任何回复中都会包含意见的成分 - 如果短期内看不到其他建议,我会感到失望。