﻿<?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-Java complete me!-文章分类-Hivemind</title><link>http://www.blogjava.net/jimlaren/category/4239.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 08:08:39 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 08:08:39 GMT</pubDate><ttl>60</ttl><item><title>Hivmind使用指南(一)</title><link>http://www.blogjava.net/jimlaren/articles/17140.html</link><dc:creator>jimlaren</dc:creator><author>jimlaren</author><pubDate>Fri, 28 Oct 2005 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/jimlaren/articles/17140.html</guid><wfw:comment>http://www.blogjava.net/jimlaren/comments/17140.html</wfw:comment><comments>http://www.blogjava.net/jimlaren/articles/17140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jimlaren/comments/commentRss/17140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jimlaren/services/trackbacks/17140.html</trackback:ping><description><![CDATA[
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"><!--[if !supportLists]--><span style="" lang="EN-US"><span style="">一、</span></span><!--[endif]--><span lang="EN-US">service</span><span style="font-family: 宋体;">的定义</span></p>

<p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">、概述</span></p>

<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">在</span><span lang="EN-US">hivemind</span><span style="font-family: 宋体;">中，一个</span><span lang="EN-US">service</span><span style="font-family: 宋体;">是一个简单的实现特定接口的对象，你可以提供此接口的核心实现，使用者可以通过实现此接口来覆盖你的实现。模块的定义可以包含</span><span lang="EN-US"><service-poit></service-poit></span><span style="font-family: 宋体;">元素来定义服务，一个模块可以包含任意多的服务。</span></p>

<p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">、创建模式</span></p>

<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US">Service</span><span style="font-family: 宋体;">有四种创建模式</span><span lang="EN-US">:primitive</span><span style="font-family: 宋体;">（主要的）、</span><span lang="EN-US">singleton</span><span style="font-family: 宋体;">（单例的）、</span><span lang="EN-US">threaded</span><span style="font-family: 宋体;">（线程的）和</span><span lang="EN-US">pooled</span><span style="font-family: 宋体;">（池化的）。在</span><span lang="EN-US">primitive</span><span style="font-family: 宋体;">和</span><span lang="EN-US">singleton</span><span style="font-family: 宋体;">模式中，每一个服务最终只会生成一个实例。在</span><span lang="EN-US">threaded</span><span style="font-family: 宋体;">和</span><span lang="EN-US">pooled</span><span style="font-family: 宋体;">模式中，同时可能有多个实例，但是每个线程只会有一个实例。各个模式的定义如下：</span></p>

<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"><!--[if !supportLists]--><span style="font-family: Wingdings;" lang="EN-US"><span style=""></span></span><b style=""><span lang="EN-US">Primitive</span></b><b style=""><span style="font-family: 宋体;">：</span></b><span style="font-family: 宋体;">服务在第一次参考时被构造</span></p>

<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"><!--[if !supportLists]--><span style="font-family: Wingdings;" lang="EN-US"><span style=""></span></span><b style=""><span lang="EN-US">Singleton</span></b><b style=""><span style="font-family: 宋体;">：</span></b><span style="font-family: 宋体;">服务在第一此调用接口的方法时被构造</span></p>

<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"><!--[if !supportLists]--><span style="font-family: Wingdings;" lang="EN-US"><span style=""><span style="" times="" new="" roman="" ;="" font-style="" font-variant="" font-weight="" font-size="" 7pt="" line-height="" font-size-adjust="" none="" font-stretch="" normal=""></span></span></span><!--[endif]--><b style=""><span lang="EN-US">Threaded</span></b><span style="font-family: 宋体;">：第一次调用接口的方法时构造，并绑定到当前线程</span></p>

<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"><!--[if !supportLists]--><span style="font-family: Wingdings;" lang="EN-US"><span style=""><span style="" times="" new="" roman="" ;="" font-style="" font-variant="" font-weight="" font-size="" 7pt="" line-height="" font-size-adjust="" none="" font-stretch="" normal=""></span></span></span><!--[endif]--><b style=""><span lang="EN-US">Pooled</span></b><b style=""><span style="font-family: 宋体;">：</span></b><span style="font-family: 宋体;">同</span><span lang="EN-US">Threaded</span><span style="font-family: 宋体;">，但服务的实现被储存在池中</span></p>

<p class="MsoNormal" style="text-indent: 21.75pt;"><span lang="EN-US">Hivemind</span><span style="font-family: 宋体;">使用代理模式来创建实例，除了</span><span lang="EN-US">primitive</span><span style="font-family: 宋体;">创建模式。代理类实现了服务接口，按需要构造实际的实现类。</span></p>

