📄 sagcycloc.java
字号:
/**
* <p>Title: 小区推送LBP项目</p>
* <p>Description:
* 此类组织ISAG需要的参数,然后调用WSDL生成的Client代码,处理路由表,流量控制
* </p>
* 本类接收到的周期性请求里,可能包含多个定位号段,每个号段通过查询路由表,又可能拆分成多对小号段和LCS的URL
* 重发和异常处理机制要特别注意
* <p>Copyright: 2008 福建福富软件技术股份有限公司 </p>
* <p>Company: 福建福富软件技术股份有限公司</p>
* @author chenxin
* @version v1.0
*/
package ffcs.lbp.SagClient;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import cn.com.chinatelecom.schema.ctcc.common.v2_1.SimpleReference;
import cn.com.chinatelecom.schema.ctcc.common.v2_1.TimeMetric;
import cn.com.chinatelecom.schema.ctcc.common.v2_1.TimeMetrics;
import cn.com.chinatelecom.wsdl.ctcc.terminal_location.notification_manager.v2_2.service.TerminalLocationNotificationManager;
import cn.com.chinatelecom.wsdl.ctcc.terminal_location.notification_manager.v2_2.service.TerminalLocationNotificationManagerServiceClient;
import cn.com.chinatelecom.wsdl.ctcc.terminal_location.notification_manager.v2_2.service.TerminalLocationNotificationManagerServiceImpl;
import ffcs.config.Config;
import ffcs.config.Module;
import ffcs.lbp.common.LbpUtil;
import ffcs.lbp.common.SimpleHashtable;
import ffcs.lbp.dao.LCS;
import ffcs.lbp.dao.RouteDAO;
import ffcs.lbp.dao.UserInfoDao;
import ffcs.lbp.le.message.CycLoc;
import ffcs.lbp.le.message.tlv.TLVTable;
import ffcs.logging.Log;
import ffcs.logging.LogFactory;
public class SagCycLoc {
private TLVTable IsdnRange=null;
private int Interval;
private int StartTime ;
private int StopTime ;
private int Duration;
private String callback_url;
private int RequestedAccuracy;
private SimpleHashtable SentReqList;//=new SimpleHashtable(maxSentReqList);
private static Log log = LogFactory.getLog(SagCycLoc.class);
public SagCycLoc() {
}
public SagCycLoc(CycLoc cycLoc){//TLVTable isdnrange,int interval,long starttime,long stoptime,int duration) {
this.IsdnRange=cycLoc.getIsdnRange();
this.Interval=cycLoc.getInterval();
this.StartTime=cycLoc.getStartTime();
this.StopTime=cycLoc.getStopTime();
this.Duration=cycLoc.getDuration();
}
/*
* 组成必要参数,调用WebService客户端,向ISAG发出定位请求
*/
public void bulidSagCycLoc(){
/*
* 变量IsdnRange为包含多个号段的TLVTable
*/
//先查询路由表,得到一个LCS对象的List,每个LCS对象包含IsdnRange和URL
Iterator<String> range_it = IsdnRange.values().iterator();
RouteDAO rt=new RouteDAO();
UserInfoDao userDao=new UserInfoDao();
List<String> userList =new Vector<String>();
List <LCS>lcs_list;
LCS temp_lcs;
String target_url;
//构造WebService 客户端
TerminalLocationNotificationManagerServiceClient service = new TerminalLocationNotificationManagerServiceClient();
TerminalLocationNotificationManager impl;
if(range_it.hasNext()){
//输入号段,输出已包含要定位号段,url等对端实体信息的lcs 列表
temp_lcs= rt.getLCSforCycLoc(range_it.next());
userList=userDao.getUserByRangesFromDB(temp_lcs.getIsdnRange());
// 构造SimpleReference,包含名称,回送URL和唯一标识id
SimpleReference ref=new SimpleReference();
ref.setCorrelator(LbpUtil.getNextSeqNum()+"");
ref.setEndpoint(temp_lcs.getCallBackUrl());
ref.setInterfaceName("LBP");
// 构造频率和持续时间
TimeMetric Frequency_time=new TimeMetric();
Frequency_time.setMetric(TimeMetrics.SECOND);
Frequency_time.setUnits(Interval);
TimeMetric Duration_time=new TimeMetric();
Duration_time.setMetric(TimeMetrics.SECOND);
Duration_time.setUnits((int)Duration);
try{
target_url=temp_lcs.getURL();
// 调用WebServiceClient,
service.getTerminalLocationNotificationManagerLocalEndpoint(target_url);
impl=new TerminalLocationNotificationManagerServiceImpl();
impl=service.getTerminalLocationNotificationManager(target_url);
impl.startPeriodicNotification(ref, userList, 11, Frequency_time, Duration_time);
//发送成功之后,记录号段,Correlator和URL,为以后停止周期性定位留底
rt.LogSentRequest(temp_lcs.getIsdnRange(),LbpUtil.getSeqNum()+"",temp_lcs.getURL());
}catch ( Exception e){
log.error("调用ISAG的周期性定位出错"+e);
}
}//end of " if(range_it.hasNext())"
}
/**
* @param args
*/
public static void main(String[] args) {
List<String> userList =new Vector<String>();
userList.add("88389162");
userList.add("88389163");
userList.add("88389164");
SimpleReference ref=new SimpleReference();
ref.setCorrelator("abcdefg");
ref.setEndpoint("http://192.168.26.65/RecvServlet/recv");
ref.setInterfaceName("LBP");
// 构造频率和持续时间
TimeMetric Frequency_time=new TimeMetric();
Frequency_time.setMetric(TimeMetrics.SECOND);
Frequency_time.setUnits(5);
TimeMetric Duration_time=new TimeMetric();
Duration_time.setMetric(TimeMetrics.SECOND);
Duration_time.setUnits(5);
try{
System.out.println("start");
//String ws="http://127.0.0.1/ISAGdemo/services/TerminalLocationNotificationManagerService";
String ws="http://192.168.26.68:8080/sagdemo/receive";
// 调用WebServiceClient
TerminalLocationNotificationManagerServiceClient service = new TerminalLocationNotificationManagerServiceClient();
// service.getTerminalLocationNotificationManager(ws);
service.getTerminalLocationNotificationManagerLocalEndpoint(ws);
TerminalLocationNotificationManager impl=new TerminalLocationNotificationManagerServiceImpl();
impl=service.getTerminalLocationNotificationManager(ws);
// 参数构造完毕,调用Client
/* System.out.println(service.getTerminalLocationNotificationManagerLocalEndpoint());
Iterator end_pois=service.getEndpoints().iterator();
while(end_pois.hasNext()){
System.out.println(end_pois.next());
}*/
impl.startPeriodicNotification(ref, userList, 11, Frequency_time, Duration_time);
// NotiCli.startPeriodicNotification(ref, userList, 11, Frequency_time, Duration_time);
}catch (Exception e){
e.printStackTrace();
System.out.println(e);
}
}
public void readConfig() {
try {
Module module = Config.getInstance().getModule("IsagClient");
callback_url = module.getProperties("CallBackUrl");
RequestedAccuracy = Integer.parseInt(module.getProperties("RequestedAccuracy"));
} catch (Exception e) {
log.error("读配置文件出错", e);
System.exit(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -