欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

怎樣使用XML實現多渠道接入網站的構架_Xml教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解讀從實際應用中了解WML
學習自然語言的最好方法就是溶入相應的語言環境在交流中學習,學習一種編程語言的最好方法就是看例程。為了幫助大家建立wml應用的第一印象,所以請大家先看第一個例子:

一.背景

在現在的網站中,接入的渠道是越來越多了,技術也是越來越先進,WAP, SMS,EMAIL, 傳統的Web, Socket等等,如果連數據庫和LDAP也算接入的話,那在設計之中需要擴展的空間要做到很好 很好,才保證在添加新的渠道情況下不需要更多的修改代碼甚至不改代碼的情況。但可能嗎?我想也不可能,但有什么方式可以更好的解決這種多渠道接入的框架的完美性呢?

二.構架

【圖一】

如圖一所顯示,在現有的所有接入都已經使用上的時候,設計者看的都眼花繚亂了,如果是為了湊份子,那這些程序怎么寫都可以,而且也肯定可以實現,但維護起來就會比較痛苦,還是回到那個問題,怎么可以實現更完美呢?如圖二顯示:

【圖二】

圖二看起來象個八爪的章魚,章魚腿分別連接所有的接入渠道,進行連接所有這些渠道的核心就是這個章魚的頭XMLRouter,Router在此的作用是溝通所有渠道,實現數據的路由,爭強系統在構架上的擴展性和靈活性,好處會很多很多。稱呼為XMLRouter是因為如果不使用XML這種靈活而又規范的語言來做為數據傳輸的媒介,那Router的工作量也同樣會成倍的增加,定義好XML的規范后將為以后的擴展帶來很多好處。

三.思想和模式

XMLRouter的最初想法來自于計算機的主板和<>之中的Builder Pattern, 計算機主板的PCI 插槽定義了PCI的規范,只要你生產的卡符合PCI標準,那你插入到這個主板上就可以工作, 至于里面是怎么工作的則是已經封裝好了. Builder Pattern則是提出將復雜的構建分離開來, 一步一步的進行實現.XMLRouter是將這些復雜的渠道分離開來,一個個的進行表現.

Services思想:為了能和Router進行溝通,在這些渠道接入時必須定義統一的接口,這里成為Services, 只要符合Services規范的程序就可以接入到Router并進行數據的路由.

Factory模式和Composite模式

XMLRouter在實際的設計中將采用Factory模式產生,Router由RouterFactory生產, 在投入使用時將放置于隊列中,傳遞數據和接收數據以及返回數據都從隊列中取相應的Router來調用,應用了Composite的模式.

四.XML配置文件

XML文件對于Router之中的使用分為兩個部分, 第一個是Router的配置,如:

以下是引用片段:
<?xml version="1.0" ?>
<services>
<!-- database Service -->
<service name="database" type="database" class="com.web.service.DBService">
<connector
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://192.168.0.179:1433" user="test"
passwd="test" />
</service>
<!-- Web Service-->
<service name="web" type="web" class="com.web.service.WebService" >
<connector />
</service>
……
</services>

這是Router的配置文件, service節點代表需要接入的渠道, service節點包含connector子節點, 子節點的配置根據type來區分, 如果是database則包含url, user, passwd,driver等屬性, 如果是socket則包含 port, maxthread等屬性, 屬性值可以根據自己的定義來配置.

另一種XML文件則是XML交易數據文件,用于在所有的services中傳遞數據,每個Services自己包涵一個相應的XML文件,比如webtrans.xml格式如下:

以下是引用片段:
<?xml version="1.0" ?>
<transaction>
<trans name="addDoc" service="database" method="insert">
<property name="createtime" type="timestamp"/>
<property name="creatorid" type="long"/>
<property name="doctypeid" type="int"/>
<property name="docstatusid" type="int"/>
</trans>
</transaction>

相應的dbtrans.xml格式如下

以下是引用片段:
<trans name="addDoc" table="TDOC_DOCS" method="insert">
<primarykey name="docid" />
<set>
<property name="createtime" type="timestamp"/>
<property name="creatorid" type="long"/>
<property name="doctypeid" type="int"/>
<property name="docstatusid" type="int"/>
</set>
</trans>