<p class="MsoNormal"><span lang="EN-US">3</span><span style="font-family: 宋体;">、定义方法</span></p>

<p class="MsoNormal" style="text-indent: 21.75pt;"><span style="font-family: 宋体;">一个服务包含一个实现类和任意多的拦截类，拦截类可以实现日志、安全、事务定义和性能观测等功能。一般一个服务代理将首先创建，当代理类的方法被调用时，实际的服务实现类被构造和配置，所有的拦截类被创建。</span></p>

<p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"><span style="font-family: 宋体;">定义如下：</span></p><pre><span lang="EN-US">&lt;<span class="xml-tag">service-point </span><span class="xml-attribute">id</span>=<span class="xml-attribute-value">"MyService" </span><span class="xml-attribute">interface</span>=<span class="xml-attribute-value">"com.myco.MyServiceInterface"</span>&gt;</span></pre><pre><span lang="EN-US"><span style="">&nbsp; </span>&lt;<span class="xml-tag">create-instance </span><span class="xml-attribute">class</span>=<span class="xml-attribute-value">"com.myco.impl.MyServiceImpl"</span>/&gt;</span></pre><pre><span lang="EN-US"><span style="">&nbsp; </span>&lt;<span class="xml-tag">interceptor </span><span class="xml-attribute">service-id</span>=<span class="xml-attribute-value">"hivemind.LoggingInterceptor"</span>/&gt;</span></pre><pre><span lang="EN-US"><!--<span class="xml-tag"--><service-point></service-point></span>&gt;</pre><p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"><!--[if mso & !supportInlineShapes & supportFields]><span
lang=EN-US><span style='mso-element:field-begin;mso-field-lock:yes'></span> SHAPE<span
style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span lang="EN-US"><!--[if gte vml 1]><v:group id="_x0000_s1026" editas="canvas"
 style='width:387pt;height:101.45pt;mso-position-horizontal-relative:char;
 mso-position-vertical-relative:line' coordorigin="2707,4825" coordsize="6730,1767">
 <o:lock v:ext="edit" aspectratio="t"/>
 <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"
  o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
  <v:stroke joinstyle="miter"/>
  <v:formulas>
   <v:f eqn="if lineDrawn pixelLineWidth 0"/>
   <v:f eqn="sum @0 1 0"/>
   <v:f eqn="sum 0 0 @1"/>
   <v:f eqn="prod @2 1 2"/>
   <v:f eqn="prod @3 21600 pixelWidth"/>
   <v:f eqn="prod @3 21600 pixelHeight"/>
   <v:f eqn="sum @0 0 1"/>
   <v:f eqn="prod @6 1 2"/>
   <v:f eqn="prod @7 21600 pixelWidth"/>
   <v:f eqn="sum @8 21600 0"/>
   <v:f eqn="prod @7 21600 pixelHeight"/>
   <v:f eqn="sum @10 21600 0"/>
  </v:formulas>
  <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
  <o:lock v:ext="edit" aspectratio="t"/>
 </v:shapetype><v:shape id="_x0000_s1027" type="#_x0000_t75" style='position:absolute;
  left:2707;top:4825;width:6730;height:1767' o:preferrelative="f">
  <v:fill o:detectmouseclick="t"/>
  <v:path o:extrusionok="t" o:connecttype="none"/>
  <o:lock v:ext="edit" text="t"/>
 </v:shape><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202"
  path="m,l,21600r21600,l21600,xe">
  <v:stroke joinstyle="miter"/>
  <v:path gradientshapeok="t" o:connecttype="rect"/>
 </v:shapetype><v:shape id="_x0000_s1028" type="#_x0000_t202" style='position:absolute;
  left:2707;top:4961;width:6574;height:1631' fillcolor="#ff9">
  <v:fill opacity=".75"/>
  <v:textbox style='mso-next-textbox:#_x0000_s1028'>
   <![if !mso]>
   <table cellpadding=0 cellspacing=0 width="100%">
    <tr>
     <td><![endif]>
     <div><pre><span lang=EN-US>&lt;<span class=xml-tag>service-point </span><span
     class=xml-attribute>id</span>=<span class=xml-attribute-value>&quot;MyService&quot; </span><span
     class=xml-attribute>interface</span>=<span class=xml-attribute-value>&quot;com.myco.MyServiceInterface&quot;</span>&gt;</span></pre><pre><span
     lang=EN-US><span style='mso-spacerun:yes'>  </span>&lt;<span
     class=xml-tag>create-instance </span><span class=xml-attribute>class</span>=<span
     class=xml-attribute-value>&quot;com.myco.impl.MyServiceImpl&quot;</span>/&gt;</span></pre><pre><span
     lang=EN-US><span style='mso-spacerun:yes'>  </span>&lt;<span
     class=xml-tag>interceptor </span><span class=xml-attribute>service-id</span>=<span
     class=xml-attribute-value>&quot;hivemind.LoggingInterceptor&quot;</span>/&gt;</span></pre><pre><span
     lang=EN-US>&lt;/<span class=xml-tag>service-point</span>&gt;</span></pre>
     <p class=MsoNormal><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
     </div>
     <![if !mso]></td>
    </tr>
   </table>
   <![endif]></v:textbox>
 </v:shape><w:wrap type="none"/>
 <w:anchorlock/>
