我正在开发一个项目,我们需要构建连接到一个数据库的几个“独立”模块。这些模块主要是后台业务流程,所以没有太多的前端。除了一个Web模块显示数据并允许基本的CRUD功能。为此,我们计划使用以下技术:Java EE vs Standalone
- JPA2(使用Hibernate,JPA实现)
- CDI(使用弹簧实现)
- JSF2 + primefaces(我们的Web模块)
最初的计划是为每个模块创建一个jar文件(使用main方法),并通过服务包装器将其安装为(windows)服务。对于我们的Web模块,我们将使用Glassfish或JBoss来运行它。但是,最近Java EE出现在我们的脑海里。我们可以在Glassfish或JBoss等Java EE容器中运行我们的所有模块,而不仅仅是我们的Web模块。对于我们去Java EE的案例,有一些问题:
- Can/should we use CDI with spring?或者我们应该切换到EJB3?
- 当我们从容器中使用它而不是独立模块时,JPA会带来什么后果?有什么区别吗?
- 由于我们的大多数模块都与Web无关,因此在Java EE容器中运行它们仍然有意义吗?
感谢您向我展示的缺点!关于使用JEE的entitymanager,我们不是只有1个实例,而不是独立的,每个JVM有1个实例(/模块)?这会对hibernate缓存产生影响吗? –
为防万一有人认真对待这个问题,请注意,如果您只是使用两个不同的容器,一个用于网络的一个容器,几乎所有的缺点都会消失。实际上,每件事物都使用一个容器。与CDI,JPA统一标准容器的优点是什么不是巨大的。至于开发效率,eclipse也可以提供与java ee容器类似的转换。唯一需要修改的是关闭批量容器的http侦听器。只是说不要春天或任何非标准 - java ee 7已被批准,你会得到一大堆好东西。 – necromancer
@RobeEleckers另外一个容器本质上是一个jvm,所以如果你只是关闭你正在运行一个批处理java进程的网络监听器。 – necromancer