简体   繁体   中英

Getting 'Missing Required Attribute' JiBX error after migrating to WebLogic 12

Good morning,

I've been working on a project where I'm supposed to:

  1. upgrade the application from JRockit 1.6 to Java 7
  2. upgrade the application to run in a WebLogic 10.3.5 environment to run in a WebLogic 12 environment

I'm sure this doesn't help but I'm new to the Java/Spring/WebLogic world.

I was able to upgrade from JRockit 1.6 to Java 7 but when it comes to the WebLogic part, I've been having issues starting the application.

Every time I do, I get the following error

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)

and have been trying to debug it for a while now. What's really weird is that when I take out the code from a Spring/WebLogic environment and execute it, it works fine (ie, unmarshalls the data).

When it was in the WebLogic 10.3.5 environment w/ JRockit 1.6 and JiBX 1.2.1 jars, I had zero issues.

Here's what I've tried

  • upgraded JiBX jars from 1.2.1 to 1.2.5
  • upgraded xpp3 jars to 1.1.3.4.O
  • upgraded Spring jars from 2.5.5 to 3.2.11
  • tried including a weblogic.xml file (didn't have one before) and try to used the

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

but no luck

  • tried including a weblogic-application.xml file and an APP-INF folder (didn't have one before) and tried to used the JiBX as my preffered class for unmarshalling

Here is some more information about the environment I'm working in

  • Non Maven Environment (had to upgrade .jars manually)
  • Used Java 1.7.0.45 and .71
  • WebLogic 1.2.1.2
  • Spring 3.2.11
  • JiBX 1.2.5
  • using MyEclipse Version: 2014 Build id: 12.0.0-20131202
  • no xsd file just a .xml binding file

     <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> 

Here is the unmarshalling code:

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);
}

Apparently this was an issue back in JiBX 1.2.1 but was fixed in 1.2.2 :

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

Any help appreciated. Please let me know if you need more info...

Update #1

I have tried

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

on all the attribute flags and the unmarshalling will work, however, these fields aren't optional so I can't use that as a fix.

Update #2

fwiw, here is an example that would come into be unmarshalled

<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>

R Hanna,

I would suggest looking at the JiBX dependencies and making sure all of the Jars are the exact same version as the ones used by JiBX. We use some eclipse libraries that often conflict with web server jars.

Also, remember that JiBX is open source. You may want to step through the code and see what is causing JiBX to fail.

One more thing. I can't see your schema definition, but it is strange that the error seems to say that you are missing an attriburte. Are you sure the 'source' attribute is not required.

Good Luck!

Don Corley JiBX contributor

R Hanna,

I got this resolved for me after using 1.2.5 version of jibx however i made sure all the related jars also updated to 1.2.5 and made sure there are no stale class files present in my war which were created by the previous jars that did the trick for me hope its helps you .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM