【问题标题】:When must I use an application server?我什么时候必须使用应用服务器?
【发布时间】:2014-03-20 15:39:25
【问题描述】:
我已经阅读了一些关于Web Server和Application Server之间差异的帖子和答案......主要是应用程序服务器可以服务于HTTP以外的其他协议并提供EJB的事实。问题是,我从来没有真正理解 EJB 是什么。我对这个主题阅读的越多,我似乎理解的越少……
总而言之,我无法理解 EJB 带来了什么无法通过简单的 Java 类实现的其他方式?
而且,由于我无法理解这一点……我无法理解何时需要应用服务器。 Apache Tomcat(例如)何时不足以满足我的需求?什么会迫使我使用应用服务器?
【问题讨论】:
标签:
web-services
web-applications
ejb
【解决方案1】:
嗯,您实际上可以使用 tomcat 进行 Java EE 开发,但是您需要携带很多库 (.jar) 才能使用它,这取决于规范的实现(例如:redhat jpa vs oracle jpa ) 你可以混合一些库并最终得到一个难以维护的系统。
应用服务器是指具有高度集成(和测试)完整 Java EE 堆栈的服务器的术语。例如,根据规范,Tomee、Wildfly 和 Glassfish 足以编写和运行使用 jpa、ejb、jsf(以及所有 Java EE 规范)的应用程序。此外,您可以通过最少的努力在应用服务器之间进行迁移(嗯,这说起来容易做起来难)。
Web 服务器 (á la tomcat) 更面向 servlet,您只需运行最少的规范,因此,您需要自己添加接口和实现(是的,无数的 .jar,相信我,你不想要这个项目)。我会为不依赖于 java ee 基础设施的网站推荐 tomcat,除非你喜欢使用 Spring(一些 jars 可以添加,但更容易且集成良好)。
如果您需要 Java EE 应用程序,请保持简单并使用 App Server;另一方面,如果您是 Spring 的忠实拥护者,请使用 Tomcat+Spring,但是,看在上帝的份上,不要将两者混合使用同一应用的同一时间。
【解决方案2】:
如果你使用 tomcat,你可以使用 springframefork。正如所说的弹簧参考只有一件事不能使用弹簧制作,但可以使用EJB制作。并且是两个不同应用服务器之间的分布式事务抛出远程调用。