我们正在尝试将大型的单片J2EE应用程序拆分为一组模块,以为所有Web应用程序客户端提供统一的业务逻辑。
我们的目标是拥有更小,更专业的业务模块,以供许多不同的Web应用程序以任何组合使用。这样,我们希望应用程序变得更易于单独维护(与现在高度耦合的单片应用程序相比)。
我们正计划将其安排如下图:
上层的Web Apps调用模块服务以通过方法调用处理业务逻辑(RMI是预期的协议,但我们对其他选项持开放态度。)
J2EE使得通过EJB远程bean在三层上安排服务变得容易。
但是我们还试图将这些模块设置为Spring Boot应用程序(使用Spring Boot JPA Starter),因为它使开发更加方便。
我最初的计划是使用Spring Boot实现模块,并在服务的实际实现中向EJB bean展示一薄层EJB bean作为代理。 EJB bean将使用SpringBeanAutowiringInterceptor
类as in spring v4 documentation注入spring bean。
但是由于这种集成was removed from spring v5,我不知道如何进行。
如上所述,他们还考虑“ EJB作为一种已被弃用的技术”。但是对于我的用例,我找不到足够好的替代方法。
到目前为止,我已经想到了以下选项:
按优先顺序排列的目标是:
上面所说的全部五个选项(或者也许我没有考虑过的另一个选项)将是最好的方法,为什么?