论文部分内容阅读
摘要:在J2EE架构中集成XML技术是一种可扩展性很强的组合。文章讨论了J2EE架构中XML技术在数据描述和交换、数据显示以及面向消息的分布式计算等方面的应用。
关键词:J2EE;XML;JSP;XSLT;EJB;message-oriented
中图分类号:TP391文献标识码:A 文章编号:1009-3044(2008)35-2147-03
The XML in J2EE
CAI Xiao-nan
(Software College, TongJi University, Shanghai 201804, China)
Abstract: Integrating XML solutions into J2EE framework is an extensible combination..The authors discuss the application of XML in message-oriented distributed computing,data present and data descrption and exchange in J2EE.
Key words: J2EE; XML; JSP; XSLT; EJB; message-oriented
1 引言
XML全称是Extensible Markup Language ,意思是可扩展的标记语言,它是标准通用标记语言SGML(Standard Generalized Markup language SGML)的一个子集,它以一种开放的,自我表述的方式定义了数据结构,在描述数据内容的同时能突出对结构的描述,从而体现出数据与数据之间的关系。XML与SGML是兼容的,但又没有SGML那么复杂,被设计用于有限带宽的网络,可以在WEB上工作。与WEB应用上常用的超文本标记语言HTML(HyperText Markup Language)比较,XML将数据和显示分开,扩展名为xml的文件只负责数据的存储,复用性比较好,可以为同一组数据创建不同的文档类型定义DTD(Document Type Defination),也可以创建没有DTD的XML文档当只是利用XML文档做数据的交换的时候,灵活性比较高,而HTML的DTD是固定的;而且XML对文档格式的要求更加严格,而HTML文档格式松散,导致了解析的负责复杂性,也造成了浏览器兼容的问题。W3C组织还推出了一系列XML的规范,主要包括XML、可扩展样式表语言(XSL)、文档对象模型(DOM)以及文档类型定义(DTD)等
为方便开发Internet商务应用程序而产生的J2EE架构需要处理大量的商务数据,因而J2EE架构的各个功能模块中必须要有怎样描述,显示,存储,访问这些大量的数据的过程。XML在数据描述、显示以及处理上具有明显的优势,比如描述数据的标准性、平台和语言的无关性,以及可以根据具体的应用需求定义新的标记,作为一种工具XML语言简化了数据交换以及进程间消息交换这一类的事情,因而对开发者的吸引力越来越大,将更多的XML技术引入到J2EE架构中已经是一个潮流。而用户不会关心开发者使用什么平台,也不会关心开发者使用什么语言,只关心开发者能提供什么样的服务,只要求能随时随地得到自己想要的服务。为了让任何人能在任何时间,任何地点访问你的服务,你的软件就必须在网络上提供,并且不能受平台限制。所以,用XML封装数据和对象,用SOAP作为方法调用协议的WEB服务就成了最佳的选择。有了WEB服务,Internet才能真正地为企业应用,商业应用乃至个人的桌面应用提供最佳的服务。
XML具备跨平台兼容性,因此对Java技术的可移植性构成了补充。由于J2EE平台可实施独立于平台的解决方案,XML可通过移植的方式表现数据,二者强大的组合可使J2EE充分利用XML标准的优点。
2 XML在交换表示数据中的应用
首先,XML在J2EE环境中能有效地描述数据:Web服务器向浏览器返回的Web数据的描述,Web服务配置的描述,EJB组件的持久化是应用程序服务器与数据与关系数据库或者EIS数据的交互,而XML的描述数据的标准性使得它可以方便地转化不同平台不同描述格式的数据。J2EE的服务器平台提供XSLT以及SAX和DOM,实现对XML数据的生成、解析与转换。目前几乎所有的解析器都对DOM(Document Object Model)和SAX(Simple API for XML)这2套标准的API提供了支持,但是不同解析器提供商有不同的实现版本,比如Apache的Xerces解析器提供的SAX实现类是org..apache.xerces.parsers.SAXParser,为了屏蔽具体厂商的实现,让Java开发人员以一种标准的方式对XML进行编译,Sun公司制定了JAXP标准(Java API for XML Processing), JAXP没有提供解析XML的新方法,也没有为XML的处理提供新功能,它只是在解析器之上封装了一个抽象层,允许开发人员以独立于厂商的API调用访问XML数据,从JAXP1.1开始,JAXP就成为J2EE和J2SE的一部分,JAXP应用程序接口库提供了绝大部分基于Java的XML应用程序所需的核心功能,提供的服务包括XML语法分析、XML消息发送以及XSLT的转换等。在J2EE架构中,XML应用于JSP方法有两种:1) 在JSP中直接使用XML数据源;2) 使用XSL或者XSLT将XML数据转换成显示页面;3) 从JSP页面中生成XML文档。
2.1 在JSP中直接使用XML数据源
比如一个JSP页面从两个URL获取XML数据,并生成HTML页面。URL可以是一个静态的XML文档,也可以是能动态生成XML文档的JSP页面,对于这两种URL处理的技巧相同。假设JSP页面利用parse自定义标签来解析和存储XML数据到两个对象中:customer和一系列book,该JSP页面随后析取customer对象的属性并使用一个自定义的标签来遍历该系列book。提交一个能反映book对象属性的表格。
2.2 用XSLT来完成XML的转换
在XML数据源上施加一个转换,或者析取数据,或者创建一个新的格式。这种转换可以用多种机制来实现并且可以使用自定义标签访问到这些数据。XSLT是由W3C标准化的一种转换语言,可以用来将XML数据转换成HTML,PDF或另一种XML格式。例如,可以用XSLT将一个公司使用的XML格式转换成另一个公司使用的格式,利用这种方式来生成HTML页面,需要一个XSL stylesheet 和一种应用stylesheet的方法,用来完成转换工作,生成HTML标记,并从元素中析取数据。为了应用stylesheet,需要在JSP编程中从一个JSP Scriptlet 或自定义标签中调用一个XSLT处理器,在Apache Software Foundation中的jakartataglibs项目中给出了一个标签库,包含了一系列用来处理XML输入和应用XSLT转换的标签。
2.3 从JSP页面中生成XML文档
JSP页面生成XML文档,只需将JSP页面中的内容设置正确:
<%@ page contentType="text/xml"%>
... XML document
3 XML在EJB的多层商务逻辑中的应用
由于EJB Server与XML技术的结合支持了多种组件事务服务,使系统更能够应付大量的并发用户、有效地管理复杂的事务逻辑,并且简化了组件的部署和客户端应用的维护,实现组件位置透明化。
在J2EE中,中间层事务逻辑由EJB实现。EJB是用于开发和部署多层结构的、分布式的、面向对象的跨平台构件体系结构,它提供了一个框架来开发和实施分布式商务逻辑。 EJB规范定义了EJB组件与它们的容器进行交互作用,提供所有典型的中间层服务,如目录服务、事务管理、安全性、远程客户连接、生存周期管理和数据库连接缓冲以及容错性等。
EJB规范定义了4种基本的Bean类型:
实体Bean:提供了一致性数据的表示,访问封装数据对象并支持多用户数据共享。
无状态会话Bean:处理单一的用户请求或商务过程,提供单一的服务,不维持任何状态。
状态会话Bean:表示一个业务过程,提供了与客户端的会话交互,可以存储状态从而代表一个客户。
消息驱动Bean:被指派来处理JMS队列中的消息,通过将EJB和JMS的功能结合在一起实现异步消息。
EJB与XML的结合是描述陈述逻辑最好的方式。实体Bean通过多种XML生成方式为 数据模型提供了一个面向消息处理的抽象模型,而会话Bean采用XML技术描述逻辑规则, 并通过文档对象存取、Java的绑定来实现用例的商业逻辑。使用XML可以使EJB整个程序分块明确,从而增强了分布式应用程序的可扩展性、交互性、可伸缩性以及多用户安全特性。 另外,通过对EJB的定义以及部署说明为指定的Bean生成合适的XML描述器文件和接口 文件,从而增强了整个系统程序的可靠性、可管理性和可移植性。
4 XML应用于面向消息的分布式计算
面向消息的计算的这一类异步交互(与之相对的是本地或远程方法调用所代表的同步交互)在某些应用环境中是非常有用的。面向消息系统的实际应用之一就是企业之间的松散集成,类似于电子数据交换(EDI)时代的文档交换,两个企业由于业务的需要而交换消息。此时,通常不能使用RPC、RMI、CORBA或者DCOM之类的远程方法调用将两者进行紧密集成,只能使用耦合性较松散的一种交互方式,即面向消息的分布式计算的方式。由于这一类需要松散耦合的交互方式的应用在商业活动中比较普遍,因此面向消息的分布式计算在商业系统中占有很重要的地位。由于XML在数据描述上的平台和语言的无关性,使得它可以很好地描述消息结构,并且能够被跨平台的程序所处理,因而将XML技术应用于面向消息的分布式计算中,是一种比较好的方案,这样实现的整套分布式消息系统也就可以达到平台无关性。
J2EE架构中包含了JMS编程接口以用来支持开发面向消息的分布式计算系统这样开发出来的消息系统允许双方交换基于JMS编程接口的消息载荷,但是前提是双方在会话的时候均能提供兼容载荷但是前提是双方在会话的时候均能提供兼容的JMS编程接口服务目前仍然存在的困难是: 双方是否能遵从相同的格式或协议。XML被设计用来解决此类数据的交换问题实质上就是基于XML技术描述数据的标准型,即一个双方认同的DTD或Schema,通过JMS消息队列中间件与XML的结合能够实现面向消息的异步通信模式,应用程序可以向许多不同的接受方发送请求而不必等待响应,当响应消息都到达时随时可以处理结果,这种异步通信模式能够满足多种不同的应用需求。
1) 在概念上,XML将信息的表现形式同内容分离开来,对于同样的信息能够采用不同的访问模式以实现随时随地但非同步的访问,同时能够采取不同的形式以适应异质环境中不同系统的输入要求。
2) 建立的统一的信息模型,能够迅速地适应新的需求变化。并根据用户的需求动态地扩展已有的异构系统。
3) 对于需要互相连接起来以构成虚拟企业价值链的松散耦合系统,允许企业应用系统之间采用面向消息的中间件异步交换结构化的文档信息和数据信息。
另一种是基于分布式计算技术的应用是ebXML(电子化业务)。对于具有高扩展性的商业交易来说,他们需要一种可信任的结构来实现商业事务,ebXML是一种基于XML技术来构件电子商务的架构的结构模型。它的两种建模方式,商务运营模式和功能服务模式都是基于结构模型中的ebXML消息来收发服务规范的。该服务规范的设计目标就是基于XML的电子商务的消息收发服务,ebXML中的消息收发服务兼容了SOAP(Simple Object Access Protocal)技术,该协议有助于实现大量异构程序和平台之前的互操作性,从而使已存在的应用能够被更加广泛的用户所访问。但是SOAP只是提供了一个底层的结构,而你可能需要一个更高级的框架结构。ebXML就是为了这个目的,处理B2B应用间的合作与通信。
5 结束语
XML简化了数据表示、数据交换与消息交换过程,这两种技术的结合为中间层集成框架保障了高可用性、高可靠性以及高扩展性的应用需求,同时降低了开发的费用和复杂性,强有力的支持现有应用程序集成。这些技术的出现给电子商务时代的Web应用程序的开发提供了一个非常有竞争力的选择,XML技术与J2EE结合具备很强的开放性与广阔的应用前景。
参考文献:
[1] Paul M D,Jarallah A.A Data-centric Design for n-tier Architecture Information Sciences,2003,150(3-4).
[2] Thomas K.Management of XML Documents Without Schema in RelationalDatabaseSystems[J].Information and Software Technology,2002,44(4).
[3] Tseng F S C,Hwung W J. An Automatic Load/extract Scheme for XMLDocumentsthroughObject-relationalRepositories[J].Journal of Systems and Software,2002,64(3).
[4] 王强兵,刘广钟.基于J2EE的Web企业计算[J].计算机工程,2002(1).
[5] Brogden B.Java开发指南—Servlets和JSP篇[M].北京:电子工业出版社,2001.
[6] 李东,周晓宇,徐宝文.SOAP及其对服务的影响[J].计算机工程与应用,2002(12).
[7] 李江,张威.实例分析XML/XSL/JAVA网络编程[M].北京:宇航出版社.2002.
关键词:J2EE;XML;JSP;XSLT;EJB;message-oriented
中图分类号:TP391文献标识码:A 文章编号:1009-3044(2008)35-2147-03
The XML in J2EE
CAI Xiao-nan
(Software College, TongJi University, Shanghai 201804, China)
Abstract: Integrating XML solutions into J2EE framework is an extensible combination..The authors discuss the application of XML in message-oriented distributed computing,data present and data descrption and exchange in J2EE.
Key words: J2EE; XML; JSP; XSLT; EJB; message-oriented
1 引言
XML全称是Extensible Markup Language ,意思是可扩展的标记语言,它是标准通用标记语言SGML(Standard Generalized Markup language SGML)的一个子集,它以一种开放的,自我表述的方式定义了数据结构,在描述数据内容的同时能突出对结构的描述,从而体现出数据与数据之间的关系。XML与SGML是兼容的,但又没有SGML那么复杂,被设计用于有限带宽的网络,可以在WEB上工作。与WEB应用上常用的超文本标记语言HTML(HyperText Markup Language)比较,XML将数据和显示分开,扩展名为xml的文件只负责数据的存储,复用性比较好,可以为同一组数据创建不同的文档类型定义DTD(Document Type Defination),也可以创建没有DTD的XML文档当只是利用XML文档做数据的交换的时候,灵活性比较高,而HTML的DTD是固定的;而且XML对文档格式的要求更加严格,而HTML文档格式松散,导致了解析的负责复杂性,也造成了浏览器兼容的问题。W3C组织还推出了一系列XML的规范,主要包括XML、可扩展样式表语言(XSL)、文档对象模型(DOM)以及文档类型定义(DTD)等
为方便开发Internet商务应用程序而产生的J2EE架构需要处理大量的商务数据,因而J2EE架构的各个功能模块中必须要有怎样描述,显示,存储,访问这些大量的数据的过程。XML在数据描述、显示以及处理上具有明显的优势,比如描述数据的标准性、平台和语言的无关性,以及可以根据具体的应用需求定义新的标记,作为一种工具XML语言简化了数据交换以及进程间消息交换这一类的事情,因而对开发者的吸引力越来越大,将更多的XML技术引入到J2EE架构中已经是一个潮流。而用户不会关心开发者使用什么平台,也不会关心开发者使用什么语言,只关心开发者能提供什么样的服务,只要求能随时随地得到自己想要的服务。为了让任何人能在任何时间,任何地点访问你的服务,你的软件就必须在网络上提供,并且不能受平台限制。所以,用XML封装数据和对象,用SOAP作为方法调用协议的WEB服务就成了最佳的选择。有了WEB服务,Internet才能真正地为企业应用,商业应用乃至个人的桌面应用提供最佳的服务。
XML具备跨平台兼容性,因此对Java技术的可移植性构成了补充。由于J2EE平台可实施独立于平台的解决方案,XML可通过移植的方式表现数据,二者强大的组合可使J2EE充分利用XML标准的优点。
2 XML在交换表示数据中的应用
首先,XML在J2EE环境中能有效地描述数据:Web服务器向浏览器返回的Web数据的描述,Web服务配置的描述,EJB组件的持久化是应用程序服务器与数据与关系数据库或者EIS数据的交互,而XML的描述数据的标准性使得它可以方便地转化不同平台不同描述格式的数据。J2EE的服务器平台提供XSLT以及SAX和DOM,实现对XML数据的生成、解析与转换。目前几乎所有的解析器都对DOM(Document Object Model)和SAX(Simple API for XML)这2套标准的API提供了支持,但是不同解析器提供商有不同的实现版本,比如Apache的Xerces解析器提供的SAX实现类是org..apache.xerces.parsers.SAXParser,为了屏蔽具体厂商的实现,让Java开发人员以一种标准的方式对XML进行编译,Sun公司制定了JAXP标准(Java API for XML Processing), JAXP没有提供解析XML的新方法,也没有为XML的处理提供新功能,它只是在解析器之上封装了一个抽象层,允许开发人员以独立于厂商的API调用访问XML数据,从JAXP1.1开始,JAXP就成为J2EE和J2SE的一部分,JAXP应用程序接口库提供了绝大部分基于Java的XML应用程序所需的核心功能,提供的服务包括XML语法分析、XML消息发送以及XSLT的转换等。在J2EE架构中,XML应用于JSP方法有两种:1) 在JSP中直接使用XML数据源;2) 使用XSL或者XSLT将XML数据转换成显示页面;3) 从JSP页面中生成XML文档。
2.1 在JSP中直接使用XML数据源
比如一个JSP页面从两个URL获取XML数据,并生成HTML页面。URL可以是一个静态的XML文档,也可以是能动态生成XML文档的JSP页面,对于这两种URL处理的技巧相同。假设JSP页面利用parse自定义标签来解析和存储XML数据到两个对象中:customer和一系列book,该JSP页面随后析取customer对象的属性并使用一个自定义的标签来遍历该系列book。提交一个能反映book对象属性的表格。
2.2 用XSLT来完成XML的转换
在XML数据源上施加一个转换,或者析取数据,或者创建一个新的格式。这种转换可以用多种机制来实现并且可以使用自定义标签访问到这些数据。XSLT是由W3C标准化的一种转换语言,可以用来将XML数据转换成HTML,PDF或另一种XML格式。例如,可以用XSLT将一个公司使用的XML格式转换成另一个公司使用的格式,利用这种方式来生成HTML页面,需要一个XSL stylesheet 和一种应用stylesheet的方法,用来完成转换工作,生成HTML标记,并从元素中析取数据。为了应用stylesheet,需要在JSP编程中从一个JSP Scriptlet 或自定义标签中调用一个XSLT处理器,在Apache Software Foundation中的jakartataglibs项目中给出了一个标签库,包含了一系列用来处理XML输入和应用XSLT转换的标签。
2.3 从JSP页面中生成XML文档
JSP页面生成XML文档,只需将JSP页面中的内容设置正确:
<%@ page contentType="text/xml"%>
... XML document
3 XML在EJB的多层商务逻辑中的应用
由于EJB Server与XML技术的结合支持了多种组件事务服务,使系统更能够应付大量的并发用户、有效地管理复杂的事务逻辑,并且简化了组件的部署和客户端应用的维护,实现组件位置透明化。
在J2EE中,中间层事务逻辑由EJB实现。EJB是用于开发和部署多层结构的、分布式的、面向对象的跨平台构件体系结构,它提供了一个框架来开发和实施分布式商务逻辑。 EJB规范定义了EJB组件与它们的容器进行交互作用,提供所有典型的中间层服务,如目录服务、事务管理、安全性、远程客户连接、生存周期管理和数据库连接缓冲以及容错性等。
EJB规范定义了4种基本的Bean类型:
实体Bean:提供了一致性数据的表示,访问封装数据对象并支持多用户数据共享。
无状态会话Bean:处理单一的用户请求或商务过程,提供单一的服务,不维持任何状态。
状态会话Bean:表示一个业务过程,提供了与客户端的会话交互,可以存储状态从而代表一个客户。
消息驱动Bean:被指派来处理JMS队列中的消息,通过将EJB和JMS的功能结合在一起实现异步消息。
EJB与XML的结合是描述陈述逻辑最好的方式。实体Bean通过多种XML生成方式为 数据模型提供了一个面向消息处理的抽象模型,而会话Bean采用XML技术描述逻辑规则, 并通过文档对象存取、Java的绑定来实现用例的商业逻辑。使用XML可以使EJB整个程序分块明确,从而增强了分布式应用程序的可扩展性、交互性、可伸缩性以及多用户安全特性。 另外,通过对EJB的定义以及部署说明为指定的Bean生成合适的XML描述器文件和接口 文件,从而增强了整个系统程序的可靠性、可管理性和可移植性。
4 XML应用于面向消息的分布式计算
面向消息的计算的这一类异步交互(与之相对的是本地或远程方法调用所代表的同步交互)在某些应用环境中是非常有用的。面向消息系统的实际应用之一就是企业之间的松散集成,类似于电子数据交换(EDI)时代的文档交换,两个企业由于业务的需要而交换消息。此时,通常不能使用RPC、RMI、CORBA或者DCOM之类的远程方法调用将两者进行紧密集成,只能使用耦合性较松散的一种交互方式,即面向消息的分布式计算的方式。由于这一类需要松散耦合的交互方式的应用在商业活动中比较普遍,因此面向消息的分布式计算在商业系统中占有很重要的地位。由于XML在数据描述上的平台和语言的无关性,使得它可以很好地描述消息结构,并且能够被跨平台的程序所处理,因而将XML技术应用于面向消息的分布式计算中,是一种比较好的方案,这样实现的整套分布式消息系统也就可以达到平台无关性。
J2EE架构中包含了JMS编程接口以用来支持开发面向消息的分布式计算系统这样开发出来的消息系统允许双方交换基于JMS编程接口的消息载荷,但是前提是双方在会话的时候均能提供兼容载荷但是前提是双方在会话的时候均能提供兼容的JMS编程接口服务目前仍然存在的困难是: 双方是否能遵从相同的格式或协议。XML被设计用来解决此类数据的交换问题实质上就是基于XML技术描述数据的标准型,即一个双方认同的DTD或Schema,通过JMS消息队列中间件与XML的结合能够实现面向消息的异步通信模式,应用程序可以向许多不同的接受方发送请求而不必等待响应,当响应消息都到达时随时可以处理结果,这种异步通信模式能够满足多种不同的应用需求。
1) 在概念上,XML将信息的表现形式同内容分离开来,对于同样的信息能够采用不同的访问模式以实现随时随地但非同步的访问,同时能够采取不同的形式以适应异质环境中不同系统的输入要求。
2) 建立的统一的信息模型,能够迅速地适应新的需求变化。并根据用户的需求动态地扩展已有的异构系统。
3) 对于需要互相连接起来以构成虚拟企业价值链的松散耦合系统,允许企业应用系统之间采用面向消息的中间件异步交换结构化的文档信息和数据信息。
另一种是基于分布式计算技术的应用是ebXML(电子化业务)。对于具有高扩展性的商业交易来说,他们需要一种可信任的结构来实现商业事务,ebXML是一种基于XML技术来构件电子商务的架构的结构模型。它的两种建模方式,商务运营模式和功能服务模式都是基于结构模型中的ebXML消息来收发服务规范的。该服务规范的设计目标就是基于XML的电子商务的消息收发服务,ebXML中的消息收发服务兼容了SOAP(Simple Object Access Protocal)技术,该协议有助于实现大量异构程序和平台之前的互操作性,从而使已存在的应用能够被更加广泛的用户所访问。但是SOAP只是提供了一个底层的结构,而你可能需要一个更高级的框架结构。ebXML就是为了这个目的,处理B2B应用间的合作与通信。
5 结束语
XML简化了数据表示、数据交换与消息交换过程,这两种技术的结合为中间层集成框架保障了高可用性、高可靠性以及高扩展性的应用需求,同时降低了开发的费用和复杂性,强有力的支持现有应用程序集成。这些技术的出现给电子商务时代的Web应用程序的开发提供了一个非常有竞争力的选择,XML技术与J2EE结合具备很强的开放性与广阔的应用前景。
参考文献:
[1] Paul M D,Jarallah A.A Data-centric Design for n-tier Architecture Information Sciences,2003,150(3-4).
[2] Thomas K.Management of XML Documents Without Schema in RelationalDatabaseSystems[J].Information and Software Technology,2002,44(4).
[3] Tseng F S C,Hwung W J. An Automatic Load/extract Scheme for XMLDocumentsthroughObject-relationalRepositories[J].Journal of Systems and Software,2002,64(3).
[4] 王强兵,刘广钟.基于J2EE的Web企业计算[J].计算机工程,2002(1).
[5] Brogden B.Java开发指南—Servlets和JSP篇[M].北京:电子工业出版社,2001.
[6] 李东,周晓宇,徐宝文.SOAP及其对服务的影响[J].计算机工程与应用,2002(12).
[7] 李江,张威.实例分析XML/XSL/JAVA网络编程[M].北京:宇航出版社.2002.