【发布时间】:2015-01-21 15:36:50
【问题描述】:
早上好,
我一直在做一个我应该做的项目:
- 将应用程序从 JRockit 1.6 升级到 Java 7
- 升级应用程序以在 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