部署多层应用程序

| 我想构建和部署我的第一个Java EE 6多层应用程序,并在Glassfish 3.1的单独物理服务器上运行Web和业务层。 我认为我从理论上的高水平理解了什么,但是在细节和细节上不清楚。 我目前的计划如下: 在NetBeans 7中创建Maven企业应用程序。 通过远程接口公开Session Facade EJB。 让JSF Backing Bean通过JNDI查找利用Session Facade EJB。 将EJB JAR部署到一台服务器,将Web WAR部署到另一台服务器。 我非常感谢您提供以下指导: 应用程序结构。 使用单独的服务器纠正JNDI查找。可以注射吗? 建立适当的档案。 部署配置以允许层进行通信。     
已邀请:
        正如其他人在评论和答案中指出的那样,您选择了一条艰难的道路。 让我们从您的应用程序结构开始。您将最终获得四个成就...您将部署两个: EJB远程接口的“常规” jar(接口的jar) 具有您的EJB实现的EJB jar 一个EAR归档文件,其中将包含接口jar(在/ lib子目录中)和EJB jar(在\'root \'中)。 一个WAR文件,其中包含使用EJB的Remote接口的代码。这将在WEB-INF / lib中具有jar-of-interfaces。 该答案的其余部分基于EJB FAQ。该文档最适用的部分在这里。 您可以将EJB注入ManagedBean。您无需在ManagedBean中使用点查找方法。 您将需要在glassfish-web.xml文件中为bean使用corbaname。     
        除非您知道每秒将处理许多请求,或者拥有非常大量的数据和/或大量CPU的业务逻辑,否则从两层都部署在同一应用程序服务器上开始,应该会很好。通过使用本地接口部署到单个Glassfish应用程序服务器开始,可以跳过运行时环境中的许多复杂性。 反过来,这将允许您使用Web层中最简单的@ EJB-injection形式来访问业务层中的会话外观。本地接口速度更快,因为应用程序服务器可以在层之间传递引用而不是RMI代理,并且可以跳过JNDI查找。您以后总是可以更改注释,或者如果以后发现其他原因将这些层部署在单独的服务器上,则可以引入远程接口。 Glassfish支持群集,因此您可能不必显式地将两层分开-所有这一切都取决于实际的使用模式,因此性能监视是关键。 正确的做法是将Web层部署为WAR,将业务逻辑部署为EJB jar。根据应用程序的大小和逻辑结构,您可能需要将其分解为多个模块。 Maven负责构建档案。确保为每个war和jar档案定义一个子项目,再加上一个用于组装EAR文件的子项目。后一个项目将提取其他子项目产生的war和jar文件。将所有项目与主Maven项目和voila串在一起,您可以灵活地分别构建每个组件,构建整个组件或它们之间的任何组合。     

要回复问题请先登录注册