</v:group><![endif]--><!--[if !vml]--><!--[endif]--></span><!--[if mso & !supportInlineShapes & supportFields]><span
lang=EN-US><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:387pt;
 height:101.45pt'>
 <v:imagedata croptop="-65520f" cropbottom="65520f"/>
</v:shape><span style='mso-element:field-end'></span></span><![endif]--></p>

<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">属性定义如下表所示<span lang="EN-US"><o:p></o:p></span></span></p>

<table class="MsoTableGrid" style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
 <tbody><tr style="">
  <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt;">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">属性<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 53.25pt;" width="71">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">类别<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 39.05pt;" width="52">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">必需<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 285.7pt;" width="381">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">描叙<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top">
  <p class="MsoNormal"><span lang="EN-US">id</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 53.25pt;" valign="top" width="71">
  <p class="MsoNormal"><span style="font-family: 宋体;">字符串</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 39.05pt;" valign="top" width="52">
  <p class="MsoNormal"><span style="font-family: 宋体;">是</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 285.7pt;" valign="top" width="381">
  <p class="MsoNormal"><span style="font-family: 宋体;">服务扩展点的简单</span><span lang="EN-US">id</span><span style="font-family: 宋体;">，全写的</span><span lang="EN-US">id</span><span style="font-family: 宋体;">通过前边加上模块</span><span lang="EN-US">id</span><span style="font-family: 宋体;">来获得</span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top">
  <p class="MsoNormal"><span lang="EN-US">interface</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 53.25pt;" valign="top" width="71">
  <p class="MsoNormal"><span style="font-family: 宋体;">类名</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 39.05pt;" valign="top" width="52">
  <p class="MsoNormal"><span style="font-family: 宋体;">否</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 285.7pt;" valign="top" width="381">
  <p class="MsoNormal"><span style="font-family: 宋体;">此服务扩展点支持的接口的名字，如果没有定义，则默认为服务</span><span lang="EN-US">id</span><span style="font-family: 宋体;">，全协的名称通过前边加上模块的报名来获得</span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top">
  <p class="MsoNormal"><span lang="EN-US">parameters-schema-id<b style=""><o:p></o:p></b></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 53.25pt;" valign="top" width="71">
  <p class="MsoNormal"><span style="font-family: 宋体;">字符串</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 39.05pt;" valign="top" width="52">
  <p class="MsoNormal"><span style="font-family: 宋体;">否</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 285.7pt;" valign="top" width="381">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">用来参考模块中定义的</span><span lang="EN-US">schema</span><span style="font-family: 宋体;">，</span><span lang="EN-US">schema</span><span style="font-family: 宋体;">定义了此服务需要用到的参数，当服是通过</span><span lang="EN-US">ServiceImplementationFactory</span><span style="font-family: 宋体;">或者</span>
  <span lang="EN-US">ServiceInterceptorFactory.</span><span style="font-family: 宋体;">类定义时。</span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt;" valign="top">
  <p class="MsoNormal"><span lang="EN-US">parameters-occurs</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 53.25pt;" valign="top" width="71">
  <p class="MsoNormal"><span class="codefrag"><span lang="EN-US">unbounded | 0..1 | 1
  | 1..n | none</span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 39.05pt;" valign="top" width="52">
  <p class="MsoNormal"><span style="font-family: 宋体;">否</span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 285.7pt;" valign="top" width="381">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;">参数元素允许的数量：<span lang="EN-US"><o:p></o:p></span></span></p>
  <ul type="disc"><li class="MsoNormal" style="text-align: left;"><b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">unbounded</span></b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">: </span><span style="font-size: 12pt; font-family: 宋体;">无穷<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;"><b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">0..1</span></b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">: </span><span style="font-size: 12pt; font-family: 宋体;">可选<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;"><b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">1</span></b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US"> (default) :</span><span style="font-size: 12pt; font-family: 宋体;">必须<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;"><b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">1..n</span></b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">: </span><span style="font-size: 12pt; font-family: 宋体;">至少一个<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="text-align: left;"><b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">none</span></b><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">:</span><span style="font-size: 12pt; font-family: 宋体;">不允许<span lang="EN-US"><o:p></o:p></span></span></li></ul>
  </td>
 </tr>
