教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Xml解析校验引起的依赖问题

Xml解析校验引起的依赖问题

发布时间:2018-10-18   编辑:jiaochengji.com
教程集为您提供Xml解析校验引起的依赖问题等资源,欢迎您收藏本站,我们将为您提供最新的Xml解析校验引起的依赖问题资源
 
<span>       </span>假期结束,开始收心回来继续工作。晚上有一个项目要发布,公司的同事突然打手机给我,说ASF的文件解析又出了上次的问题,希望尽快解决。
 
<span style="FONT-SIZE: 14pt">问题描述:</span>
 
上一次问题:
多台机器运行同一个分支的应用,但是有些机器正常,有一台机器始终在启动的时候报文件解析错误,从提示看来,主要是因为解析配置文件的时候校验dtd失效,这台机器无法连接外网。最后降低了我们内部的核心解析包,问题解决(或者让这台机器连接到外网)。(当时由于自己手头工作比较多,也没有在意,既然解决了就随之过去了)
 
此次问题:
<span>       </span>问题的提示和上次的类似,不过这次的机器时连接外网的。
 
<span style="FONT-SIZE: 14pt">问题查找:</span>
<span>       </span>解析出错的文件是ASF(SCA的服务框架)的组件配置文件(composite文件),格式为xml的格式,解析方式是通过StAX标准来实现的。
<span>       </span>按照上一次的解决方法,我将内部的tuscany0.998降级到tuscany0.997,解析正常。看了一下我对于这两个版本升级作的修改,主要是支持了SCA框架中的Spring配置文件能够使用import的标签,内签多个标准的spring文件。
<span>       </span>跟踪代码内部发现,果然是在解析某几个spring的配置文件时出现了问题,比较了一下ASF的Spring(正常解析)和标准的Spring配置文件,差别主要是在关于Xml的校验申明的区别。ASF的Spring配置文件是由ASF Spring插件来自己解析的(采用Schema申明(固定的Target namingspace),因此早先所有的ASF的Spring我都要求大家采用Schema的校验申明),而对于原来不是ASF的spring都是采用dtd的校验方式申明(互相拷贝导致都是这样)。下面就是两种申明:
 
Schema:
<beans <span style="COLOR: red">xmlns="http://www.springframework.org/schema/beans"</span>
<span>    xmlns:sca="http://www.springframework.org/schema/sca"</span>
<span>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span>
<span>    xsi:schemaLocation="<span style="COLOR: red">http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd</span></span>
<span>    http://www.springframework.org/schema/sca http://www.springframework.org/schema/sca/spring-sca.xsd"></span>
 
Dtd:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<span style="COLOR: red">http://www.springframework.org/dtd/spring-beans.dtd"></span>
 
<span>       </span>早先由于在0.997版本中没有支持import,因此也就不会去解析那些不是ASF的Spring文件,而现在因为需求支持了import所以需要解析那些原来不属于ASF的Spring的配置文件。因此降低版本不是解决问题的办法。
<span>       </span>进一步跟进问题,发现是在解析Dtd的申明时候出现问题,抛出异常说连接超时。通过IE访问了一下dtd的地址,的却也是有问题,无法连接。

您可能感兴趣的文章:
Xml解析校验引起的依赖问题
php为什么要用依赖注入?
Jquery validation remote 验证的缓存问题解决方法
Golang包管理工具govendor的使用
maven的eclipse插件运行不正常如何解决
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
golang Modules 依赖管理工具使用
RPM包管理器的使用说明
Golang包管理详解
Go 语言包管理机制深入分析

[关闭]
~ ~