其余XML則可按這樣的規則來定制

五.技術實現

RouterFactory

以下是引用片段:
package com.web.router;
import com.web.platform.Exception.RouterException;
import java.util.java/util/Hashtable.java.html" target="_blank">Hashtable;

以下是引用片段:
/**
* Router產生和清除的類
*/
public class RouterFactory 
{
  /**
* Router存儲的樹front
*/
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairFront = null;
  /**
* Router存儲的樹back
*/
  private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairBack = null;
/**
* Router存儲的樹
*/
  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號
*/
  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的設置
* 
*/
  private static void initRouteDefine() throws java/lang/Exception.java.html" target="_blank">Exception
  {
  if( routerdefine == null )
  routerdefine = new RouterDefine();
  routerdefine.loadRouterDef();
  }
  /**
* 返回實例
* @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));
  }

  /**
* 產生一個XMLRouter的實例
* @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;
}
  /**
* 清除實例
* @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
* 平臺的關鍵,路由的類,每個Router將從RouterFactory里讀取
* Router存儲的樹front,和back,routeIndex,目的是為了能在路由
* 之后可以清除申請的對象。
* Router可以實現同步和異步的功能.
*/
public class XMLRouter 
{
  /**
* Router存儲的樹front
*/
private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairFront = null;
  /**
* Router存儲的樹back
*/
private static java/util/Hashtable.java.html" target="_blank">Hashtable QueuePairBack = null;
/**
* 本router的index號碼
*/
private long routeIndex = 0;
/**
* router的設置
*/
private RouterDefine define = null;
/**
* 用于判斷是路由的起回點
*/
private java/lang/String.java.html" target="_blank">String action = "";
/**
*此變量只是用于在routeto方法中申請新的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 
  {
  /*如果為起點*/
if( action.equalsIgnoreCase( RouterConstant.CFG_FUNC_ROUTETO ) )
{
……
}
/*如果為返回點*/
else if( action.equalsIgnoreCase( RouterConstant.CFG_FUNC_ROUTEBACK ) )
{
……
}
/*否則為錯誤*/
else
throw new RouterException("Set Router action error.");
  }


/**
* 讀取本Router的id號.
* @return long
*/
public long getIndex()
{
  return routeIndex;
}

/**
* 清除所有對象.
* @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));
/*系統回收*/
java/lang/System.java.html" target="_blank">System.runFinalization(); 
}

/**
* 設置本Router的設置.
* @param def
* @throws RouterException
*/
public void setDefine(RouterDefine def) throws RouterException
{
define = def;
} 
/**
* 設置action的值
* @param actionName
* @throws RouterException
*/
public void setAction( java/lang/String.java.html" target="_blank">String actionName )
{
action = actionName;
}
}

Service類

