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

Java跨web应用程序通信设计?,java,Java,我们正在设计两个不同的系统,可以通过下面的典型示例进行模拟 Web App#1-课程目录(允许更新/填充课程目录) 教授 课程(课程代码、教授ID、先决条件列表、使用的等级表) 先决条件(所需课程代码和最低等级) 成绩表(即A-F、1-100、合格/不合格) 网络应用程序#2-学生目录(处理学生注册新课程、查看成绩单等) 学生 成绩单(他们修了什么课程,期末成绩如何) 需要在两个系统之间传递的数据(会有更多的电话和东西需要来回传递,但这让人觉得这是一个双向的问题和答案流程): 学生是否具

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

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

  • 教授
  • 课程(课程代码、教授ID、先决条件列表、使用的等级表)
  • 先决条件(所需课程代码和最低等级)
  • 成绩表(即A-F、1-100、合格/不合格)
网络应用程序#2-学生目录(处理学生注册新课程、查看成绩单等)

  • 学生
  • 成绩单(他们修了什么课程,期末成绩如何)
需要在两个系统之间传递的数据(会有更多的电话和东西需要来回传递,但这让人觉得这是一个双向的问题和答案流程):

  • 学生是否具备参加特定课程所需的预科要求
  • 从课程目录中提取详细信息以创建完整成绩单
  • 从阅读中,我们的选择似乎是:

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

  • 你会用哪种方式把它分割成罐子/战争/耳朵?

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

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

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

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

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

    通过在一个简单的java项目中设置一个业务/数据层,并在两个web dinamic项目中共享所有ORM内容,您可以节省代码时间,因此业务逻辑的最终变化将反映在两个应用程序上

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

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


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

    共享同一个数据库不是可行的选择?还是通过视图发布数据?Ejb或Web服务很好,但如果我可以选择数据库共享,我不会使用它们。目标是在两者之间有一个非常松散的耦合,以便我们可以增量地升级它们。出于性能/安全原因,web应用程序必须保持独立。出于性能原因,数据集也可能被分开保存。这就是为什么我要探索SpringWS或EJB作为双方交流和相互提问的方式。是的,这就是我要走的路线。该结构将是一个多模块maven项目,在JAR中包含业务逻辑和域实体,以及各种web应用程序的WAR。双方可能共享或不共享同一个PostgreSQL数据库,因此SOAP/SpringWS是一种可能的解决方案。