【问题标题】:Getting 'Missing Required Attribute' JiBX error after migrating to WebLogic 12迁移到 WebLogic 12 后出现“缺少必需属性”JiBX 错误
【发布时间】:2015-01-21 15:36:50
【问题描述】:

早上好,

我一直在做一个我应该做的项目:

  1. 将应用程序从 JRockit 1.6 升级到 Java 7
  2. 升级应用程序以在 WebLogic 10.3.5 环境中运行以在 WebLogic 12 环境中运行

我确信这无济于事,但我是 Java/Spring/WebLogic 世界的新手。

我能够从 JRockit 1.6 升级到 Java 7,但是当涉及到 WebLogic 部分时,我在启动应用程序时遇到了问题。

每次我这样做,我都会收到以下错误

org.jibx.runtime.JiBXException: Missing required attribute "a" (line 1, col 71)
at org.jibx.runtime.impl.UnmarshallingContext.attributeText(UnmarshallingContext.java:975)
at com.mydomain.JiBX_rule_def_bindingMungeAdapter.JiBX_rule_def_binding_unmarshalAttr_1_0()
at com.mydomain.JiBX_rule_def_bindingMutableRuleDefinition_access.unmarshal()
at org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(UnmarshallingContext.java:2757)
at org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(UnmarshallingContext.java:2900)

并且已经尝试调试它一段时间了。真正奇怪的是,当我从 Spring/WebLogic 环境中取出代码并执行它时,它工作正常(即解组数据)。

当它在带有 JRockit 1.6 和 JiBX 1.2.1 jar 的 WebLogic 10.3.5 环境中时,我遇到的问题为零。

这是我尝试过的

  • 将 JiBX jar 从 1.2.1 升级到 1.2.5
  • 将 xpp3 jar 升级到 1.1.3.4.O
  • 将 Spring jar 从 2.5.5 升级到 3.2.11
  • 尝试包含一个 weblogic.xml 文件(之前没有)并尝试使用

     <preferred-web-inf>true</preferred-web-inf>
    

但没有运气

  • 尝试包含一个 weblogic-application.xml 文件和一个 APP-INF 文件夹(以前没有)并尝试使用 JiBX 作为我的首选类进行解组

这里有一些关于我工作环境的更多信息

  • 非 Maven 环境(必须手动升级 .jars)
  • 使用 Java 1.7.0.45 和 .71
  • WebLogic 1.2.1.2
  • 春季 3.2.11
  • JiBX 1.2.5
  • 使用 MyEclipse 版本:2014 构建 ID:12.0.0-20131202
  • 没有 xsd 文件只是一个 .xml 绑定文件

    <binding>
    <mapping name="rule"
    class="com.mydomain.MutableRuleDefinition">
        <value name="a" field="a" style="attribute" />
        <value name="b" field="b" style="attribute" />
            <collection field="ruleElements">
                <structure name="ruleElement"
            type="com.mydomain.MutableRuleElement">
                <value name="c" field="c" style="attribute" />
                <value name="d" field="d" style="attribute" />
                    <collection field="values" item-type="java.lang.String"
                usage="optional">
                        <value name="value" />
                    </collection>
                </structure>
            </collection>
        </mapping>
    </binding>
    

这里是解组代码:

private MutableRuleDefinition unmarshalXMLRuleDef(String _xmlRuleDef) {
MutableRuleDefinition mruleDef = null;
try {
  IBindingFactory bfact = BindingDirectory
      .getFactory(MutableRuleDefinition.class);

  IUnmarshallingContext uctx = bfact.createUnmarshallingContext();

  mruleDef = (MutableRuleDefinition) uctx.unmarshalDocument(
      new ByteArrayInputStream(_xmlRuleDef.getBytes()), null);

} catch (JiBXException e) {
  logger.error("Could not un-marshalling the XML rule definition:["
      + _xmlRuleDef + "]", e);
}

显然这是 JiBX 1.2.1 中的一个问题,但在 1.2.2 中已修复:

https://www.mail-archive.com/jibx-users@lists.sourceforge.net/msg04200.html

任何帮助表示赞赏。如果您需要更多信息,请告诉我...

更新 #1

我试过了

<value name="a" field="a" style="attribute" usage=optional />

所有属性标志和解组都可以工作,但是,这些字段不是可选的,所以我不能用它作为修复。

更新 #2

fwiw,这是一个将被解组的示例

<rule a="dataForA" b="dataForB">
    <ruleElement c="dataForC1" d="dataForD1" />
    <ruleElement c="dataForC2" d="dataForD2" />
    <ruleElement c="dataForC3" d="dataForD3" />
    <ruleElement c="dataForC4" d="dataForD3" />
</rule>

【问题讨论】:

    标签: java xml spring weblogic12c jibx


    【解决方案1】:

    R 汉娜,

    我建议查看 JiBX 依赖项并确保所有 Jars 与 JiBX 使用的版本完全相同。我们使用了一些经常与 Web 服务器 jar 冲突的 eclipse 库。

    另外,请记住 JiBX 是开源的。您可能需要单步调试代码,看看是什么导致 JiBX 失败。

    还有一件事。我看不到您的架构定义,但奇怪的是错误似乎表明您缺少属性。你确定不需要'source'属性吗?

    祝你好运!

    唐·科利 JiBX 贡献者

    【讨论】:

    • 感谢您的提示。我更新了我的错误消息以反映 binding.xml 文件(即用 'a' 替换了 'source')。我查看了 JiBX 解组工作的环境(也在同一个 MyEclipse IDE 中)并将这些 .jar 复制到我的项目中,但仍然无济于事。错误似乎发生在 Unmarshalling.java (第 975 行)中:public String attributeText(String ns, String name) throws JiBXException 在调试时,我注意到工作版本正在使用 StAX 解析 XML,但非工作版本使用 XPP3,但 JiBX 使用 XPP3 对?
    • 此外,这个项目中没有使用模式定义,我们只有从 DB2 数据库中提取的 java 代码、binding.xml 和 .xml 本身。 (我已经在“工作”解组环境中进行了测试,并且可以正常工作)
    【解决方案2】:

    R 汉娜,

    在使用 1.2.5 版本的 jibx 后,我为我解决了这个问题,但是我确保所有相关的 jar 也更新到 1.2.5,并确保我的战争中不存在由前一个创建的陈旧类文件对我有用的罐子希望它能帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多