﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-SNOW NO Track</title><link>http://www.blogjava.net/Zhangxg/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:04:56 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:04:56 GMT</pubDate><ttl>60</ttl><item><title>巧妙利用Struts的页面有效性检查</title><link>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1922.html</link><dc:creator>SNOW NO Track</dc:creator><author>SNOW NO Track</author><pubDate>Thu, 10 Mar 2005 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1922.html</guid><wfw:comment>http://www.blogjava.net/Zhangxg/comments/1922.html</wfw:comment><comments>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Zhangxg/comments/commentRss/1922.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Zhangxg/services/trackbacks/1922.html</trackback:ping><description><![CDATA[<P>&nbsp; 在Struts中大家可能对其页面有效性检查（校验）有比较深刻的印象，你只要在structs-config.xml中增加一个plugin的配置，然后定义一个检验配置的xml,然后在稍微改变一些代码，就可以自动完成页面的检验了。具体步骤如下：<BR>第一步：建立校验配置文件<FONT size=4>validation.xml,咱们以登陆页面为例，该文件如下：<BR></FONT><FONT style="BACKGROUND-COLOR: #d3d3d3" size=4>&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;<BR>&lt;!--<BR>&nbsp;&nbsp;&nbsp; Validation Rules for the Struts Example Web Application</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #d3d3d3" size=4>&nbsp;&nbsp;&nbsp; $Id: validation.xml,v 1.1.1.1 2003/05/15 06:28:29 xiaogen Exp $<BR>--&gt;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #d3d3d3" size=4>&lt;form-validation&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;!-- ========== Default Language Form Definitions ===================== --&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;formset&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;form name="loginForm"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;field property="username"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; depends="required,minlength,maxlength"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg0&nbsp;&nbsp; key="login.username"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg1&nbsp;&nbsp; key="${var:minlength}" name="minlength" resource="false"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg1&nbsp;&nbsp; key="${var:maxlength}" name="maxlength" resource="false"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-name&gt;maxlength&lt;/var-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-value&gt;16&lt;/var-value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-name&gt;minlength&lt;/var-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-value&gt;3&lt;/var-value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/field&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;field property="passwd"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; depends="required,minlength,maxlength"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg0&nbsp;&nbsp; key="login.passwd"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg1&nbsp;&nbsp; key="${var:minlength}" name="minlength"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resource="false"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg1&nbsp;&nbsp; key="${var:maxlength}" name="maxlength"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resource="false"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-name&gt;maxlength&lt;/var-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-value&gt;16&lt;/var-value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-name&gt;minlength&lt;/var-name&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;var-value&gt;6&lt;/var-value&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/var&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/field&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/formset&gt;<BR>&lt;/form-validation&gt;<BR></FONT>我向大家一看就能明白这个配置文件的含义，我们的JSP页面的名称叫loginForm, 这个登陆页面有两个字段，一个是用户名username,一个是密码passwd.在这里这两个字段都有三个约束，required,minlength,maxlength, 分别表示这两个字段需要用户输入，最小长度，最大长度。针对用户名，必须是从3到16个字符（包括3和16），而密码必须是不能少于6个字符，而且不能多于16个字符。<BR><BR>如果你需要增加其他form得校验配置，可以在formset中增加相应的form配置。<BR><BR>第二步：修改struts-config.xml文件，增加如下代码：<BR><FONT style="BACKGROUND-COLOR: #d3d3d3" size=4>&lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;set-property property="pathnames" value="/WEB-INF/config/validator-rules.xml,/WEB-INF/config/validation.xml" /&gt;<BR>&nbsp; &lt;/plug-in&gt;<BR></FONT>这里校验规则文件是：<FONT size=4>validator-rules.xml<BR><BR>第三步：修改页面文件<BR>在页面增加以下代码，告诉struts这个页面中要增加针对哪个form的配置的javascript页面校验代码：<BR><FONT style="BACKGROUND-COLOR: #d3d3d3">&lt;html:javascript formName="loginForm" /&gt;</FONT><BR>然后在要校验的form中的onsubmit事件中增加return validateLoginForm(this);来进行校验，就像下面的代码：<BR></FONT><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3">&lt;html:form method="post"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; action="/login.do"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; focus="username"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onsubmit="return validateLoginForm(this);"&gt;</FONT><BR>通过这三步你就可以直接使用定义好的一些页面校验功能，当然这是客户端校验，你也可以使用服务<BR></FONT></P>
<P><FONT size=4>段的后台校验。<BR><BR>当然如果在你的web程序中，你没有采用struts,或者你使用的是asp,asp.net什么的，你也想使用这么方便通用的页面校验功能，那怎么办呢？<BR><BR>其实，很简单，你只要把</FONT>validator-rules.xml中定义的规则拿出来，然后定义一个javascript的类，就可以达到这个目的了。下面我就列出这个类的一部分：<BR><FONT style="BACKGROUND-COLOR: #d3d3d3" color=#000000 size=4>function validation(form)<BR>{<BR>&nbsp;&nbsp;&nbsp; //------variable deifinition start---------------------------------------<BR>&nbsp;&nbsp;&nbsp; var form=form;<BR>&nbsp;&nbsp;&nbsp; var arrRequired=null;<BR>&nbsp;&nbsp;&nbsp; var arrMinLength=null;<BR>&nbsp;&nbsp;&nbsp; var arrMaxLength=null;<BR>&nbsp;&nbsp;&nbsp; var arrEmail=null;<BR>&nbsp;&nbsp;&nbsp; var arrMask=null;<BR>&nbsp;&nbsp;&nbsp; var arrDateValidation=null;<BR>&nbsp;&nbsp;&nbsp; var arrEqualValidation=null;<BR>&nbsp;//------variable deifinition end-----------------------------------------<BR>&nbsp;<BR>&nbsp;//------check argument start---------------------------------------------<BR>&nbsp;if(typeof form != "object" )<BR>&nbsp;{<BR>&nbsp;&nbsp;alert("The argument of validation must be a valid page form!");<BR>&nbsp;&nbsp;return;<BR>&nbsp;}<BR>&nbsp;//------check argument end-----------------------------------------------<BR>&nbsp;<BR>&nbsp;//------inner class definition start-------------------------------------<BR>&nbsp;function required(fieldname,msg)<BR>&nbsp;{<BR>&nbsp;&nbsp;this.fieldname=fieldname;<BR>&nbsp;&nbsp;this.msg=msg;<BR>&nbsp;}<BR>this.validate=validate;<BR>this.addRequired=addRequired;<BR>/**<BR>&nbsp; *&nbsp; Add field which must input data. The message will be shown to user if the field has no data.<BR>&nbsp; *&nbsp; @param&nbsp; fieldname&nbsp;&nbsp; field name.<BR>&nbsp; *&nbsp; @param&nbsp; msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The msg will be shown to user if the field is empty. <BR>&nbsp; */<BR>&nbsp;function addRequired(fieldname,msg)<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(null == arrRequired)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arrRequired=new Array();<BR>&nbsp;&nbsp;&nbsp; &nbsp;}<BR>&nbsp;&nbsp; &nbsp;var tmpLen=arrRequired.length;<BR>&nbsp;&nbsp; &nbsp;arrRequired[tmpLen]=new required(fieldname,msg);<BR>&nbsp;}<BR>function validate()<BR>&nbsp;{<BR>&nbsp;&nbsp;var isValid=true;<BR>&nbsp;&nbsp;if(null != arrRequired)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;isValid=isValid &amp;&amp; validateRequired(form,arrRequired);<BR>&nbsp;&nbsp;}<BR>}<BR>}<BR>/**<BR>&nbsp;* Validate fields in forms¡£<BR>&nbsp;* @param form&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form will be validated.<BR>&nbsp;* @param arrRequired&nbsp;&nbsp;&nbsp; Array of fields which be setted.<BR>&nbsp;* @return&nbsp;&nbsp; true or false. Return true if validation is passed,<BR>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else return false.<BR>&nbsp;*/<BR>function validateRequired(form,arrRequired) <BR>{<BR>&nbsp;var isValid = true;<BR>&nbsp;var focusField = null;<BR>&nbsp;var i = 0;<BR>&nbsp;var fields = new Array();<BR>&nbsp;for (x in arrRequired) <BR>&nbsp;{<BR>&nbsp;&nbsp;var field = form[(arrRequired[x]).fieldname];</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #d3d3d3" color=#000000 size=4>&nbsp;&nbsp;if (field.type == 'text' ||<BR>&nbsp;&nbsp;field.type == 'textarea' ||<BR>&nbsp;&nbsp;field.type == 'file' ||<BR>&nbsp;&nbsp;field.type == 'select-one' ||<BR>&nbsp;&nbsp;field.type == 'radio' ||<BR>&nbsp;&nbsp;field.type == 'password') <BR>&nbsp;&nbsp;{</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #d3d3d3" color=#000000 size=4>&nbsp;&nbsp;&nbsp;var value = '';<BR>&nbsp;&nbsp;&nbsp;// get field's value<BR>&nbsp;&nbsp;&nbsp;if (field.type == "select-one") <BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;var si = field.selectedIndex;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (si &gt;= 0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = field.options[si].value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;value = field.value;<BR>&nbsp;&nbsp;&nbsp;}</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #d3d3d3" color=#000000 size=4>&nbsp;&nbsp;&nbsp;if (trim(value).length == 0) <BR>&nbsp;&nbsp;&nbsp;{</FONT></P>
<P><FONT color=#d3d3d3><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3" color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;if (i == 0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;focusField = field;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;fields[i++] = (arrRequired[x]).msg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;isValid = false;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;if (fields.length &gt; 0) <BR>&nbsp;{<BR>&nbsp;&nbsp;focusField.focus();<BR>&nbsp;&nbsp;alert(fields.join('\n'));<BR>&nbsp;}<BR>&nbsp;return isValid;<BR>}<BR></FONT><BR></FONT></FONT>这个类的完整文件已经被上传到我的blog中了。<BR><BR>然后在你的页面增加如下脚本就可以达到校验的目的了：<BR><FONT style="BACKGROUND-COLOR: #d3d3d3" size=4>function check(form)<BR>{ <BR>&nbsp;&nbsp;&nbsp; var ovalidation=new validation(form);<BR>&nbsp; &nbsp;ovalidation.addRequired("username","User name is required!");<BR>&nbsp; &nbsp;ovalidation.addRequired("passwd","User password is required!");<BR>&nbsp;&nbsp;&nbsp;return ovalidation.validate();<BR>}<BR></FONT><BR>然后在form的onsubmit事件中增加<FONT style="BACKGROUND-COLOR: #d3d3d3" size=4>return check(this);</FONT>就大功告成了。<BR>（如需转载请署名出处）</P><img src ="http://www.blogjava.net/Zhangxg/aggbug/1922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Zhangxg/" target="_blank">SNOW NO Track</a> 2005-03-10 17:30 <a href="http://www.blogjava.net/Zhangxg/archive/2005/03/10/1922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JCA1.5学习笔记一</title><link>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1919.html</link><dc:creator>SNOW NO Track</dc:creator><author>SNOW NO Track</author><pubDate>Thu, 10 Mar 2005 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1919.html</guid><wfw:comment>http://www.blogjava.net/Zhangxg/comments/1919.html</wfw:comment><comments>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Zhangxg/comments/commentRss/1919.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Zhangxg/services/trackbacks/1919.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt"><SPAN style="mso-list: Ignore">1、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范围</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 12pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-SIZE: 12pt">JCA1.0</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义了在应用服务器和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">EIS(</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">企业信息系统</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">)</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间系统级的一个标准的协议集合，这些协议集中于集成的系统级的重要方面：连接管理（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">connection management</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），事务管理</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">(transaction management)</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，安全管理</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">(security management)</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。并且定义了客户端与多个企业信息系统交互的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">CCI(Common Client Interface)</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通用客户端接口，以及针对资源适配器的一个标准的配置发布及打包协议。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt"><SPAN lang=EN-US style="FONT-SIZE: 12pt"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>JCA1.5</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义了以下协议：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63.15pt; TEXT-INDENT: -21pt; tab-stops: list 63.15pt; mso-list: l2 level1 lfo2"><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生命周期管理协议（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Lifecycle management contract</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：这是应用服务器和资源适配器之间的一个协议，允许应用服务器来管理资源适配器的生命周期。这个协议为应用服务器在资源适配器在配置发布或应用服务器启动的时候提供一种启动资源适配器实例的机制，并且在资源适配器卸载或应用服务器关闭的时候通知资源适配器实例关闭。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63.15pt; TEXT-INDENT: -21pt; tab-stops: list 63.15pt; mso-list: l2 level1 lfo2"><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作管理协议（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Work managerment contract</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：这是应用服务器和资源适配器之间的一个协议，该协议允许资源适配器通过提交工作实例给应用服务器来做一些工作（象监视网络端口，调用应用程序组件等）。然后应用服务器通过分配线程来执行提交的工作实例，这就避免了资源适配器为了执行一些任务来直接创建或者管理线程，并且可以使得应用服务器在运行时环境对线程池来实施更多更有效的控制管理。并且资源适配器能控制被执行的工作实例的安全上下文环境和事务上下文环境。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63.15pt; TEXT-INDENT: -21pt; tab-stops: list 63.15pt; mso-list: l2 level1 lfo2"><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事务流入协议（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Transaction inflow contract</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">:</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该协议是应用服务器和资源适配器之间的一个协议，它允许资源适配器来传递一个输入事务到应用服务器。这个协议也允许资源适配器来传递由企业信息系统初始化的事务完成和故障恢复调用，并且能确保被输入的事务的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ACID(Atomicity</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原子性</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">,Consistency</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一致性</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">,Isolation</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">隔离性</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"> and Durability</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">持久性</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">)</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性被保留。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63.15pt; TEXT-INDENT: -21pt; tab-stops: list 63.15pt; mso-list: l2 level1 lfo2"><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">消息流入协议（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Message inflow contract</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）：这是应用服务器和资源适配器之间一个标准的、通用的协议，它允许资源适配器以独立于发送消息所使用的具体消息格式、消息语义、消息结构的方式异步的发送消息到位于应用服务器中的消息端口。这个协议也允许更广泛消息提供者（象</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Java Message Service,Java API for XML Messaging</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等）通过资源适配器以插件的方式插入到</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">J2EE</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">兼容的应用服务器中。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63.15pt; TEXT-INDENT: -21pt; tab-stops: list 63.15pt; mso-list: l2 level1 lfo2"><SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">针对不通类型（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">outbound only</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输出，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">inbound only</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">or both</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入输出）的资源适配器描述对应的打包模式。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">2、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生命周期管理</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; tab-stops: list 42.0pt; mso-list: l0 level2 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用服务器实现</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">javax.resource.spi.BootstrapContext</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">javax.resource.spi.WorkManager</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口。资源适配器实现</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">javax.resource.spi.ResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口。实现</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的类是在资源适配器的配置描述文件中指定的，并且这个实现类必须是一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 21pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当一个资源适配器被配置发布或者应用服务器启动的时候，应用服务器在它自己的地址空间启动一个资源适配器的实例。为了启动一个资源适配器实例，应用服务器必须使用配置了的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的实现类，并且调用它的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，这个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法调用是来自应用服务器的启动通知，并且这个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法是被应用服务器的线程调用的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 21pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个应用服务器允许在同一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">JVM</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中同时存在多个资源适配器实例，但这些实例不一定相等，判断这些实例是否相等，可以通过实例的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">equals</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，因此</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的实现类需要实现</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">equals</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 21pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法调用中，资源适配器实例初始化自己，并且可能使用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">WorkManager</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来提交</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Work</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例来执行。这个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法调用应该及时返回，应该避免阻塞调用，如调用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">WorkManager</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">doWork</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法就是阻塞调用。如果在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法中调用了</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">WorkManager</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">doWork</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法或者任何阻塞的方法，应用服务器都可能抛出一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">WorkRejectedException</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">异常，为了强制</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法不被阻塞，强烈建议资源适配器实现使用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">WorkManager</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">startWork</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">scheduleWork</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来代替</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">doWork</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 21pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在调用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">start</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法时抛出任何异常将导致应用服务器创建资源适配器实例失败，在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">JCA</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将来的版本中可能要增加两阶段启动过程。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 21pt"><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示一个资源适配器实例，并且包含相对应资源适配器实例的配置信息，这个配置信息对</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ActivationSpec JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来说可能也被使用作为全局缺省的配置信息。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 21pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个资源适配器实例对于多个企业信息系统实例来说可能提供双向的链接。一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">能被使用来提供对单个的企业信息系统的输出连接。一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ActivationSpec JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">能被使用来提供来自企业信息系统的输入连接；一个资源适配器实例可能包括几个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ActivationSpec JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; tab-stops: list 42.0pt; mso-list: l0 level2 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就表示通过资源适配器从应用到企业信息系统实例的一个输出链接。同时也包含相应的输出连接配置信息，该配置信息是是继承</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配置信息的，也就是说输出连接的配置信息是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两者配置信息的综合，并且</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配置信息可能覆盖</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配置信息（在两者中都存在相同名称的配置信息时）。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; tab-stops: list 42.0pt; mso-list: l0 level2 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输出连接是由应用服务器发起的，并且必须创建一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间的一个关联，建立关联是通过调用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">RsourceAdapterAssociation</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">setResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来做到的，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapterAssociation</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口指明</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ManagedConnectionFactory JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间的关联关系。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">setResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">至少要调用一次，也就是说这个关联也是可以改变的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; tab-stops: list 42.0pt; mso-list: l0 level2 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ActivationSpec JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示通过资源适配器实例从企业信息系统到应用服务器的输入连接，它也同样包含输入连接的配置信息，该配置信息也是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ActivationSpec JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的综合。输入连接是由企业信息系统发起的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ActivationSpec JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也必须和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResouceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关联，因为不管是输出连接还是输入连接都是通过</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个中间桥梁来建立连接的。也是通过</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">setResourceAdatper</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来达到关联的目的的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; tab-stops: list 42.0pt; mso-list: l0 level2 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-size: 12.0pt"><SPAN style="mso-list: Ignore">²<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">资源适配器实例关闭需要经过两个阶段：第一阶段应用服务器停止所有使用此资源适配器实例的应用组件，直到所有的应用线程不在使用此资源适配器实例。第二阶段是调用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">ResourceAdapter JavaBean</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">stop</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来通知资源适配器实例停止服务。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">3、<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">连接管理</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -21pt; tab-stops: list 63.0pt; mso-list: l1 level1 lfo3"><SPAN lang=EN-US style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">A)<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用程序组件通过</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">JNDI</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">找到连接工厂</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ConnectionFactory<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -21pt; tab-stops: list 63.0pt; mso-list: l1 level1 lfo3"><SPAN lang=EN-US style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">B)<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ConnectionFactory</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将创建连接的请求传给</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ConnectionManager</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -21pt; tab-stops: list 63.0pt; mso-list: l1 level1 lfo3"><SPAN lang=EN-US style="FONT-SIZE: 14pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">C)<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ConnectionManager</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接收到连接工厂的请求之后，查询由应用服务器提供的连接池，如果有符合要求的连接在池中就将匹配的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ManagedConnection</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例来满足连接请求，直接返回给连接工厂，然后连接工厂返回给应用组件，如果没有符合要求的连接在池中，应用服务器就使用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ManagedConnectionFactory</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的实现类（在资源适配器中实现）来创建一个新的到企业信息系统的底层物理连接，应用服务器将这个新创建的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ManagedConnection</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例放到连接池中，并且注册一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ConnectionEventListener</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现到</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ManagedConnection</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例中，这个监听器可以使应用服务器得到关于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt">ManagedConnection</SPAN><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例状态改变的通知。然后返回给应用组件。</SPAN></P><img src ="http://www.blogjava.net/Zhangxg/aggbug/1919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Zhangxg/" target="_blank">SNOW NO Track</a> 2005-03-10 16:39 <a href="http://www.blogjava.net/Zhangxg/archive/2005/03/10/1919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XLink1.0 学习笔记</title><link>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1917.html</link><dc:creator>SNOW NO Track</dc:creator><author>SNOW NO Track</author><pubDate>Thu, 10 Mar 2005 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1917.html</guid><wfw:comment>http://www.blogjava.net/Zhangxg/comments/1917.html</wfw:comment><comments>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Zhangxg/comments/commentRss/1917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Zhangxg/services/trackbacks/1917.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、XLink的规格说明书是用来描述和创建在XML文档中资源之间的链接语言规范，目前W3C的此工作组由于工作已经完成所以已经解散了。这个规范定义了两种链接声明类型，即简单型的（类型为simple的）和扩展型的（类型为extended），其实简单型的链接是扩展型的链接的便于书写的简单形式。2、要声明一个XML文档的链接，必须在这个所声明的链接的元素中定义这个命名空间：http://www.w3....&nbsp;&nbsp;<a href='http://www.blogjava.net/Zhangxg/archive/2005/03/10/1917.html'>阅读全文</a><img src ="http://www.blogjava.net/Zhangxg/aggbug/1917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Zhangxg/" target="_blank">SNOW NO Track</a> 2005-03-10 16:21 <a href="http://www.blogjava.net/Zhangxg/archive/2005/03/10/1917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML Base学习笔记</title><link>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1914.html</link><dc:creator>SNOW NO Track</dc:creator><author>SNOW NO Track</author><pubDate>Thu, 10 Mar 2005 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1914.html</guid><wfw:comment>http://www.blogjava.net/Zhangxg/comments/1914.html</wfw:comment><comments>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Zhangxg/comments/commentRss/1914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Zhangxg/services/trackbacks/1914.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">1、</SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML Base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了一种通过显式的指定一个基准</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI(base URI),</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并通过此</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">base URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来解析指向外部资源的相对</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的方式。具体是通过指定</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">元素的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性来实现的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">2、</SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目前只有三个有关</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的规范是基于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML Base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的，将其作为他们标准引用的一部分：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XLink</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML InfoSet</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">Cannonical XML</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。其他的很少或者基本上和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML Base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无关。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML Namespace</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用了</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但不是通过</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性来解析的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XPath</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">没有使用相对</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">引用，所以也没有使用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML Base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XSLT</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用了与</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">XML Base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不兼容的基</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的方式。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">3、</SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以下是一个例子：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3">&lt;?xml version="1.0"?&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3">&lt;doc xml:base="http://example.org/today/"<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>xmlns:xlink="http://www.w3.org/1999/xlink"&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;head&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;title&gt;Virtual Library&lt;/title&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/head&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;body&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;paragraph&gt;See &lt;link xlink:type="simple" xlink:href="new.xml"&gt;what's<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>new&lt;/link&gt;!&lt;/paragraph&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;paragraph&gt;Check out the hot picks of the day!&lt;/paragraph&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;olist xml:base="/hotpicks/"&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;item&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;link xlink:type="simple" xlink:href="pick1.xml"&gt;Hot Pick #1&lt;/link&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;/item&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;item&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;link xlink:type="simple" xlink:href="pick2.xml"&gt;Hot Pick #2&lt;/link&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;/item&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;item&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;link xlink:type="simple" xlink:href="pick3.xml"&gt;Hot Pick #3&lt;/link&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;/item&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;/olist&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/body&gt;<o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=EN-US style="COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT size=4><FONT style="BACKGROUND-COLOR: #d3d3d3">&lt;/doc&gt;<o:p></o:p></FONT></FONT></SPAN></PRE>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本例中的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URIs</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被解析为下列完整的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URIs</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=Web1 style="MARGIN: 3.6pt 0cm 3.6pt 39pt; LAYOUT-GRID-MODE: char; TEXT-INDENT: -21pt; tab-stops: list 39.0pt; mso-list: l1 level1 lfo2"><FONT size=4><SPAN lang=EN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">Ø<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">"what's new"</SPAN><FONT face="Arial Unicode MS">被解析为</FONT><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">URI "http://example.org/today/new.xml"</SPAN></FONT></P>
<P class=Web1 style="MARGIN: 3.6pt 0cm 3.6pt 39pt; LAYOUT-GRID-MODE: char; TEXT-INDENT: -21pt; tab-stops: list 39.0pt; mso-list: l1 level1 lfo2"><FONT size=4><SPAN lang=EN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">Ø<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">"Hot Pick #1"</SPAN><FONT face="Arial Unicode MS">被解析为</FONT><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">URI "http://example.org/hotpicks/pick1.xml"</SPAN></FONT></P>
<P class=Web1 style="MARGIN: 3.6pt 0cm 3.6pt 39pt; LAYOUT-GRID-MODE: char; TEXT-INDENT: -21pt; tab-stops: list 39.0pt; mso-list: l1 level1 lfo2"><FONT size=4><SPAN lang=EN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">Ø<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">"Hot Pick #2"</SPAN><FONT face="Arial Unicode MS">被解析为</FONT><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">URI "http://example.org/hotpicks/pick2.xml"</SPAN></FONT></P>
<P class=Web1 style="MARGIN: 3.6pt 0cm 3.6pt 39pt; LAYOUT-GRID-MODE: char; TEXT-INDENT: -21pt; tab-stops: list 39.0pt; mso-list: l1 level1 lfo2"><FONT size=4><SPAN lang=EN style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">Ø<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">"Hot Pick #3"</SPAN><FONT face="Arial Unicode MS">被解析为</FONT><SPAN lang=EN style="FONT-FAMILY: 'Times New Roman'">URI "http://example.org/hotpicks/pick3.xml"<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">4、</SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基准</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一定是绝对</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，是根据</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">RFC 2396</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的规则计算得到的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，通过</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性指定的值是基准</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">信息，并且</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的值可以是绝对</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，也可以是相对</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"><SPAN style="mso-list: Ignore">5、</SPAN></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">某个具体元素的基准</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是由该元素的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性指定的，如果该元素没有指定</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性，则是由该元素的父元素的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">URI</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指定的，如果父元素也没有指定</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的话，则是由该文档的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 12pt">xml:base</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性所指定的。</SPAN></P><img src ="http://www.blogjava.net/Zhangxg/aggbug/1914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Zhangxg/" target="_blank">SNOW NO Track</a> 2005-03-10 16:04 <a href="http://www.blogjava.net/Zhangxg/archive/2005/03/10/1914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML Schema学习笔记(2)</title><link>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1913.html</link><dc:creator>SNOW NO Track</dc:creator><author>SNOW NO Track</author><pubDate>Thu, 10 Mar 2005 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1913.html</guid><wfw:comment>http://www.blogjava.net/Zhangxg/comments/1913.html</wfw:comment><comments>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Zhangxg/comments/commentRss/1913.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Zhangxg/services/trackbacks/1913.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、关于include的用法include元素可以将外部的定义和声明引入到文档中，并且作为新Schema文档的一部分，但必须注意的一点是，被包含成员的目标命名空间必须和包含的目标命名空间一样。具体写法例子是：&lt;include schemaLocation=“http://www.example.com/schemas/address.xsd” /&gt;2、如果一个类型是从另一个...&nbsp;&nbsp;<a href='http://www.blogjava.net/Zhangxg/archive/2005/03/10/1913.html'>阅读全文</a><img src ="http://www.blogjava.net/Zhangxg/aggbug/1913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Zhangxg/" target="_blank">SNOW NO Track</a> 2005-03-10 15:59 <a href="http://www.blogjava.net/Zhangxg/archive/2005/03/10/1913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML Schema学习笔记(1)</title><link>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1899.html</link><dc:creator>SNOW NO Track</dc:creator><author>SNOW NO Track</author><pubDate>Thu, 10 Mar 2005 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1899.html</guid><wfw:comment>http://www.blogjava.net/Zhangxg/comments/1899.html</wfw:comment><comments>http://www.blogjava.net/Zhangxg/archive/2005/03/10/1899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Zhangxg/comments/commentRss/1899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Zhangxg/services/trackbacks/1899.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、复杂类型和简单类型之间最根本的区别就是：复杂类型的内容中可以包含其他元素，也可以带有属性（Attribute）,但简单类型既不能包含子元素，也不能带有任何属性。&lt;xsd:complexType name="CNAddress" &gt;&nbsp; &lt;xsd:sequence&gt;&nbsp;&nbsp; &lt;xsd:element name="name"&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/Zhangxg/archive/2005/03/10/1899.html'>阅读全文</a><img src ="http://www.blogjava.net/Zhangxg/aggbug/1899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Zhangxg/" target="_blank">SNOW NO Track</a> 2005-03-10 13:21 <a href="http://www.blogjava.net/Zhangxg/archive/2005/03/10/1899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>