RSS订阅
PHP程序员站--WWW.PHPERZ.COM  
网站地图
高级搜索
收藏本站

 当前位置:主页 >> 网页制作 >> XML >> 文章内容
使用XML实现多渠道接入网站的构架
[收藏此页[打印本页]   
来源:互联网  作者:未知  发布时间:2007-12-21

其余XML则可按这样的规则来定制 www~phperz~.com

  五.技术实现

PHP程序员站

  www.phperz.com

  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

PHP程序员站


   */
  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(); 

PHP程序员站--PHP程序员之家


      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));
  }

www~phperz~.com

  /**
   * 产生一个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(); PHP程序员站--PHP程序员之家

 

phperz.com

      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;
  }
}
  PHP程序员站



  XMLRouter

www.phperz.com

  
以下为引用的内容:
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 www~phperz~.com
   */
   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;

 

PHP程序员站

/**
   * 本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 ) )   PHP程序员站

     {
       ……
     }
     /*如果为返回点*/
     else if( action.equalsIgnoreCase( RouterConstant.CFG_FUNC_ROUTEBACK ) )
     {
     ……
     }
     /*否则为错误*/
     else
       throw new RouterException("Set Router action error.");
    }

www phperz com


   /**
   * 读取本Router的id号.
   * @return long
   */
   public long getIndex()
   {
      return routeIndex;    
   } PHP程序员站--PHP程序员之家

/**
   * 清除所有对象.
   * @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();     

phperz.com


   } www.phperz.com

   /**
   * 设置本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;    
   }
} www phperz com

www phperz com

  Service类 PHP程序员站

以下为引用的内容:
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的接收函数,

PHP程序员站--PHP程序员之家


   * routeaccept为被动交易对象的主要处理函数
   * @param env
   * @throws RouterException
   */
  public abstract void routeaccept(Env env) throws RouterException;  
  /**
   * routing方法,是Service对外的接口函数
   * @throws RouterException
   */
  public abstract void routing() throws RouterException;
 

  
  接下来则需要实现所有的Services的类了,这里就不做介绍了.

PHP程序员站

  六.说明 PHP程序员站--PHP程序员之家


  这个Router到目前为止只能实现同步的交易, 暂时不支持异步的交易,但是由于对Router使用了Composite的模式设计的,实现异步交易也是可以扩展的,这里不做详细分析.

www.phperz.com

  这篇文章是我工作的一个总结,希望能对大家有所帮助.不足之处希望多多指教.

PHP程序员站--PHP程序员之家


 上一篇:robots.txt详细介绍   下一篇:将XML数据转换成HTML
 
 相关文章
 
发表评论
全部评论(0条)
 
 站内搜索
 热门搜索 mysql  基础  php基础  url
高级搜索 网站地图 站长工具 IP查询 收藏本站
 热点文章
 随机推荐
网站首页 | 网站地图 | 高级搜索 | RSS订阅
PHP程序员站 Copyright © 2007,PHPERZ.COM All Rights Reserved 粤ICP备07503606号 联系站长