我需要在java中开发一个应用程序,它使用客户端[embedded server] -server - ( - server) - (...)方法。 (提交时自动发送的数据)
工作流程(实体,验证,逻辑,会话)无处不在。在服务器 - 服务器连接中,使用EJB-s(实体和会话bean,将来可能也是消息驱动的bean)看起来合乎逻辑。客户端与本地“服务器”通话,或者 - 基于用户设置 - 与一个或多个真实服务器通话(服务器也可以与许多服务器对话)。
是否有可能(并且:简单)在本地使用EJB框架(没有运行本地Java EE服务器,以避免在客户端上安装和内存使用),以及它是否被认为是一个好的解决方案?或者我应该在客户端上实现不同的逻辑,并根据设置进行切换?哪个更容易?
答案 0 :(得分:0)
是的,有可能。 EJB 3.1 spec定义了一个可嵌入的EJB容器(第20章),可以在Java SE应用程序中使用,而无需Java EE应用程序服务器。
但即使在EJB 3.1之前,也有容易嵌入的容器,例如来自Apache的OpenEJB。
这是好还是坏当然是有争议的,但我认为如果有现有的EJB,你想在本地使用它们,那么为什么不呢。其他人可能更喜欢Spring,但我没有太多经验,所以我不能对此发表评论。
答案 1 :(得分:0)
完全可以在没有本地Java EE服务器的情况下从客户端调用EJB。
所有Java EE服务器都附带一个客户端jar,其中包含连接到Java EE服务器所需的类。您需要使用jndi.properties文件(或在获取初始JNDI上下文之前设置系统属性)为JNDI服务器提供配置,这就是全部。
我认为最初的规范是以客户端/服务器环境为目标进行的,并且在n层Web应用程序中意外结束。
如果确实需要在本地计算机上部署,可以考虑将应用程序部署到Java EE服务器中。 JBoss或Glassfish非常模块化,运行起来并不重。丢弃您不需要的模块并在其上部署您的应用程序。