早上好,
我一直致力于一个我应该做的项目:
我确信这不会有帮助,但我是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环境中时,我没有问题。
这是我尝试过的事情
尝试包含一个weblogic.xml文件(之前没有一个)并尝试使用
<preferred-web-inf>true</preferred-web-inf>
但没有运气
以下是有关我在
工作的环境的更多信息没有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>
答案 0 :(得分:0)
我建议查看JiBX依赖项并确保所有Jars与JiBX使用的版本完全相同。我们使用一些经常与Web服务器jar冲突的eclipse库。
另外,请记住JiBX是开源的。您可能希望单步执行代码并查看导致JiBX失败的原因。
还有一件事。我无法看到您的架构定义,但奇怪的是,错误似乎表明您错过了一个属性。你确定的来源&#39;属性不是必需的。
祝你好运!
唐科利 JiBX撰稿人答案 1 :(得分:-1)
我在使用1.2.5版本的jibx之后为我解决了这个问题但是我确保所有相关的jar也更新到1.2.5并且确保我的战争中没有过时的类文件由前一个创建为我做伎俩的罐子希望它可以帮助你。