【问题标题】:Spring Rest WS: How to handle multiple XML payloads in single endpoint?Spring Rest WS:如何在单个端点中处理多个 XML 有效负载?
【发布时间】:2016-10-22 06:01:43
【问题描述】:

我正在创建一个 Spring REST WS 端点(只需要公开一个外部 url)。客户希望我们在收到请求后立即确认(200 OK)并在后台处理它。客户端可以为不同的请求在请求正文中发送不同类型的 xml 有效负载。例如:在一个请求中,客户端可以发送员工数据以添加到 xml 有效负载中,而在另一个请求中,他们可以发送客户数据以进行进一步处理。

在最简单的解决方案中,我们可以这样做:

  1. 创建带有 JAXB 注释的 POJO(客户、员工) 通用抽象类;例如RequestPayload 什么的) 对应于每个可能的 xml 有效负载,
  2. 在控制器上检索 xml 有效负载作为字符串,确定根 元素名称(“员工或客户”...)和
  3. 使用我们的解组器(使用 JAXB 创建)来转换 xml 字符串 到员工/客户 POJO 实例并将此引用存储在 请求有效负载变量。

  4. 做进一步的服务器端处理..

只是不确定这是否是一个优雅的解决方案..

spring 是否为 MessageConverters 提供任何功能/扩展,让我们以更简洁/优雅的方式执行步骤 1-3?

提前致谢。

【问题讨论】:

    标签: java xml spring spring-mvc jaxb


    【解决方案1】:

    你的问题看起来像EIP Content-Based Router。 Camel 可以通过以“优雅”的方式检查消息正文来帮助您将消息路由到不同的端点,并且 spring 支持骆驼非常好。

    美妙之处在于骆驼可以将诸如路由之类的关注点从您的业务逻辑中分离出来,您可以稍后添加更多消息格式而不会影响业务逻辑。

    【讨论】:

    • 感谢 Raymond 的回复,但我实际上是在 Spring 框架中寻找类似的东西。
    猜你喜欢
    • 2017-05-04
    • 2019-04-09
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    相关资源
    最近更新 更多