【问题标题】:Patterns : Java class conversion from axis objects模式:从轴对象转换 Java 类
【发布时间】:2008-10-27 16:30:50
【问题描述】:

我使用轴自动生成 Web 服务工件,然后我将其转换为在我们的应用程序中使用的对象。这样做有合理的模式吗?我们编写了转换方法来从轴创建的对象中输出我们的对象,在其他时候我们编写了一组中间的转换器类,将轴对象转换为我们的应用程序对象?有没有一种通用的方法来解决这个问题?

【问题讨论】:

    标签: java axis


    【解决方案1】:

    如果我理解正确,您想使用 Axis WSDL2Java 功能从 WSDL 生成代码,然后将其映射到您现有的应用程序对象模型。在这种情况下,您可能需要考虑将 Axis 与 JiBX 绑定一起使用。

    【讨论】:

      【解决方案2】:

      如果目标是将“生成的轴”转换为您的业务对象,您可以尝试使用类似推土机 (http://dozer.sourceforge.net/) 的工具,它是一个“映射器”,可以从对象实现复制到另一个实现。 它不知道如何使用它(我认为您必须在 xml 文件中解释翻译)然后它应该可以工作(我自己没有使用但一些同事将它用于类似目的并且它似乎可以工作)

      【讨论】:

        【解决方案3】:

        我想有一种常识方法可以做到这一点。抽象一点你的思想并想象层次。

        1. 您将获得一个包含基本 IO 以及可能基本会话功能和/或凭据的库。
        2. 创建一个转换层。在这里,您将放置构建应用程序相关对象所需的所有代码。为您的应用程序提供一个漂亮的界面来完成这一层。

        转换层可以通过多种方式完成。

        • 如果转换简单,可以将第一层和第二层几乎合二为一。扩展 POJOS 以提供转换功能。这将为您提供至少两段代码,自动生成和扩展+功能

        • 如果我们谈论需要转换为多个小型应用程序对象的大型 XML。好的,保持第一层不变,第二次使用:

          • 命令模式:封装转换。
          • 如果转换也变得混乱:责任链将帮助您生成转换树。

        希望对你有帮助

        【讨论】:

          【解决方案4】:

          过去我们也遇到过类似的问题。最近,对于我们让 Axis 为其生成工件的复杂 Web 服务,我们最终得到了 157 个 Java 类,其名称类似于“MaintainOffersRequestTypeReqReqDataMaintEnhancementCancellationReason”。

          我们最终编写了将这些 Axis 生成的对象转换为业务对象的类,类似于您的上一个想法。我不知道这是否是最好的方法,但它肯定是一个可行的解决方案。

          【讨论】:

            【解决方案5】:

            如果您使用的是 Axis 1,那么您的业务类与 Axis 数据类具有相同的限定名称,并且适用其他一些条件,您可以使用您的业务类代替 Axis 类,而无需进行任何设置。我们已经这样做了很多次了。

            对于 Axis 2,我们遇到了除 ADB(默认)之外的数据绑定问题,因此我们广泛使用 Apache Commons Beanutils 在 Axis 类和我们的业务类之间来回复制数据。

            【讨论】:

              猜你喜欢
              • 2016-09-24
              • 2010-11-17
              • 2015-09-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-14
              • 2012-10-02
              相关资源
              最近更新 更多