我们正在使用PrimeFaces(演示文稿),EJB 3.1(业务)和JPA(持久性)在JSF 2.0中开发Java EE Web应用程序。
我们希望使每个层独立,以便将来任何想要访问我们的应用程序的应用程序都应该能够轻松完成。
因此,我们计划将EJB作为Web服务调用公开。
我们发现我们的表示层看起来紧密耦合,模型和控制器与视图一起作为框架。
我们想知道如何将模型和控制器作为单独的服务公开,以便任何外部视图都可以轻松访问这些服务。
答案 0 :(得分:2)
您无法在JSF中单独公开控制器。这是由框架提供的Faces Servlet。
不要直接暴露模型。在JSF术语中,模型的入口是支持bean。这种类型的bean特定于页面,不应重复使用。
支持bean不应包含业务逻辑。相反,它只是委托给一个服务bean,它通常是一个EJB。
应该设计那些服务和它们使用的(JPA)实体,以便可以重复使用它们。这可以在稍后阶段通过JAX-RS,JAX-WS,远程EJB完成,或者可以将这些bean复制到jar并将它们包含在另一个应用程序中。
现在确保您的服务不依赖于任何UI包,并且他们不会尝试执行任何UI工作。担心在拥有其他应用程序时重用它们的确切方法。