代码片段如下:
private static void parser() {
File input = new File(Configurator.getTransactionConfigFile());
File rules = new File(Configurator.getDigesterRuleFile());
// TODO
try {
// 创建一个digester对象并制定解析规则
Digester digester = DigesterLoader.createDigester(rules.toURL());
// 不进行XML与相应的DTD的合法性验证
digester.setValidating(false);
// 利用创建的digester来应用规则
application = (Application) digester.parse(input);
log.info("---------------->TransactionConfigure.parser<----------------组成的报文:" + "\r\n" + application);
} catch (Exception e) {
e.printStackTrace();
log.info("----------------> e" + e);
throw new RuntimeException("解析交易配置文件[transaction-config.xml]错误!");
}
}
在本机运行时(java version"1.6.0_45";tomcat6.0;Myeclipse10): application = (Application) digester.parse(input); 可以得到我想要的数据(log文件中可以看到),并且程序运行正常。
但是将这个工程打成war包后放入weblogic11g启动运行后,application = (Application) digester.parse(input); 却不能得到我想要的数据了 application = null;
上网查看了资料,说是WebLogic自带的xml解析器与apache的commons-digester-2.1.jar以上的版本冲突,WebLogic不能兼容太高版本的xml解析器。建议换成commons-digester-1.7.jar或1.8.jar。但是更换后,情况依旧。
这个问题已经困扰我一周了,一直没有找到问题所在,请各位大神帮忙解决,在线等啊~!