Java跨Web应用程序通信设计?

时间:2012-11-05 14:11:46

标签: java

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

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

  • 教授
  • 课程(courseCode,professorId,先决条件列表,使用的成绩等级)
  • 先决条件(courseCode和所需的最低成绩)
  • GradeScale(即A-F,1-100,通过/失败)

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

  • 学生
  • 成绩单(他们采取什么课程和最终成绩)

需要在两个系统之间传递的数据(将会有更多的调用和需要来回传递的东西,但这会让人觉得它是一个双向的问题和答案流程):

  1. 学生是否需要参加特定课程的预先要求?
  2. 从课程目录中提取详细信息以创建完整的成绩单
  3. 从阅读来看,似乎我们的选择是:

    1. 为底层数据模型创建EJB,然后让Web应用程序使用EJB接口。
    2. 在两个应用程序之间使用REST或Web服务接口。
    3. RMI或其他Java远程处理?
    4. 你会用哪种方式将其削减到JAR / WAR / EAR中?

1 个答案:

答案 0 :(得分:0)

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

如果您只获得简单的命令式服务(设置此项,请执行此操作,这是否有效?),那么您可以使用基于AXIS2 / SOAP的Web服务解决方案。 (你可能不需要整个SpringWS)。如果app逻辑没有太扭曲,我会遵循KISS原则。

我不知道您的系统方案,但是如果您使用完整的承诺RDBMS,那么数据库很可能会驻留在自己的计算机上,因此有不同的池连接到它,这不是很大的负担。 (如果你在每个AS上使用本地数据库,以后可能会遇到一些可扩展性问题。)

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

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

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

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

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

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