




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TR 069是DSL Fourm提出来的一种协议,即CWMP协议,主要是对 用户终端设备的管理。其功能主要有两块组成ACS(Auto Config Server)和CPE(Customer Pression Equalment)。其具体功能(PPT) 根据协议的描述 CPE会定时呼叫ACS,ACS也可以呼叫CPE。ACS呼叫CPE的时候,其实是向CPE发送一个ConnectionRequest,经过授权认证等过程后,CPE会发个Inform给ACS,其中包含了EventCode,根据EnventCode我们就可已知道是CPE主动呼叫的,还是ACS呼叫后,CPE才建立的连接。TR-069规定响应ACS的呼叫后的Inform Event Code是6 Connection Request。 我也是第一次进行通信方面的开发,以前没有接触过的东西。首先得要下个协议,在这里我有个感受,就是要下个原版的TR-069协议,自己去慢慢的理解,不懂单词要查,虽然是全英文的,但是也是最权威的,也是原滋原味的。 可能看了协议后会觉得很蒙,很多代名词都不懂。SOAP,RPC。SOAP和PRC感觉有点像WebService,其实我也没有webservice的开发经验,但是我觉得在TR-069协议中,ACS 通过SOAP协议指定要调用CPE的哪些方法,以及需要的参数。然后通过RPC在CPE端执行指定的方法,返回方法执行后的结果。然后在通过SOAP协议返回执行后的结果给CPE。 假如A系统有个查询手机号码的归属地的功能,那么B系统中也要实现这个功能,那么两个系统可以通过通信的方式进行数据交互。B系统通过SOAP协议指定需要执行的功能(方法)和参数(手机号码),然后发送给A系统。A系统接受了SOAP协议包含的XML,开始解析,然后调用自身的method,然后将执行后的结果封装成XML 格式的数据后发给B系统,B系统解析后获取执行的结果。总之,最重要的是通信。 ACS和CPE都是支持HTTP协议,所有ACS只需要有HTTP容器就可以了。所以很自然的,我们就想到了Servlet来实现。我也不知道是啥格式的XML,但是公司催的紧,所有赶紧开工了。既然不知道怎么实现,但是CPE会定时呼叫的,所有先把它呼叫后的东西接收过来看看,到底是什么。 目前测试的CPE是H3C的AP。第一,创建ACSServlet,准备接收消息。代码如下: Java代码 1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.OutputStream; 6 import java.util.HashMap; 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 import javax.servlet.http.HttpSession; 12 import com.seahigh.tyt.acs.util.AcsUtil; 13 /* 14 * ACS serverImp 15 * 16 * author 汪心利 17 * Create Time 2009-1-4下午04:34:42 (c)copy right seahigh 2009 18 */ 19 public class ACSServlet extends HttpServlet 20 21 private static final long serialVersionUID = 1L; 22 23 public void doGet(HttpServletRequest request, HttpServletResponse response) 24 throws ServletException 25 26 27 public void doPost(HttpServletRequest request, HttpServletResponse response) 28 throws ServletException, IOException 29 / session 记住已执行的method 30 31 InputStream in = request.getInputStream(); 32 String ip = request.getRemoteAddr(); 33 InputStreamReader ir = new InputStreamReader(request.getInputStream(); 34 BufferedReader input = new BufferedReader(ir); 35 String line; 36 String xml = ; 37 while (line = input.readLine() != null) 38 if (line.trim().length() = 0) 39 continue; 40 xml += line; 41 42 in.close(); 43 input.close(); 44 System.out.println(ip+Post:+xml); 45 46 47 然后在web.xml中配置Servlet了Xml代码 1 2 3 4 5 This is the description of my J2EE component 6 7 8 This is the display name of my J2EE component 9 ACS 10 com.seahigh.ACS 11 ACS 12 /acs/* 13 index.jsp 14 一个TR-069的模拟器,原理就是用HttpClient模拟TR-069的Client端,发送SOAP Message到ACS Server. 发送SOAP Message的代码如下: Java代码 1 public class MessageSender 2 /* 3 * Logger for this class 4 */ 5 private static final Log logger = LogFactory.getLog(MessageSender.class); 6 private HttpClient httpClient; 7 private PostMethod postMethod; 8 private MessageFactory messageFactory; 9 private String url; 10 private NameValuePair sessionId; 11 12 public MessageSender(String ip) 13 this.httpClient = new HttpClient(); 14 try 15 this.messageFactory = MessageFactory.newInstance(); 16 catch (SOAPException e) 17 logger.error(e.getMessage(); 18 19 this.url = generateRequestUrl(ip); 20 21 22 private String generateRequestUrl(String ip) 23 return http:/ + ip + :8080/vantage/TR069; 24 25 26 public SOAPMessage sendMessage(SOAPMessage input) throws IOException, SOAPException 27 this.postMethod = new PostMethod(this.url); 28 byte dataAsBytes = null; 29 if (input = null) 30 logger.debug(Send a empty post); 31 dataAsBytes = new byte0; 32 else 33 ByteArrayOutputStream data = new ByteArrayOutputStream(); 34 input.writeTo(data); 35 dataAsBytes = data.toByteArray(); 36 37 RequestEntity entity = new ByteArrayRequestEntity(dataAsBytes); 38 this.postMethod.setRequestEntity(entity); 39 if (this.sessionId != null) 40 this.postMethod.addParameter(this.sessionId); 41 42 this.httpClient.executeMethod(this.postMethod); 43 sessionId = this.postMethod.getParameter(SessionID); 44 InputStream in = this.postMethod.getResponseBodyAsStream(); 45 if (null = in) 46 return null; 47 48 return this.messageFactory.createMessage(null, in); 49 50 最初的code里面,只有一个PostMet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无锡新质生产力主题宣讲
- 2025年教师招聘之《小学教师招聘》通关试卷提供答案解析附答案详解(研优卷)
- 联调联试安全培训课件
- 基于2025年政策的新能源汽车换电服务定价策略研究报告
- (正式版)DB15∕T 2627-2022 《察右中旗胡萝卜贮存运输技术规范》
- (正式版)DB15∕T 2549-2022 《大兴安岭北麓马铃薯原种繁育技术规程》
- 安全目视化管理培训心得
- 安全监管职责培训内容课件
- 医患关系年度新闻
- 新质生产力与文化建设的协同
- TCEIAESD1005-2022防静电不发火地坪施工与质量验收规范
- 2025-2030中国汽车中冷器行业市场现状供需分析及投资评估规划分析研究报告
- 2025年大学生心理知识竞赛考试题库(共100题含答案)
- 无肝素透析考试题及答案
- 《数据分析与决策》课件
- 苏教版五年级数学上册单元测试题及答案全册24套
- 《诗经之采葛》课件
- 2025年中国氢化棕榈油市场深度评估及投资方向研究报告
- 幼儿园酸奶牛奶采购合同
- 《中药提取物生产技术》课件-中药常用的粉碎方法
- 政治学原理(第三版)课件 第1章 政治的性质与核心问题;第2章 政治学:研究方法与学科特点
评论
0/150
提交评论