具有远程EJB的多次战争或战争的EAR

时间:2012-03-09 08:25:10

标签: architecture ejb war ear

我一直试图解决这个问题,并决定征求你的意见。

我正在构建几个共享一组通用数据和操作的应用程序。每个应用程序都有特定的数据需要添加,但是需要对特定应用程序提供的共享数据进行“鸟瞰”,比如“基础”或“固定”网络应用程序。特定申请的数量(可能)为20+,其中一些只是暂时的(比如4-6个月)。

当我刚刚开始使用这个项目时(在Java EE中),我创建了一个EAR,将共享的JPA实体和EJB放在EJB项目中,并在我进行时添加了WAR。我使用inheritence为每个应用程序添加特定数据。我很快就遇到了麻烦,因为我无法继承实体来处理不同的EJB项目,所以我最终得到了一个包含所有实体的大型EJB项目和一个带有表名的数据库,前缀是一个标识应用程序的字符串:a情况我不喜欢。此外,项目变得越来越怪,错误消息在开发过程中变得越来越奇怪,不得不删除所有构建和分配,并从头开始重建所有内容变得令人厌烦(NetBeans 7)。

因此,随着时间的推移,我决定抛弃EAR和继承并切换到单独的WAR并使用远程EJB来管理共享数据。耦合web-app - >鸟瞰图是通过本地EJB调用远程EJB并将共享数据添加到本地定义的实体来实现的,因此对于所有意图和目的,共享数据看起来像是本地实体的一部分。我对此并不满意,因为它似乎由于某种原因而过于松散地定义,并且还存在对性能的额外惩罚(此时此刻并不太糟糕,但可能是及时)。

我可以将两者结合起来(回到EAR并将远程EJB切换到本地但是沟渠继承)但是它又回到了不稳定的开发环境。此外,其中一个应用程序的一个小变化意味着必须部署所有内容。不知怎的,我认为这有一天会导致麻烦(例如当时打破不是1个但是20多个申请......)

你会怎么做?为什么?是否有人对规模相当的项目有任何经验,以及在开发过程中是如何进行的(即随着项目的发展经历任何问题)?

谢谢!

1 个答案:

答案 0 :(得分:0)

大声思考..

  

不要放弃继承权。使用它,而不仅仅是实体EJB   将POJO打包在一个单独的jar文件中。拥有所有的EJB   部署在一个单独的(大型)EJB项目中   让这些EJB公开RESTFul WS。

     

Webapps对EJB项目进行REST调用。 EJB   实体拉取数据,填充POJO并将其转换为JSON(或XML)   并将其发送到WebApp。

     

WebApp使用。重新创建POJO   序列化的JSON对象并在WebApp中使用它。这些POJO是善良的   数据传输对象..