以下是引用片段:
package com.web.common;
import com.web.platform.Exception.RouterException;
/**
* Service的父類,abstract 
*/
public abstract class RouteService 
{
  /**
*/
  public RouteService() 
  {
  }
  /**
* routeTo方法,是交易的起點。
* @param env
* @throws RouterException
*/
  public abstract void routeto(Env env) throws RouterException;
  /**
* routeBack,交易的結束點,
* @param env
* @throws RouterException
*/
  public abstract void routeback(Env env) throws RouterException;
  /**
* routeaccept方法,是交易的接收點,也是routeto的接收函數,
* routeaccept為被動交易對象的主要處理函數
* @param env
* @throws RouterException
*/
  public abstract void routeaccept(Env env) throws RouterException;
  /**
* routing方法,是Service對外的接口函數
* @throws RouterException
*/
  public abstract void routing() throws RouterException;

接下來則需要實現所有的Services的類了,這里就不做介紹了.

六.說明

這個Router到目前為止只能實現同步的交易, 暫時不支持異步的交易,但是由于對Router使用了Composite的模式設計的,實現異步交易也是可以擴展的,這里不做詳細分析.

分享:解析XML數據查詢技術已經成為現今的研究熱點
XML(可擴展標記語言)已成為Web應用中數據表示和數據交換的標準,隨著Internet的快速發展,尤其是電子商務,Web服務等應用的廣泛使用,XML類型的數據成為當前主流的數據形式。因此XML數據的管理技術

來源:模板無憂//所屬分類:Xml教程/更新時間:2009-08-01
相關Xml教程
久久久精品中文字幕麻豆发布| 日韩一二三区| 免费日韩av| 欧美性猛交一区二区三区精品| 国产精品999999| 黄色小视频免费网站| av一区二区三| 亚洲综合另类| 在线播放中文字幕一区| 国产精品久久久久久免费观看| 最新中文字幕视频| 不卡一区视频| 99久久婷婷国产| 色偷偷偷综合中文字幕;dd| 日本精品福利视频| 国产成人无码av| 亚洲综合色网| 在线免费观看日本欧美| 亚洲一区制服诱惑| 国产艳俗歌舞表演hd| 国产aa精品| 久久这里只精品最新地址| 中文字幕av日韩| 拔插拔插海外华人免费| 欧美男人天堂网| 亚洲午夜精品久久久久久app| 色婷婷综合久久久| 成人在线资源网址| 青青操在线播放| 久久不见久久见免费视频7| 亚洲欧美另类在线| 国产精品久久在线观看| 久久午夜夜伦鲁鲁片| 国产剧情一区二区在线观看| 久久久99精品久久| 性色av一区二区三区红粉影视| 奇米影音第四色| 波多视频一区| av一二三不卡影片| 欧美成人精品三级在线观看| 日韩激情av在线播放| 成人免费看吃奶视频网站| 中国极品少妇videossexhd| 亚洲欧美一级| 国产欧美日本一区二区三区| 国精产品一区一区三区有限在线| 91欧美视频在线| 吉吉日韩欧美| 不卡大黄网站免费看| 久久国产精品影片| 99999精品| 宅男噜噜噜66国产精品免费| 国产丝袜在线精品| 欧美亚洲激情视频| 国产美女视频免费观看下载软件| 国产精品毛片aⅴ一区二区三区| 久久综合给合久久狠狠狠97色69| 国语自产精品视频在线看| 免费欧美一级片| www999久久| 国产精品初高中害羞小美女文| 国产成人综合亚洲| 在线观看福利片| 久久综合色占| 91官网在线观看| 涩涩涩999| 中文资源在线播放| 蜜桃91丨九色丨蝌蚪91桃色| 日韩影院二区| 亚洲欧美日韩国产一区二区三区| 国产欧美精品日韩| 制服丨自拍丨欧美丨动漫丨| 99久久99久久精品国产片桃花| 欧美色图一区二区三区| 亚洲高清不卡一区| 中国女人一级一次看片| 看片网站欧美日韩| 久久午夜a级毛片| 亚洲精品在线网址| 一区二区在线视频观看| 亚洲成在线观看| 精品视频一区二区| 男人日女人网站| 日韩av中文字幕一区二区三区| 国产亚洲精品久久久| av污在线观看| 日韩中文字幕在线一区| 亚洲国产精品影院| 久久久久资源| 日韩av播放器| 日韩欧美国产成人精品免费| 国产国产精品| 精品99一区二区| 日韩av资源在线| 久久精品国产福利| 亚洲美女区一区| 精品视频免费观看| 国产又粗又猛又爽又| 另类小说一区二区三区| 久久国产精品久久久久| 成人做爰69片免费| 精品免费在线| 日韩欧美一级二级三级| 中国丰满人妻videoshd| 综合久久av| 亚洲va欧美va人人爽| 日产精品一线二线三线芒果| 一级片aaaa| 成人一区二区三区视频在线观看| 欧美中文在线字幕| 东方av正在进入| 久久福利一区| 欧美成人高清视频| 人妻av无码一区二区三区| 一区二区三区四区电影| 精品在线观看国产| 亚洲天堂av一区二区三区| 亚州综合一区| 欧美一区2区视频在线观看| a在线视频观看| 国产精品日韩精品在线播放| 狠狠色噜噜狠狠狠狠97| 国产盗摄视频在线观看| 欧美性xxx| 亚洲线精品一区二区三区 | 国产精品青青草| 中国一区二区视频| 91免费在线看| 成人激情直播| 国产精品久久久久毛片| 国产日韩v精品一区二区| 国产欧美日韩亚洲| 精品国产九九九| 中文字幕制服丝袜一区二区三区| 久久精品国产美女| 亚洲高清视频在线播放| 亚洲色图视频网| 台湾成人av| 日韩电影网站| 亚瑟在线精品视频| www.国产二区| 一区二区三区日本视频| 在线观看日韩毛片| 日韩网址在线观看| 牛牛影视久久网| 亚洲а∨天堂久久精品9966| www.久久com| 中文字幕一区二区三三| 日韩专区在线观看| 亚洲精品一区二区三区影院忠贞| 一区二区毛片| 久久久久日韩精品久久久男男| 国产又粗又硬又长又爽| 黄页网站大全一区二区| 国产日韩专区在线| 一二三区中文字幕| 亚洲人成网站精品片在线观看| 色一情一乱一伦一区二区三区丨| 蜜桃精品在线| 欧美色综合网站| 天堂视频免费看| 亚洲91视频| 久久成人精品视频| 欧美交换国产一区内射| 成人一级片网址| 国产精品视频免费一区| 四虎永久在线观看| 狠狠做深爱婷婷久久综合一区| 一二三四视频社区在线| 牲欧美videos精品| 亚洲欧美一区二区三区四区| 亚洲久久久久久久| 蜜臀av一区二区在线免费观看 | 欧美视频精品一区| 免费观看精品视频| 日本欧美视频| 久久99久久99精品免观看粉嫩| 国产一级中文字幕| 久久久精品国产99久久精品芒果| 亚洲激情一区二区三区| 精品视频一区二区三区| 欧美精品一区二区三区蜜桃视频| 50一60岁老妇女毛片| 日韩精品视频网| 成人免费在线视频网站| 日韩一级片免费| 欧美在线观看一二区| 欧美精品 - 色网| 亚洲国产三级| 国产欧美精品一区二区三区介绍| 国产高清视频免费观看| 欧美性少妇18aaaa视频| 手机在线国产视频| 国产午夜精品一区二区三区欧美| 国产精品黄视频| 精品国产无码一区二区| 一本色道久久综合亚洲91| 九九热精品国产| 亚洲综合激情| 97超碰人人看人人 | 日韩在线观看av| 香蕉视频一区二区| 国产精品美女www爽爽爽| 大胆欧美熟妇xx| 日韩精品水蜜桃| 2019中文字幕免费视频| 91av久久久| 色综合天天综合给合国产| 日本少妇一区二区三区| 日韩福利电影在线观看| 国产98在线|日韩| 日韩城人网站| 亚洲码在线观看| 久久精品视频国产| 亚洲丝袜另类动漫二区| 国产视频一区二区三区在线播放 | 色综合久久悠悠| 秋霞av一区二区三区| 亚洲激情自拍视频| 日本久久精品一区二区| 一本一本久久| 成人久久18免费网站漫画| 福利视频亚洲| 亚洲欧美日本另类| 日韩精品一区三区| 亚洲免费伊人电影| 91 在线视频观看| 老鸭窝毛片一区二区三区| 99热最新在线| 国产精品成人3p一区二区三区| 一本综合精品| 日韩一区二区三区视频在线| 日本黄色动态图| 国产精品一区二区在线播放| 四虎影院一区二区三区 | 国产精选久久久久久| 欧美性xxx| 亚洲精品久久久久国产| 清纯粉嫩极品夜夜嗨av| 最新成人av在线| 天天操狠狠操夜夜操| 日韩av一区二区在线影视| 久久综合毛片| 欧美女王vk| 26uuu日韩精品一区二区| 婷婷色在线观看| 亚洲国产精品久久久久秋霞不卡 | 综合激情一区| 亚洲一区免费网站| 亚洲成人偷拍| 欧美黑人视频一区| 亚洲女人18毛片水真多| 精品国产凹凸成av人网站| 成人免费看片98| 亚洲国产日产av| 大尺度做爰床戏呻吟舒畅| 97精品电影院| 国产欧美在线一区| 日韩精品免费视频人成| 亚洲精品高清国产一线久久| 99久久www免费| 亚洲永久免费观看| 国产图片一区| 欧美专区第一页| 成人黄色毛片| 久久夜色撩人精品| 亚洲欧美黄色片| 国产视频一区在线| 高潮无码精品色欲av午夜福利| 欧洲视频一区二区| 北条麻妃在线观看视频| 亚洲高清在线视频| 国产精品毛片一区二区| 国产精品福利av | 国产欧美一二三区| 中文字幕中文在线| 国产成人午夜视频| 成年人午夜视频在线观看| 午夜在线a亚洲v天堂网2018| 日韩av电影免费播放| 亚洲国产老妈| 狠狠色综合欧美激情| 国产一区二区三区网| 成人春色激情网| 91精品短视频| 奇米4444一区二区三区| 深夜日韩欧美| 欧美精品videos另类日本| 亚洲www.| 另类色图亚洲色图| 天堂网在线播放| 色一情一乱一区二区| 内射无码专区久久亚洲| 国产一区二区三区在线观看视频 | 欧美日韩不卡在线| 国产午夜久久久| 欧美美女视频在线观看| 欧美三级韩国三级日本三斤在线观看| 欧美在线999| 国产无精乱码一区二区三区| 欧美日韩国产一级二级| 91精品国产高潮对白| 欧美精三区欧美精三区| 久久精品一二区| 91精品综合久久久久久| 亚洲成熟少妇视频在线观看| 日韩欧美国产麻豆| 亚洲天堂avav| 日韩精品丝袜在线| 国产高清在线免费| 爱福利视频一区| 欧美色片在线观看| 国外成人免费在线播放 | 久久人人99| 久久综合入口| 国产欧美日韩成人| 国产欧美日韩在线| 国产ts在线观看| 亚洲人成影院在线观看| 91激情视频在线观看| 欧美日韩国产在线看| 欧美精品入口蜜桃| 91精品国产综合久久婷婷香蕉| 好吊色在线视频| 亚洲精品在线视频| 天天干在线观看| 欧美日本啪啪无遮挡网站| 日韩伦理一区二区| 国产精品成人久久久久| 国产91一区| 欧美一级日本a级v片| 国产精品久久久久久久久久妞妞| 久久久久久av无码免费网站下载| 久久99精品久久久久久久久久久久| 久久美女福利视频| 91视频免费播放| 特级西西人体wwwww| 天天影视色香欲综合网老头| 日本特黄一级片| 亚洲成人激情在线| 亚洲精品一区二区三区不卡| 欧美激情精品久久久久久黑人| 日韩欧美中文在线观看| 91久久久一线二线三线品牌| 亚洲精品国产成人影院| 亚洲国产精品女人| 国产综合成人久久大片91| 欧美午夜精品理论片| 亚洲三级在线播放| 2018天天弄| 精品国产乱子伦一区| 亚洲精品911| 午夜精品一区二区三区视频免费看| 日韩中文一区二区| 国产精品一区二| 国产日韩高清一区二区三区在线| jizzjizz国产精品喷水| 91热门视频在线观看| 性欧美13一14内谢| 欧美伊人久久久久久久久影院| 中文字幕乱码无码人妻系列蜜桃| 最近中文字幕日韩精品| 免费精品一区| 国产亚洲欧美一区二区三区| 久久精品国语| 欧美性受xxxxxx黑人xyx性爽| 亚洲欧洲综合另类| 国产亚洲精品成人| 国产午夜精品久久久| 欧美男女视频| 99re视频| 免费欧美在线| 污污的网站免费| 亚洲色图视频免费播放| 国产亚洲成人av| 国产丝袜精品视频| 欧美大陆国产| 国产精品v欧美精品∨日韩| 亚洲综合丁香| 中文字幕永久有效| 亚洲综合丝袜美腿| 伊人手机在线视频| 日韩资源在线观看| 精品视频自拍| 亚洲第一导航| 国产·精品毛片| 中文字幕高清视频| 欧美丰满少妇xxxbbb| 高清一区二区三区四区| 国产97在线播放| 亚洲欧美色图| av动漫在线看| 亚洲人精品一区| 天天综合网入口| 久久久www成人免费精品| 久久视频在线观看| 在线看视频不卡| 久久夜色精品国产欧美乱极品| 很污很黄的网站| 国产丝袜一区二区|