欧美三区四区_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教程
欧美日韩人人澡狠狠躁视频| 欧美大片aaaa| 91老师国产黑色丝袜在线| 亚洲女成人图区| 中文字幕中文字幕在线中一区高清 | 日韩久久精品一区二区三区| 亚洲熟女少妇一区二区| av成人男女| 国产色一区二区| 超碰91人人草人人干| 精品少妇人妻av免费久久洗澡| 老熟妇一区二区三区| 在线一区免费| 欧美性猛交xxxx乱大交极品| 成人日韩在线电影| 国产精品无码在线| 国产日韩欧美中文在线| 91麻豆高清视频| 美日韩精品免费观看视频| 色综合久久久久无码专区| 91亚洲视频在线观看| 亚洲免费播放| 欧美一区二区精品| 日本欧美精品久久久| 国产在线成人精品午夜| 日韩欧美中文| 色哟哟在线观看一区二区三区| av资源一区二区| 日本乱子伦xxxx| 国产精品久久久久久久久久白浆| 国产精品入口麻豆原神| 91高清视频免费观看| 一级片免费在线观看视频| 亚洲成av在线| 91免费看片在线观看| 九九热视频这里只有精品| av在线网址导航| 国产麻豆久久| 91啪九色porn原创视频在线观看| 精品中文字幕在线2019| 五月天av在线播放| 精品网站在线| 久久久久久久网| 久久人人97超碰精品888| 污视频在线观看免费网站| 欧美日韩免费电影| 中文字幕乱码亚洲精品一区| 欧美在线一级视频| 国产又粗又猛又色| 成人性生交大片免费看中文视频| 亚洲人吸女人奶水| 91精品在线播放| 亚洲AV成人无码网站天堂久久| 欧美日韩精品一区二区视频| 欧美性xxxx18| 欧美极品一区二区| 亚洲 欧美 中文字幕| 性久久久久久| 亚洲男人天堂2019| 亚洲中文字幕无码中文字| 天天综合永久入口| 91啦中文在线观看| 国产精品96久久久久久| 免费一级特黄3大片视频| 精品久久久久久久久久久下田 | 一个人看的www日本高清视频| 奇米色一区二区| 深夜精品寂寞黄网站在线观看| 午夜久久久精品| 国产欧美日韩电影| 亚洲精品伦理在线| 国产一区二区不卡视频在线观看| 国产一区二区三区影院| 久久综合激情| 在线视频欧美性高潮| 亚洲一级片免费| 欧美久久一区二区三区| 精品久久久久久亚洲国产300| 好看的日韩精品视频在线| 黑人一级大毛片| 久久中文字幕一区二区三区| 综合欧美国产视频二区| 在线播放免费视频| 老牛国内精品亚洲成av人片| 色88888久久久久久影院按摩| 色一情一乱一伦一区二区三区| 亚洲综合五月天婷婷丁香| 国产不卡视频在线播放| 欧美一区三区三区高中清蜜桃| 免费在线观看a视频| 欧美一区网站| 日韩精品亚洲精品| 少妇一级淫免费播放| jizzjizzjizz欧美| 色婷婷国产精品久久包臀 | 狠狠干成人综合网| 亚洲欧美日韩中文视频| 成人性生交视频免费观看| 另类在线视频| 欧美日韩一级大片网址| 日韩小视频网站| 激情中国色综合| 亚洲成人综合在线| 亚洲精蜜桃久在线| 国模人体一区二区| 国产精品伦一区| 黑人中文字幕一区二区三区| 国产一区二区小视频| 97精品国产露脸对白| 91美女片黄在线观| 日本精品入口免费视频| 国产成人精品亚洲午夜麻豆| 国产精品国产亚洲伊人久久| 久草视频在线资源站| 久久精品国产精品亚洲精品| 欧美一区二区影院| 久久久久成人精品无码| 久久国产欧美日韩精品| 欧美性视频精品| 久久久久97国产| 国产酒店精品激情| 国产精品美乳一区二区免费| 91午夜视频在线观看| 国产精品一级在线| 成人精品一区二区三区| 国产suv精品一区二区33| 99久久国产综合色|国产精品| 91网在线免费观看| 波多野结衣在线电影| 99国产麻豆精品| av色综合网| 国产视频第二页| 亚洲色大成网站www久久九九| 色就是色欧美| 亚洲不卡系列| 色综合一区二区三区| 日韩a∨精品日韩在线观看| 久久天堂久久| 3atv一区二区三区| 911福利视频| 久久中文字幕av| 这里只有视频精品| 免费成人深夜天涯网站| 丝袜美腿亚洲色图| 国产精品福利网站| 国产伦精品一区二区三区视频我| 99精品视频一区| 精品国产_亚洲人成在线| 嫩草影院一区二区| 亚洲18色成人| 97在线国产视频| 欧美91在线| 亚洲欧美精品在线| 日本少妇高潮喷水xxxxxxx| 丝袜美腿亚洲一区二区图片| 国产精品久久久久国产a级| 精品一区二三区| 国产精品久久久久久久浪潮网站| 亚洲欧美日韩精品久久久 | 少妇一区二区三区| 亚洲国产精品中文| av鲁丝一区鲁丝二区鲁丝三区| 国产精品夜夜夜| 日韩美女视频中文字幕| 伊人久久久久久久久久久久| 欧美韩国日本不卡| 久久久一二三四| 日本一区二区三区播放| 亚洲成人激情图| 久久久久麻豆v国产精华液好用吗| 亚洲在线观看| 国产精品va在线| 一区二区三区午夜| 亚洲国产精品一区二区久久恐怖片| 极品粉嫩国产18尤物| 久久99高清| 色婷婷av一区二区三区在线观看| 中国毛片直接看| 粉嫩一区二区三区性色av| 欧美精品123| 成人影院网站ww555久久精品| 日韩欧美一区二区视频| av无码av天天av天天爽| 蜜桃av一区二区在线观看| 18成人在线| 综合在线影院| 日韩欧美精品在线视频| 中文字幕av网址| 国产在线视视频有精品| 国产亚洲福利社区| 日韩精品一页| 亚洲国产欧美一区二区三区同亚洲 | 精品日产卡一卡二卡麻豆| 午夜av免费看| 久久av中文字幕片| 国产精品三区四区| 免费日韩成人| 亚洲精品美女视频| 亚洲综合图片一区| 337p粉嫩大胆噜噜噜噜噜91av| 中文字幕乱码一区二区三区| 欧美三级午夜理伦三级在线观看| 综合av色偷偷网| 天天干天天干天天干天天| 亚洲三级在线观看| 亚洲人成无码www久久久| 黄色欧美日韩| 成人黄色av播放免费| 欧美黑人疯狂性受xxxxx野外| 日韩视频免费观看高清完整版在线观看 | 视频一区 中文字幕| 欧美日韩国产成人在线91| 国产伦精品一区二区三区88av| 蜜臀久久久久久久| 久久久水蜜桃| 成人精品毛片| 欧美成人h版在线观看| 狠狠躁夜夜躁人人爽视频| 亚洲国产另类精品专区| 国产成人美女视频| 日本亚洲视频在线| 精品乱色一区二区中文字幕| 日韩精品成人在线观看| 亚洲色图色老头| 天天综合网入口| 亚洲成人动漫精品| 少妇极品熟妇人妻无码| 精品中文字幕一区二区| 视频在线99| 欧美禁忌电影| 青青草99啪国产免费| 色综合视频在线| 亚洲成人国产精品| 亚洲综合网在线| 亚洲人成伊人成综合网小说| 香港日本韩国三级网站| 日本成人在线不卡视频| 欧美婷婷久久| 精品freesex老太交| 日韩美女在线播放| 日韩电影网站| 亚洲色无码播放| 欧美一区免费看| 色悠悠亚洲一区二区| 少妇精品一区二区三区| 91麻豆福利精品推荐| 国产在线青青草| 久久亚洲欧洲| 日本一区二区精品| 久久精品不卡| 成人精品一区二区三区电影黑人 | 国产精品九色蝌蚪自拍| 高清一区在线观看| 久久激情五月婷婷| 手机福利在线视频| 欧美午夜免费影院| 国产精品一区二区三区不卡| 美国十次av导航亚洲入口| 7m第一福利500精品视频| 日韩中文字幕综合| 国产丝袜一区二区三区| 亚洲成人av影片| 欧美日韩一区精品| 午夜国产福利一区二区| 亚洲成人中文在线| 玖玖爱在线观看| 国产精品大尺度| 天堂va欧美va亚洲va老司机| 成人国产一区二区三区精品| 少妇人妻无码专区视频| 天堂va蜜桃一区二区三区漫画版| 亚洲狠狠婷婷综合久久久| 亚洲成人精品| 国产一区二区精品在线| 国产成人一区| 91亚洲va在线va天堂va国| 成人动态视频| 国产精品精品视频| 日韩精品久久久久久久软件91| 韩国一区二区电影| 欧美日韩精品免费观看视欧美高清免费大片| 国产一区二区免费| 国产色综合视频| 日韩av在线网址| 在线视频你懂得| 亚洲成人av在线播放| 黄色大全在线观看| 日韩欧美一区电影| 免费看一级视频| 日韩一级大片在线观看| 国产一级淫片a视频免费观看| 欧美一级日韩不卡播放免费| 日韩欧美不卡视频| 欧美日韩成人综合在线一区二区| 久久机热这里只有精品| 欧美熟乱第一页| 久久久久久久久久久网| 欧美三级乱人伦电影| 国产一级二级三级视频| 欧美午夜在线观看| 日韩精品在线免费看| 欧美精品第1页| 成人公开免费视频| 欧美www视频| 丰满熟女人妻一区二区三| 精品国产乱码久久久久久久 | 美女视频黄久久| 国产精品久久久久久久乖乖| 麻豆91在线播放免费| 免费无遮挡无码永久视频| 久久99精品久久只有精品| 欧美成人免费一级人片100| 人人妻人人添人人爽欧美一区| 久久中文欧美| 国产婷婷一区二区三区| 激情成人午夜视频| 熟妇人妻无乱码中文字幕真矢织江| 盗摄精品av一区二区三区| 超碰成人在线播放| 久久久欧美精品sm网站| 无码人妻精品一区二区三| 亚洲精品自拍动漫在线| 欧美日韩国产黄色| 色88888久久久久久影院按摩| 五月天婷婷综合网| 精品黑人一区二区三区久久 | 亚洲第一网站免费视频| 国产精品热久久| 色播久久人人爽人人爽人人片视av| 亚洲男人av| 2020国产精品视频| 色愁久久久久久| 国产欧美在线一区二区| 狠狠噜噜久久| 日本免费a视频| 国产成人自拍高清视频在线免费播放| 在线免费av播放| 亚洲国产高清不卡| 久久亚洲AV无码专区成人国产| 欧美日韩加勒比精品一区| 国产一级片网址| 亚洲成人av在线播放| 国产成人手机在线| 亚洲2020天天堂在线观看| 91综合精品国产丝袜长腿久久| 91久色国产| 欧美特黄一区| 九九热只有这里有精品| 成人深夜视频在线观看| 精品人妻在线视频| 亚洲 欧美综合在线网络| 国产精品99精品| 亚洲韩国日本中文字幕| 午夜激情在线视频| 欧美在线播放视频| 最新亚洲精品| 日韩三级电影网站| 奇米一区二区三区| 免费成人黄色大片| 一级特黄大欧美久久久| 国产小视频在线观看免费| 亚洲福利视频网站| 卡通欧美亚洲| 国产精品一区二区久久| 女人色偷偷aa久久天堂| av一区二区三区免费观看| 99久久99久久精品免费观看| 亚洲国产无码精品| 精品视频资源站| 精品国产亚洲一区二区麻豆| 午夜精品美女自拍福到在线| 台湾佬综合网| 亚洲精品久久久久久一区二区| 国产成人亚洲精品狼色在线 | 九色综合婷婷综合| 日韩视频精品在线观看| 99久久久无码国产精品6| 国产精品久久久久影院老司| 一区视频免费观看| 亚洲加勒比久久88色综合| 高清av一区二区三区| 亚洲r级在线观看| 国产精品一二| 亚洲久久中文字幕| 香蕉成人啪国产精品视频综合网| 一二三区免费视频| 欧美高清在线视频观看不卡| 一区二区三区视频免费观看| 亚洲免费精品视频| 成人av先锋影音| 国产午夜精品久久久久久久久| 日韩一区二区免费在线电影| 成人免费看视频网站| 成人激情电影一区二区| 亚洲专区免费| 欧美日韩理论片| 在线观看日韩av先锋影音电影院| 国产精品免费无遮挡| 欧美在线免费视频| 欧美在线高清|