1
前言
本文阐述了
Apusic
对
XML
文件处理的详细分析,及其现有情况下
Apusic
对
XML
文件解析存在的问题。
2
Apusic
如何处理
XML
文件
Apusic
服务器对于
XML
文件解析应该分为两种情况:一种
Apusic
需要加载的
XML
文件。如
:Apusic
的配置文件,
J2EE
应用的
web.xml,application.xml
文件等。另外一种是用户代码中使用
DocumentBuilderFactory
,
SAXParserFactory
来解析自己的
XML
文件。对于上面两种情况的
XML
文件,
Apusic
是予以不同处理的。以下对此做具体说明。
2.1
解析
Apusic
的配置文件及其
J2EE
应用的
web.xml,application.xml…etc
对于这一块的解析,我们现在是采用自己的
XML
解析器来实现的,我们自己的
XML
解析器就是
com.apusic.xml.parsers
,
com.apusic.xml.reader
下的相关类来处理的,和朱华明讨论过,我们对于上述文件采用自己的解析器处理是存在优势的。因为我们对这些文件的结构很了解。效率应该会高于任何第三方的
XML
解析器。但是我们的解析器可能也会存在一些不足的地方,对于一些复杂的
XML
结构的处理可能会存在问题。由于考虑到效率问题,所以这一块应该不需要使用第三方的
XML
解析器,还是使用我们自己的解析器为好。
2.2
用户代码中解析自己的
XML
文件
用户应用程序使用
DocumentBuilderFactory, SAXParserFactory
对自己的
XML
解析时,由于我们在
Apusic.jar
中,对
META-INF/service/
文件夹下设置了
javax.xml.parsers.DocumentBuilderFactory , javax.xml.parsers.SAXParserFactory
两个属性的值,并指向了
Xerces,
所以用户在解析
XML
时,缺省情况下使用的就是
Xerces API
进行操作的。因此这一块应该是不会存在问题。
至于设置此属性后是如何利用
Xerces API
进行解析
XML
的原理,当你阅读了
Java
相关源代码后就可以明白。具体可以阅读
javax.xml.parsers
包下的
DocumentBuilderFactory.class,SAXParserFactory.class
类的
newInstance
方法。
3
现存问题分析
现在我们会遇到修改
Apusic
配置文件后,
Apusic
无法启动的情况。这种情况主要是因为我们使用了自己的
XML
解析器。而我们的解析器在处理
UTF-8
编码文件时存在问题,因为文本文件在文件的头部存在
BOM (Byte Order Mark)
标识
,
而这个
BOM
标识是用来表示文件的字节顺序。对于不同编码格式的文件存在不同的
BOM
标识
,
文件的
BOM
标识规范可以参考下表(表
1
),由于
UTF-8
文件不存在字节顺序的问题,所以这个文件
BOM
标识在
UTF-8
编码方式下是可有可无的。而当我们修改配置文件并保存后,如果存在
BOM
标识,我们的解析器就会出错,不存在
BOM
标识时,我们的解析器就能够正确工作。所以我们需要在解析
UTF-8
的时候,判断头部是否包含
UTF-8
的
BOM
标识,如果有就需要跳过去。代码修改主要是在
XmlReader.java
文件中做如下处理:
//skip UTF-8 BOM (byte order mark)
if (count >= 3 && pos == 0){
if (buffer[0] == (byte)0xEF &&
buffer[1] == (byte)0xBB &&
buffer[2] == (byte)0xBF){
pos += 3;
}
}
|
<!---->
<o:p>
</o:p>
UTF-8
|
EF BB BF
|
UTF-16 Big Endian
|
FE FF
|
UTF-16 Little Endian
|
FF FE
|
UTF-32 Big Endian
|
00 00 FE FF
|
UTF-32 Little Endian
|
FF FE 00 00
|
<o:p>
</o:p>
(
表
1)
<o:p>
</o:p>
为什么我们对
UTF-16,UTF-32
等编码方式文件存在
BOM
标识时没有问题呢?其实这个问题应该是
Java
的一个
bug
,
Java
的文本流在处理其他编码方式的时候能够很好的处理这个
BOM
标识,但是对于
UTF-8
编码时不能够正确处理。该
bug
可以参考以下地址:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
<o:p>
</o:p>
分享到:
相关推荐
金蝶中间件(Apusic)--license
在Apusic AS(一个基于Java的企业级应用服务器)中,调用commons-logging进行日志处理是一个重要的实践。本篇将深入探讨Apusic AS如何利用commons-logging来实现日志功能,以及相关知识点。 首先,理解commons-...
这一步通常是在应用级别的配置文件中完成的,例如`META-INF/apusic-application.xml`。在这个文件中,使用`resource-ref`元素将资源引用名称与数据源的JNDI名称关联起来。 ```xml <resource-ref> <res-ref-name>...
- 删除前请先做好文件备份。 #### 四、木马攻击排查手工方法 **背景介绍:** 随着网络安全威胁日益增多,定期进行木马攻击排查是保障系统安全的重要措施之一。 **排查方法:** 1. **检查`apusic/domians/*/...
金蝶中间件Apusic-plugins.zip是一个包含了一系列与金蝶Apusic中间件相关的开发插件的压缩包,主要用于帮助开发者在Eclipse或MyEclipse环境中进行应用程序的调试和开发。Apusic中间件是金蝶公司推出的一款企业级应用...
Apusic Web 服务器是 Apusic 应用服务器中内置的一个高效、安全、可靠的 Web 服务器,提供完整的 Web 服务器的功能,使 Apusic 应用服务器在提供对静态页面和图形的同时,提供对 JSP、Servlet 的高效服务。Apusic ...
apusic数据库连接攻略是apusic文件中的一种数据库连接策略,apusic是一个国产中间件,由金蝶中国开发。该攻略主要用于在apusic文件中配置数据库连接,以便在应用程序中使用数据库资源。 1. 配置数据源 在apusic...
标题"AAS-V10.zip"和描述中的"apusic"关键词指向了Apusic应用服务器,这是一款由中国万网(现阿里云)开发的企业级Java应用服务器,它为各种企业应用程序提供了一个运行平台。Apusic应用服务器遵循Java EE(以前称为...
首先,金蝶中间件Apusic是企业级的应用服务器,它提供了稳定、安全的运行平台,支持Java EE标准,可以处理大规模的企业级应用。Apusic插件则将这种强大的中间件功能与流行的开源IDE——Eclipse和MyEclipse进行了无缝...
在应对并发压力大、遭受网络攻击以及数据库压力大的情况下,对HP-UX + JDK + Apusic + SQL Server环境进行调优至关重要。在这种环境中,系统需要处理3000至8000并发连接,未来可能高达20,000人同时在线,同时还要...
项目包含39个文件,其中Java源文件17个,XML配置文件7个,Shell脚本5个,JAR包文件5个,以及少量Markdown、Git忽略、Idea项目文件和许可证文件。该工具通过整合源码仓库、代码指纹、构建环境、制品信息、内容与依赖...
2. **安装License**:将`license.xml`文件放置到Apusic Server的指定目录,或者通过配置工具进行导入。 3. **验证License**:启动服务器时,系统会读取并验证`license.xml`中的信息,确保软件的合法使用。 4. **监控...
综上所述,"ApusicServer 2013年开发版License" 主要涉及Apusic Server 的开发版使用许可,包含源代码和特定的XML格式许可证文件,对开发者而言,它不仅关乎软件的合法使用,还可能涉及到开发和定制的过程。
Windows2003+Apusic6.0安装部署手册 本手册旨在指导用户在 Windows 2003 操作系统上安装和部署 Apusic 6.0,旨在帮助用户快速掌握安装和配置 Apusic 6.0 的步骤。 一、安装准备 在开始安装 Apusic 6.0 之前,需要...
【金蝶王学军---基于Apusic的SOA解决方案】主要介绍了金蝶公司采用Apusic中间件构建的面向服务架构(Service-Oriented Architecture,简称SOA)的解决方案,该方案旨在解决企业在面对日益复杂和多变的业务需求时,...
Apusic OperaMasks很全的JSF的例子,什么都有,如:TREE 、GRID、FORM、BOX、MENU、DIALOG、AJAX。都很漂亮的。
本文聚焦于如何运用JProfiler这一业界公认的高性能监控与分析工具,对Apusic应用服务器进行全面监控与优化。 #### JProfiler:性能监控领域的佼佼者 JProfiler是一款屡获殊荣的专业Java性能监控与分析工具,以其...
Apusic应用服务器的用户管理是其核心功能之一,它允许创建、管理不同的用户和角色,以实现权限控制和安全管理。用户可以设置不同级别的访问权限,如管理员、开发者和普通用户,以满足不同团队成员的需求。同时,...