使用Java EE(EJB)而不仅仅是简单的Servlet实现的主要原因是什么?
我正在开发一个新项目,主要是一个必须非常快速和可扩展的Web服务。
很抱歉有任何困惑,虽然我在Java方面经验丰富,但我对Java Web世界很陌生,可能不会很好地提出这个问题。
答案 0 :(得分:6)
EJB的规范1.x和2.x增加了大多数webapps不需要的复杂性。
由于这种复杂性,新框架似乎简化了开发和运行时架构(Hibernate / Spring /其他微容器/其他ORM框架)。
EJB的3.x匹配此更改(通过JDO和JPA),现在,使用带有这些增强框架的Servlet或带有EJB 3 +的Java EE将为您提供基本相同的结果。
使用Java EE Application Server会为您增加许多管理优势(GUI可用于管理池,日志,监控,事务等)。如果没有它们,您可能会得到相同的结果,但您必须手动完成所有操作(编辑配置文件)这可能看起来不太成问题,但是如果您计划拥有webapp的管理员那么最好使用这些服务器开箱即用的管理工具。
答案 1 :(得分:6)
Servlet是HTTP请求侦听器;他们无法回应其他任何事情。
如果在servlet中嵌入了大量逻辑,那么任何其他客户端都无法使用它。
在POJO中编写您的应用。在没有涉及应用服务器的情况下进行全面测试然后担心您希望如何打包和部署它。 Servlet的? EJB?网络服务?别的什么?没问题 - 这些只是打包和部署问题。首先获取您希望在POJO中正常工作的行为。
Spring可以为您提供很多选择。我推荐它。
答案 2 :(得分:2)
Web服务是无状态的吗?如果是这样,我认为使用完整的Java EE服务器而不是像Tomcat或Jetty这样的轻量级服务器没有任何真正的优势。您可以使用其中任何一个部署jax-ws实现,并且可以非常轻松地执行您需要的操作。如果涉及到某种状态,并且您最终希望在多台计算机上共享该状态,那么Java EE就可以派上用场。
话虽如此,我认为Java EE根本不会降低性能。应用程序服务器通常需要更长时间才能启动,并且需要花费更多精力进行管理,但一旦启动并运行,性能应该相似。
答案 3 :(得分:1)
如果您的Web服务可能需要任何程度的“企业”功能,例如按方法安全性或事务使用EJB。
使用EJB 3这实际上并不是很难,有几个注释而且你已经完成了。
否则servlet背后的简单POJO就足够了。