【问题标题】:java applications architecture data exchangejava应用架构数据交换
【发布时间】:2014-03-24 21:20:04
【问题描述】:

我们正在开发更多的 Java 应用程序。非常简单的描述。

  1. 前端应用程序 - Web 应用程序,与用户交互
  2. 中间件应用 - 为前端应用提供一些功能
  3. 传输应用 - 与外部系统通信的应用。

这些应用程序通过 http 上的 xml 传输相互通信。 现实生活中的场景看起来像,用户在前端应用程序中创建一些操作,前端应用程序调用 中间件应用程序,通常中间件应用程序调用传输应用程序(通常调用其他一些外部系统)。 前端应用程序也可以直接调用传输应用程序,这取决于流程和业务逻辑等。 就像你看到的有很多 http 调用,前端应用程序创建 http 调用和调用中间件应用程序,中间件应用程序创建 http调用和调用传输应用程序,传输询问其他系统并将响应发送回中间件等。

我的问题是。这真的是很好的架构吗?对我来说,开销太大了。应该有其他更好的解决方案, 如何在应用程序之间传输数据,即使它们在一台服务器上运行。

99% 的数据都是通过 xstream 创建的简单 xml。 JMS 可能是适合的解决方案吗?

谢谢

【问题讨论】:

    标签: java jakarta-ee jms


    【解决方案1】:

    我同意你的观点,虽然它肯定可以正常工作,但在层之间进行 http 调用的方法可能有点笨拙。

    如果不同层之间的调用是异步的并且本质上是触发并忘记(您触发一条消息并且对目的地在收到您的信息)。尽管有些人使用 JMS 进行请求-回复,但我不认为它是面向消息系统的最自然和最优雅的用法。

    如果您正在做的是同步的(您调用后端并等待它响应您的请求)我会使用普通(无状态)会话 bean,它们的创建和管理在EE6。

    EJB 的另一个优点是您不会产生您描述的场景中所需的不同 XML 序列化和反序列化的开销。

    【讨论】:

    • 感谢您的回答。我们的调用是同步的,所以 JMS 不是选择。 EJB 的问题是,我们所有的应用程序都基于 Spring/Hibernate 方法。
    • @user1250015 除非您在像 Jetty 或 Tomcat 这样不应该成为问题的纯 servlet 容器上运行,据我所知,Spring 和 EJB3.1 应该能够一起工作......
    • 我们在 weblogic 服务器上运行,到目前为止我理解,它应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多