2 qqlong gyl qqlong_gyl 于 2014.03.11 16:33 提问

Digester+weblogic中digester.parse(input)为null

代码片段如下:

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。但是更换后,情况依旧。

这个问题已经困扰我一周了,一直没有找到问题所在,请各位大神帮忙解决,在线等啊~!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!