2010-06-22 92 views
0

我需要在java中开发一个应用程序,它使用客户端[嵌入式服务器] - 服务器 - ( - 服务器) - (...)方法。 (数据在提交时或自动发送)客户端上的EJB

工作流程(实体,验证,逻辑,会话)无处不在。在服务器 - 服务器连接中,使用EJB-s(实体和会话bean,未来可能还有消息驱动的bean)看起来是合乎逻辑的。客户端使用本地“服务器”或基于用户设置与一台或多台真实服务器(服务器也可能与多台服务器通信)通信。

在本地使用EJB框架(没有运行本地Java EE服务器,为了避免在客户端上安装和内存使用),是否可以(和:简单),以及是否它被认为是一个好的解决方案?或者我应该在客户端上实现不同的逻辑,并根据设置进行切换?哪个更容易?

+0

您是否真的需要**在客户端上运行EJB(或者只是调用EJB)? – 2010-06-22 16:59:55

+0

我需要在EJB(服务器部分)中实现一切,所以我想,“为什么要创建两个接口/实现做同样的事情?” – Dutow 2010-06-22 17:07:22

+0

大多数IDE允许您从无状态会话Bean中创建Web服务。 – 2010-06-22 20:28:06

回答

0

是的,这是可能的。 EJB 3.1 spec定义了一个可嵌入的EJB容器(第20章),可以在Java SE应用程序中使用,而不需要Java EE应用程序服务器。即使在EJB 3.1之前,也有容易嵌入的容器,例如,来自Apache的OpenEJB

这是好还是坏当然是有争议的,但我认为如果有现有的EJB并且你想在本地使用它们,那么为什么不呢。其他人可能会喜欢春天,但我没有太多的经验,所以我不能对此发表评论。

+0

我只试过将spring作为一个web/mvc框架,与数据库和应用程序分离。它对这种客户机 - 服务器 - 服务器...通信有(良好的)支持?在这种情况下,从客户端直接写入服务器数据库将会很糟糕。 – Dutow 2010-06-22 17:12:29

0

完全可以在本地不使用Java EE服务器的情况下从客户端调用EJB。

所有的Java EE服务器都附带一个客户端jar文件,其中包含连接到Java EE服务器所需的类。您需要使用jndi.properties文件为JNDI服务器提供配置(或者在获取初始JNDI上下文之前设置系统属性),就这些了。

我认为最初的规范是以客户端/服务器环境为目标制定的,最终偶然发生在n层web应用程序中。

如果您确实需要在本地计算机上部署,则可以考虑在Java EE服务器中部署应用程序。 JBoss或Glassfish是相当模块化的,它们并不那么沉重。丢弃你不需要的模块并在其上部署你的应用程序。