java - Jaxb 编码解码而不是 Java Bean

标签 java architecture jaxb javabeans

我有一个 Web 服务编排器,它调用多个 Web 服务。对于每个 Web 服务调用,我必须在调用下游服务之前编写冗长的映射代码。

编辑:我有每个服务的 wsdls,目前我已经使用 jaxb 生成了类。每个服务的响应都保存在一个公共(public)对象中,然后传递到下一个服务调用,其中我有一个转换器,它从这个公共(public)对象中选取值并填充下游请求 DTO。在决定调用哪个 Web 服务之前,编排逻辑在业务层中执行。发送到任何 Web 服务的元素数量最多约为 200 个。其中一些值是从传入请求中获取的,其中一些是默认的,还有一些是来自其他 Web 服务调用的值。

我希望减少映射类中样板 null 检查和获取/设置代码的数量,而不会对当前性能产生不利影响。

在我的场景中,Marshalling 和 UnMarshalling 以及使用 Jaxb 和 XML 工具读取和写入数据是解决此问题的更好方法吗?

无论如何,我的 Web 服务调用都是 SOAP 请求。 java bean 仅仅因为其他人都在使用它而在行业中使用吗?

如果使用 jaxb 编码/解编码不是可行的替代方案,是否有更好的方法(在性能和冗长方面)来解决此问题?

我尝试了 JXPath 和 Mapstruct,但是编写映射代码或覆盖抽象工厂对于这两个来说同样乏味。

最佳答案

不要把技术放在第一位。您的设计首先要考虑需求和约束,而不是技术。

因此,在不了解您的具体要求和限制的情况下,很难给出具体的建议。您在编排时是否有很多业务逻辑,或者只是传递?性能要求是什么?其他非功能性要求?服务复杂吗?他们是提前知道的吗? Web 服务的架构是否有效/良好?编排结构是静态的还是应该可以动态添加新服务?有多少数据经过?应该 build 还是可以购买?等等等等

这些只是我打字时想到的几个问题。根据答案,我会使用不同的工具集以非常不同的方式设计它。从简单的 XSLT 到成熟的 SOA 堆栈。

关于 JAXB,免责声明:我实际上是 JAXB 的忠实粉丝,多年来拥有非常好的使用经验。我已经使用 JAXB 解决了几次映射任务(如您所描绘的),例如使用 Dozer或者我自己的Copyable插件和接口(interface)。但除非您的要求和限制很明确,否则我不能推荐它。

关于java - Jaxb 编码解码而不是 Java Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27133028/

相关文章:

java - 如何修复此 gradle 依赖项解析错误?

c++ - 线程体系结构问题 C++ 消息传递

database-design - 数据仓库 RedShift 与其他 RDBM

java - 使用 JAXB 和 Spring-MVC 进行 XML 绑定(bind)

java - 将hyperjaxb采购订单教程导入Eclipse

java - 将一个正整数分解为至少两个正整数之和并返回最大乘积

java - 下一个按钮不增加变量 JSP

java - 拍摄优化 JVM 运行时的快照

heroku - Redis 可以帮助规避数据库连接限制吗