目前,我们正在对大学,我们想实现的逻辑模块和UI模块项目。 我们没有经验部署Web应用程序,但是我们提出了以下方案:
- 其部署为一个WAR项目(这将解决我们对与我们的应用程序的后端通信的UI的问题)。
- 在部署Web服务使用的项目之间的通信在同一台服务器两个战项目。 (我们使用这种方法部署在Tomcat服务器上的原型)
- 部署WAR项目和EJB项目。
- 部署一个EAR项目,该项目将包含对战争和EJB项目引用。 (我们使用这种方法部署在GlassFish服务器上的一台样机)
我们想知道,如果这些替代品的不正确,或者是否有任何替代品是优于其他。 具体来说,为什么会部署项目作为EAR模块是有用的(或不)?
该项目现在已经开始,所以我们只会现在处理一对夫妇的数百个用户。 但是,如果项目成功,我们需要应对用户的几百万。
该办法都没有是不正确的,虽然Tomcat是一个servlet容器,如果你想要的EJB存在,你就需要像TomEE是Tomcat的扩展到全EE支持。 或使用Glassfish的。
什么是最好的取决于你的具体要求:你需要的模块/值更脱钩,或者你宁愿你得到的东西捆绑在一起的一致性和可靠性。 EJB的也有可能会感兴趣的一些额外的好处,但他们没有相关的每一个项目。 需要注意的是,除了提到的替代品,还有其他的,比如基于JMS的通信,HTTP REST通信和使用OSGi去耦包。
关于为什么它会是有用的部署将项目作为EAR模块,引用维基百科:“EAR(企业档案)是用于包装一个或多个模块到一个单一的存档使用Java EE的文件格式,使各个模块的部署到应用服务器同时连贯地发生了。它还包含一个名为它描述了如何部署模块部署描述符XML文件。“ 所以基本上你得到的耦合是归结为可靠性的好处,你总是知道你的模块是如何不同于彼此部署。 EAR模块支持EE机制,如EJB模块,很好,你会得到一个可控的容器。
已经有一个线程什么时候适合使用的EAR和您的应用程序时,应在战争中? ,这可能会感兴趣。