1

我们正在设计两个不同的系统,可以通过以下典型示例进行模拟。

Web App #1 - 课程目录(允许更新/填充课程目录)

  • 教授
  • 课程(courseCode、professorId、先决条件列表、使用的年级)
  • 先决条件(要求课程代码和最低成绩)
  • GradeScale(即AF,1-100,通过/失败)

Web App #2 - 学生目录(处理学生注册新课程、查看成绩单等)

  • 学生
  • 成绩单(他们上过哪些课程以及最终成绩)

需要在两个系统之间传递的数据(将有更多的调用和需要来回传递的东西,但这给出了它是问题和答案的双向流动的想法):

  1. 学生是否有参加特定课程所需的先决条件?
  2. 从课程目录中提取详细信息以创建完整的成绩单

从阅读来看,我们的选择似乎是:

  1. 为底层数据模型创建 EJB,然后让 Web 应用程序使用 EJB 接口。
  2. 在两个应用程序之间使用 REST 或 Web 服务接口。
  3. RMI 或其他 Java 远程处理?

您会以哪种方式将其分解为 JAR/WAR/EAR?

4

1 回答 1

0

这最初是一条评论,但实际上太长了。

如果您只有简单的命令式服务(设置这个,做那个,这有效吗?),那么您可以选择基于 AXIS2/SOAP 的 Web 服务解决方案。(您可能不需要 SpringWS 的全部内容)。如果应用逻辑不太扭曲,我会遵循 KISS 原则。

我不知道您的系统场景,但是如果您使用的是完整的 RDBMS,那么数据库很可能会驻留在自己的机器上,因此有不同的池连接到它,这并不是什么负担。(如果您在每个 AS 上使用本地数据库,那么您稍后可能会遇到一些可伸缩性问题)。

在现代 Java EE 应用程序服务器中,您实际上可以使用来自另一台服务器的连接池(通过 jnp:// url),这只是 JNDI 查找的问题。

如果 db 引擎支持它,oracle 类似的 db 链接也是在应用程序之间共享数据库的好方法。

您可以通过在一个简单的 Java 项目中拥有一个业务/数据层来节省代码时间,该项目包含所有 ORM 内容,在 2 个 Web 动态项目之间共享,因此业务逻辑的最终更改将反映在两个应用程序上。

您也可以尝试混合方式(简单的命令式 Web 服务和数据库共享),这实际上取决于两个应用程序之间交换的消息。你可以提供一层web服务API(基于SOAP或jsonp),但要考虑到web服务本身的执行时间(有耗时的ws就不太好了)。

Web 服务和 EJB 很好,可能可以满足您的需求,真正的问题是:您真的需要它们吗?最近我看到很多项目都是从完整的 REST 开始的,在很多情况下,这就像用火箭筒杀死苍蝇一样。

如果要求很简单,那就保持简单。

于 2012-11-06T09:07:47.480 回答