在Tomcat FAQ上说:“ Tomcat不是EJB服务器。Tomcat不是完整的J2EE服务器。”
但是如果我:
那我是否没有有效的Java EE应用服务器?然后不是我的bean EJB吗?还是还有其他一些定义性特征?
符合Java EE的应用程序服务器为您提供了什么,使您无法轻松地/容易地从Tomcat与某些第三方子系统之间获得信息?
但是,如果我添加(…),那么我是否没有有效的Java EE应用程序服务器?然后不是我的bean EJB吗?还是还有其他一些定义性特征?
不,您没有Java EE应用程序服务器,成熟的Java EE应用程序服务器不仅仅是Tomcat + Spring +独立的事务管理器。而且,即使添加了JMS提供程序和EJB容器,您仍将没有Java EE服务器。所有部件之间的粘合对IMO很重要,并且是Java EE容器附加值的一部分。
关于EJB,EJB规范比JPA还要多,并且还规范了会话Bean和消息驱动的Bean(实际上,即使出于历史原因,即使JPA是Java EE 5中EJB 3.0规范的一部分,我也不认为JPA实体是EJB。 -在Java EE 6中不再是这样,JPA 2.0和EJB 3.1是单独的规范。我还应该提到一个带有注释的Spring Bean @Transactional不等同于Session Bean。Java EE容器可以对会话Bean进行更多操作(请参见下文)。尽管您可能不需要它们,但它们并不是严格等同的。
@Transactional
最后,Java EE容器实现一个标准,Spring容器没有实现,它是专有的。
正如我所说,我认为“胶水”是附加值的一部分,对整体的坚固性有很大贡献。然后,ewernli的答案很好地强调了难以实现的目标。我只是添加:
是的,一个好的Java EE服务器将做得很整洁,以提高容错能力(连接池,JNDI树,JMS目标,对等豆的自动重试,智能EJB客户端,事务恢复,服务迁移等)。对于“关键任务”应用程序- 绝大多数不是-这很重要。在这种情况下,Servlet API之上的库不能替代IMO。