欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用XML實(shí)現(xiàn)多渠道接入網(wǎng)站的構(gòu)架

互聯(lián)網(wǎng)   發(fā)布時(shí)間:2008-10-17 20:15:59   作者:佚名   我要評(píng)論
  其實(shí)寫(xiě)這篇文章的目的最多的想法是把自己在去年在瑞士做項(xiàng)目時(shí)應(yīng)用的一個(gè)框架給展現(xiàn)出來(lái)讓大家共享,但我又有點(diǎn)擔(dān)心我的表達(dá)能力不能將我在里面使用的思想很好的表現(xiàn)出來(lái),所以遲遲 不敢下筆,最后還是下了決心,寫(xiě)吧, 不行就在好好改改,當(dāng)然也希望大家多提些意見(jiàn)。

  其余XML則可按這樣的規(guī)則來(lái)定制
  五.技術(shù)實(shí)現(xiàn)
  RouterFactory
  package com.web.router;
import com.web.platform.Exception.RouterException;
import java.util.java/util/Hashtable.java.html" target="_blank">Hashtable;

  /**
* Router產(chǎn)生和清除的類(lèi)
*/
public class RouterFactory 
{
  /**
   * Router存儲(chǔ)的樹(shù)front
   */
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairFront = null;
  /**
   * Router存儲(chǔ)的樹(shù)back
   */
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairBack = null;
/**
   * Router存儲(chǔ)的樹(shù)
   */
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueueRouter = null;
  /**
   * 返回的XMLRouter
   */
  public static XMLRouter instance = null;
  /**
   * Router的定義
   */
  public static RouterDefine routerdefine = null;
  /**
   * Router的ID號(hào)
   */
  public static long routeIndex = 0;
  /**
   * @roseuid 3F169C21027C
   */
  public RouterFactory() 
  {
  }
  /**
   * 初始化Hashtable和Vector
   */
  public static void initFactory() throws java/lang/Exception.java.html" target="_blank">Exception
  {
      QueuePairFront = new java/util/Hashtable.java.html" target="_blank">Hashtable(); 
      QueuePairBack = new java/util/Hashtable.java.html" target="_blank">Hashtable(); 
      QueueRouter    = new java/util/Hashtable.java.html" target="_blank">Hashtable();
      initRouteDefine();
  }
/**
   * 初始化Route的設(shè)置
   * 
   */
  private static void initRouteDefine() throws java/lang/Exception.java.html" target="_blank">Exception
  {
      if( routerdefine == null )
        routerdefine = new RouterDefine();
      routerdefine.loadRouterDef();
  }
  /**
   * 返回實(shí)例
   * @return com.web.router.XMLRouter
   */
  public static XMLRouter getInstance(long index) throws RouterException
  {
     return (XMLRouter)QueueRouter.get(new java/lang/Long.java.html" target="_blank">Long(index));
  }
  /**
   * 產(chǎn)生一個(gè)XMLRouter的實(shí)例
   * @return com.web.router.XMLRouter
   * @roseuid 3F1618A103BC
   */
  public static XMLRouter popInstance() throws RouterException
  {
      routeIndex ;
      instance = new XMLRouter(routeIndex);
      setDefine( instance );
      QueueRouter.put(new java/lang/Long.java.html" target="_blank">Long(routeIndex), instance);     
     return instance;
  }
  /**
   * 清空Hashtable,Vector等
   * @roseuid 3F1618B203C1
   */
  private static void freeResource() throws java/lang/Exception.java.html" target="_blank">Exception
  {
      QueuePairFront.clear();
      QueuePairBack.clear();
      QueueRouter.clear();
      QueuePairFront = QueuePairBack = QueueRouter = null;
}
  /**
   * 清除實(shí)例
   * @param instanceID
   * @throws Exception
   */
  public static void removeInstance(XMLRouter instance) throws java/lang/Exception.java.html" target="_blank">Exception 
  {
      instance.clear();
     QueueRouter.remove( new java/lang/Long.java.html" target="_blank">Long(instance.getIndex() ) ) ;
  }
/**
* Method isNull.
* @return boolean
*/
  public static boolean isNull()
  {
     …… 
      return false;
  }
}

  XMLRouter
  package com.web.router;
import com.web.platform.Exception.RouterException;
import com.web.common.*;
import java.util.*;
import java.lang.reflect.java/lang/reflect/Method.java.html" target="_blank">Method;
import java.lang.reflect.java/lang/reflect/Constructor.java.html" target="_blank">Constructor;
/**
* @author keli
* @version 0.0.1
* 平臺(tái)的關(guān)鍵,路由的類(lèi),每個(gè)Router將從RouterFactory里讀取
* Router存儲(chǔ)的樹(shù)front,和back,routeIndex,目的是為了能在路由
* 之后可以清除申請(qǐng)的對(duì)象。
* Router可以實(shí)現(xiàn)同步和異步的功能.
*/
public class XMLRouter 
{
  /**
   * Router存儲(chǔ)的樹(shù)front
   */
   private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairFront = null;
  /**
   * Router存儲(chǔ)的樹(shù)back
   */
   private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairBack = null;
/**
   * 本router的index號(hào)碼
   */
   private long routeIndex = 0;
/**
   * router的設(shè)置
   */
   private RouterDefine define = null;  
/**
   * 用于判斷是路由的起回點(diǎn)
   */
   private java/lang/String.java.html" target="_blank">String action = "";
   /**
   *此變量只是用于在routeto方法中申請(qǐng)新的class 
   */
   private java/lang/String.java.html" target="_blank">String classname = "";
    /**
   */
    public XMLRouter(long index) 
    {
     routeIndex = index;
    }
    /**
   * 路由
   * @throws Exception
   * @roseuid 3F1616BD0186
   */
    public void routing(Env env) throws RouterException, java/lang/Exception.java.html" target="_blank">Exception 
    {
      /*如果為起點(diǎn)*/
     if( action.equalsIgnoreCase( RouterConstant.CFG_FUNC_ROUTETO ) )  
     {
       ……
     }
     /*如果為返回點(diǎn)*/
     else if( action.equalsIgnoreCase( RouterConstant.CFG_FUNC_ROUTEBACK ) )
     {
     ……
     }
     /*否則為錯(cuò)誤*/
     else
       throw new RouterException("Set Router action error.");
    }

   /**
   * 讀取本Router的id號(hào).
   * @return long
   */
   public long getIndex()
   {
      return routeIndex;    
   }
/**
   * 清除所有對(duì)象.
   * @throws RouterException
   */
   public void clear() throws RouterException
   {
     QueuePairFront.remove(new java/lang/Long.java.html" target="_blank">Long(routeIndex));
     QueuePairBack.remove(new java/lang/Long.java.html" target="_blank">Long(routeIndex));
     /*系統(tǒng)回收*/
     java/lang/System.java.html" target="_blank">System.runFinalization();     
   }
   /**
   * 設(shè)置本Router的設(shè)置.
   * @param def
   * @throws RouterException
   */
   public void setDefine(RouterDefine def) throws RouterException
   {
     define = def;  
   } 
   /**
   * 設(shè)置action的值
   * @param actionName
   * @throws RouterException
   */
   public void setAction( java/lang/String.java.html" target="_blank">String actionName )
   {
     action = actionName;    
   }
}

  Service類(lèi)
  package com.web.common;
import com.web.platform.Exception.RouterException;
/**
* Service的父類(lèi),abstract 
*/
public abstract class RouteService 
{
  /**
   */
  public RouteService() 
  {
  }
  /**
   * routeTo方法,是交易的起點(diǎn)。
   * @param env
   * @throws RouterException
   */
  public abstract void routeto(Env env) throws RouterException;
  /**
   * routeBack,交易的結(jié)束點(diǎn),
   * @param env
   * @throws RouterException
   */
  public abstract void routeback(Env env) throws RouterException;
  /**
   * routeaccept方法,是交易的接收點(diǎn),也是routeto的接收函數(shù),
   * routeaccept為被動(dòng)交易對(duì)象的主要處理函數(shù)
   * @param env
   * @throws RouterException
   */
  public abstract void routeaccept(Env env) throws RouterException;  
  /**
   * routing方法,是Service對(duì)外的接口函數(shù)
   * @throws RouterException
   */
  public abstract void routing() throws RouterException;

  接下來(lái)則需要實(shí)現(xiàn)所有的Services的類(lèi)了,這里就不做介紹了.
  六.說(shuō)明
  這個(gè)Router到目前為止只能實(shí)現(xiàn)同步的交易, 暫時(shí)不支持異步的交易,但是由于對(duì)Router使用了Composite的模式設(shè)計(jì)的,實(shí)現(xiàn)異步交易也是可以擴(kuò)展的,這里不做詳細(xì)分析.
  這篇文章是我工作的一個(gè)總結(jié),希望能對(duì)大家有所幫助.不足之處希望多多指教.

相關(guān)文章

  • MIME類(lèi)型中application/xml與text/xml的區(qū)別介紹

    這篇文章介紹了MIME類(lèi)型中application/xml與text/xml的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-28
  • 詳解XML中的模式Schema

    XML中擁有Schema特性,能夠比DTD更加強(qiáng)大地引入元素結(jié)構(gòu),下面我們就來(lái)詳解XML中的模式Schema的概念及作用和用法,需要的朋友可以參考下
    2021-11-30
  • XML基本概念入門(mén)學(xué)習(xí)指南

    這篇文章主要介紹了XML基本概念入門(mén)學(xué)習(xí)指南,包括其與HTML的關(guān)系以及元素和特殊標(biāo)簽等,需要的朋友可以參考下
    2016-06-24
  • XML中的DTD文檔類(lèi)型定義完全解析

    XML標(biāo)簽的自定義功能非常強(qiáng)大,比如本文將要講解的DTD(Document Type Definition)就帶給人們一種面向?qū)ο蟀愕母杏X(jué),well,下面就來(lái)看一下XML中的DTD文件類(lèi)型定義完全解析
    2016-06-24
  • 簡(jiǎn)介XML文檔的閱讀與編輯

    這篇文章主要介紹了XML文件的閱讀與編輯,最常用的工具當(dāng)然還是瀏覽器中的控制臺(tái)與源代碼查看,需要的朋友可以參考下
    2016-02-16
  • 簡(jiǎn)單了解XML中的命名空間

    這篇文章主要介紹了XML的命名空間,包括命名空間的聲明等XML入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-02-16
  • 解析XML中的樹(shù)形結(jié)構(gòu)與DOM文檔對(duì)象模型

    這篇文章主要介紹了XML中的樹(shù)形結(jié)構(gòu)與DOM文檔對(duì)象模型,文中舉了JavaScript解析DOM對(duì)象的例子,需要的朋友可以參考下
    2016-02-15
  • 詳解XML編程中的模式定義XSD

    這篇文章主要介紹了詳解XML編程中的模式定義XSD,講解了如何在XML文檔中聲明模式及定義類(lèi)型等內(nèi)容,需要的朋友可以參考下
    2016-02-15
  • 深入解析XML中的DTD文檔類(lèi)型定義

    這篇文章主要介紹了XML中的DTD文檔類(lèi)型定義,是XML入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-02-15
  • 淺談XML代碼編寫(xiě)的編碼與驗(yàn)證問(wèn)題

    這篇文章主要介紹了XML代碼編寫(xiě)的編碼與驗(yàn)證問(wèn)題,與HTML類(lèi)似,XML文件的編碼也能在序言部分被指定,需要的朋友可以參考下
    2016-02-15

最新評(píng)論