当前位置:编程学习 > JAVA >>

java简易网关路由,请大牛们完善代码,谢谢!

 1、总体说明
1.1背景
某网关产品依据本地配置的路由规则,将用户消息转发到归属的网元设备。
1.2命题
我们的试题需要您分析路由规则并根据用户号码查询到对应的下发消息的网元设备。
2、操作说明
2.1 路由规则
1. 路由规则(路由表)中配置了用户号段或号码到目标网元设备的映射关系,使用XML格式,格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<routetable>
<route>
<da>138517</da>
<ne>SMSC1</ne>
</route>
<route>
<da>139139</da>
<ne> SMSC2</ne>
</route>
</routetable>
路由表由一条或多条路由记录组成,其中route标签表示一条路由记录,da标签表示用户号段或号码,ne标签表示归属此号段或号码的用户消息路由到的目标网元设备。
2. 匹配原则为前匹配,例如路由表中有如下两条路由映射记录:138517 -> SMSC1,139139 -> SMSC2,则用户号码13851788888的消息应该路由到网元设备SMSC1,而用户号码13913988888的消息应该路由到网元设备SMSC2。如果同时匹配到多条记录,遵循最长匹配原则;例如路由表中有如下两条路由映射记录:138517 -> SMSC1,1385178 -> SMSC3,则用户号码13851778888的消息应该路由到网元设备SMSC1,而用户号码13851788888的消息应该路由到网元设备SMSC3。
2.2接口方法
请实现代码框架中的level1java1.ServiceGW类的如下方法:
/**
 * 加载XML格式的路由规则(不考虑XML格式异常的情况)。
 * 对加载的路由信息做如下校验:
 * 1.如果一条路由记录中的da,ne取值有一个为空,加载失败;
 * 2.如果多条路由记录da重复,加载失败;
 * @param routeRule XML格式的路由规则字符串,注意不是指XML文件的路径。比如
 *    “<?xml version=\"1.0\"encoding=\"UTF-8\"?>”
 *    + “<routetable><route><da>138517</da>”
 *    + “<ne>SMSC1</ne></route>” 
 *   + ”<route><da>139139</da><ne>SMSC2</ne>”
 *    + ”</route></routetable>"
 * @return 是否加载成功 true代表成功,false代表失败。
 */
public boolean loadRule(String routeRule)

/**
 * 根据用户号码,匹配路由规则,找到用户消息路由到的对应网元设备。
 * 路由规则遵循前匹配的原则,
 * 比如规则是:138517->SMSC1; 139139->SMSC2
 * 如果用户号码为13851788888,则路由到的对应网元设备为SMSC1;
 * 如果用户号码为13913988888,则路由到的对应网元设备为SMSC2;
 * 如果同时匹配到多条记录,以最长匹配为准;
 * 比如规则是:138517->SMSC1; 1385178->SMSC3;
 * 如果用户号码为13851778888,则路由到的对应网元设备为SMSC1;
 * 如果用户号码为13851788888,则路由到的对应网元设备为SMSC3;
 * 如果匹配不到路由规则,返回空null
 *
 * @param userNumber 用户号码
 * @return 路由到的网元设备名称
 */
public String chooseRoute(String userNumber)
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,