</tbody></table>

<p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"><span style="font-family: 宋体;">服务定义中可以包含</span><span style="font-size: 10.5pt;" times="" new="" roman="" ;="" lang="EN-US"><create-instance></create-instance></span><span style="font-size: 10.5pt;" times="" new="" roman="" ;="" lang="EN-US"><create-instance></create-instance></span><span style="font-size: 10.5pt; font-family: 宋体;">、</span><span style="font-size: 10.5pt;" times="" new="" roman="" ;=""> <span lang="EN-US"><interceptor></interceptor></span></span><span style="font-size: 10.5pt; font-family: 宋体;">、</span><span style="font-size: 10.5pt;" times="" new="" roman="" ;="" lang="EN-US"><invoke-factory> </invoke-factory></span><span style="font-size: 10.5pt; font-family: 宋体;">、</span><span style="font-size: 10.5pt;" times="" new="" roman="" ;="" lang="EN-US"><parameters-schema></parameters-schema></span><span style="font-family: 宋体;">定义。</span></p>

<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">4</span><span style="font-family: 宋体;">、服务的创建</span></p>

<p class="MsoNormal" style="text-align: left; text-indent: 21.75pt;" align="left"><span style="font-family: 宋体;">服务可以通过两种方式来构造实例创建和实现工厂，实例创建表现为</span><span style="" lang="EN-US"><create-instance></create-instance></span><span style="font-family: 宋体;">元素，</span><span style="font-family: 宋体;">实现工厂表现为</span><span style="" lang="EN-US"><invoke-factory></invoke-factory></span><span style="font-family: 宋体;">元素。</span></p>

<ul type="disc"><li class="MsoNormal" style="text-align: left;"><span style="" lang="EN-US"><create-instance></create-instance></span><span style="font-family: 宋体;" lang="EN-US"> </span><span style="font-family: 宋体;">直接实例化一个接口的实现类<span lang="EN-US"><o:p></o:p></span></span></li></ul>

<table class="MsoTableGrid" style="border: medium none ; width: 426.1pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0" width="568">
 <tbody><tr style="">
  <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 49.8pt;" width="66">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">属性<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 168pt;" width="224">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">类别<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" width="59">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">必需<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 164.4pt;" width="219">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">描叙<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 49.8pt;" valign="top" width="66">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">class</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168pt;" valign="top" width="224">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">类名<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" valign="top" width="59">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">是<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 164.4pt;" valign="top" width="219">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">用来实例化的类名，此类中的属性不需要额外配置<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 49.8pt;" valign="top" width="66">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">model<o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 168pt;" valign="top" width="224">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">primitive | singleton | threaded | pooled</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" valign="top" width="59">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">否<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 164.4pt;" valign="top" width="219">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">指定构造模式，<span lang="EN-US">singleton</span>是默认模式<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
 </tr>
</tbody></table>

<ul type="disc"><li class="MsoNormal" style="text-align: left;"><span style="" lang="EN-US"><invoke-factory></invoke-factory></span><span style="font-family: 宋体;" lang="EN-US"> </span><span style="font-family: 宋体;">通过另一个服务来实例化一个接口的实现类，它包含一个<span lang="EN-US">service-id</span>属性，定义了一个实现</span><span lang="EN-US">ServiceImplementationFactory</span><span style="font-family: 宋体;">接口的服务。通过此方式创建的<span lang="EN-US">service</span>将通过<span lang="EN-US">service</span>的接口类型自动绑定各个服务。<span lang="EN-US"><o:p></o:p></span></span></li></ul>

<table class="MsoTableGrid" style="border: medium none ; width: 432.6pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0" width="577">
 <tbody><tr style="">
  <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 106.5pt;" width="142">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">属性<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 151.8pt;" width="202">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">类别<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 45pt;" width="60">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">必需<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 129.3pt;" width="172">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">描叙<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 106.5pt;" valign="top" width="142">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">service-id</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 151.8pt;" valign="top" width="202">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">字符串<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 45pt;" valign="top" width="60">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">否<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 129.3pt;" valign="top" width="172">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">工厂服务的<span lang="EN-US">id</span>，可以是统一模块中的简单<span lang="EN-US">id</span>，也可以是全写的<span lang="EN-US">id</span>。如果没有确定，默认为</span><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">hivemind.BuilderFactory</span><span style="font-size: 12pt; font-family: 宋体;">服务</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 106.5pt;" valign="top" width="142">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">model<o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 151.8pt;" valign="top" width="202">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">primitive | singleton <br>
  | threaded | pooled<o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 45pt;" valign="top" width="60">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">否<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 129.3pt;" valign="top" width="172">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">指定构造模式，<span lang="EN-US">singleton</span>是默认模式<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
 </tr>
</tbody></table>

<p class="MsoNormal" style="margin-left: 18pt; text-align: left;" align="left"><span style="font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p>

<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;" lang="EN-US">5</span><span style="font-family: 宋体;">、拦截器的定义<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="text-align: left; text-indent: 21pt;" align="left"><span style="font-family: 宋体;">拦截器使用<span lang="EN-US"><interceptor></interceptor></span>来表示，属性<span lang="EN-US">service-id</span>标识一个服务拦截器工厂服务，工厂服务实现了<span lang="EN-US">ServiceInterceptorFactory</span>接口。<span lang="EN-US"><o:p></o:p></span></span></p>

<table class="MsoTableGrid" style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
 <tbody><tr style="">
  <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 79.8pt;" width="106">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">属性<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 51.3pt;" width="68">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">类别<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" width="59">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">必需<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
  <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 244.4pt;" width="326">
  <p class="MsoNormal" style="text-align: center;" align="center"><b><span style="font-size: 12pt; font-family: 宋体;">描叙<span lang="EN-US"><o:p></o:p></span></span></b></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 79.8pt;" valign="top" width="106">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">service-id</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 51.3pt;" valign="top" width="68">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">字符串<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" valign="top" width="59">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">是<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 244.4pt;" valign="top" width="326">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">服务的<span lang="EN-US">id<o:p></o:p></span></span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 79.8pt;" valign="top" width="106">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">before<o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 51.3pt;" valign="top" width="68">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">字符串<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" valign="top" width="59">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">否<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 244.4pt;" valign="top" width="326">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个服务<span lang="EN-US">id</span>的列表，这些服务需要在此服务后执行<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 79.8pt;" valign="top" width="106">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">after<o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 51.3pt;" valign="top" width="68">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">字符串<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" valign="top" width="59">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">否<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 244.4pt;" valign="top" width="326">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个服务<span lang="EN-US">id</span>的列表，这些服务需要在此服务前执行<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
 </tr>
 <tr style="">
  <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 79.8pt;" valign="top" width="106">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 12pt; font-family: 宋体;" lang="EN-US">name<o:p></o:p></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 51.3pt;" valign="top" width="68">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">字符串<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.9pt;" valign="top" width="59">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">否<span lang="EN-US"><o:p></o:p></span></span></p>
  </td>
  <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 244.4pt;" valign="top" width="326">
  <p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">用来排序，没有指定的话，默认为<span lang="EN-US">service-id<o:p></o:p></span></span></p>
  </td>
 </tr>
</tbody></table>

<p class="MsoNormal" style="text-align: left; text-indent: 21pt;" align="left"><span style="font-family: 宋体;">服务<span lang="EN-US">id</span>的列表以逗号分隔每个服务。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;" lang="EN-US">6</span><span style="font-family: 宋体;">、工厂参数的定义<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp; &lt;i</span></span>nvoke-factory&gt;<span style="font-family: 宋体;">可能需要取得一些参数来配置需要的信息，所以定制工厂的参数是必要的。</span>Schema<span style="font-family: 宋体;">用于统一定义数据的表现形式，针对参数的定义有个具体的</span>parameters-schema<span style="font-family: 宋体;">来使用，</span>parameters-schema<span style="font-family: 宋体;">不象</span>shema<span style="font-family: 宋体;">那样可以单独定义，它只能出现在</span><service-point></service-point><span style="font-family: 宋体;">定义中，而且跟</span>parameters-schema-id<span style="font-family: 宋体;">的定义互斥，两者只能出现一个。</span><span style="font-family: 宋体;" lang="EN-US"><o:p></o:p></span></p>

<img src ="http://www.blogjava.net/jimlaren/aggbug/17140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jimlaren/" target="_blank">jimlaren</a> 2005-10-28 10:48 <a href="http://www.blogjava.net/jimlaren/articles/17140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>