TR 069是DSL Fourm提出来的一种协议,即CWMP协议,主要是对 用户终端设备的管理。
其功能主要有两块组成ACS(Auto Config Server)和CPE(Customer Pression Equalment)。其具体功能请参考
TR-069协议,网络上也有介绍,在此不再多说了。
最近公司接到了一个项目,主要是对电信的AP(Access Point)设备进行性能监控和管理。我也是项目组的开发人员,主要是负责ACS的搭建。
CPE会定时呼叫ACS,ACS也可以呼叫CPE。根据协议的描述,其实ACS和CPE之间的通信其实类似与WebService,在HTTP的基础上通过RCP远程过程调用CPE的方法。说白了,就是通过HTTP发送XML或者解析xml。那么ACS就很简单了,只需要支持HTTP就可了,所以Servlet是ACS实现的一种选择。
在进行开发之前,必须确定你的CPE 支持TR-069协议,这个是基础,否则本文也就没有写下去的必要了。
目前测试的CPE是H3C的AP。由于我以前也没接触TR-069,这次是摸索这前进。
既然是基于HTTP传输XML的通信,那么先写个Servlet来接收XML消息了,第一次接触,看了协议只知道规则,也不知道到底有啥,既然TR-069说AP会定时呼叫ACS,那么先接收消息了,看看能收到啥情报。
第一,创建ACSServlet,准备接收消息。
代码如下:
1import java.io.BufferedReader;
2import java.io.IOException;
3import java.io.InputStream;
4import java.io.InputStreamReader;
5import java.io.OutputStream;
6import java.util.HashMap;
7
8import javax.servlet.ServletException;
9import javax.servlet.http.HttpServlet;
10import javax.servlet.http.HttpServletRequest;
11import javax.servlet.http.HttpServletResponse;
12import javax.servlet.http.HttpSession;
13
14import com.seahigh.tyt.acs.util.AcsUtil;
15
16
17/** *//**
18 * ACS serverImp
19 *
20 * @author 汪心利
21 * @Create Time 2009-1-4下午04:34:42 (c)copy right seahigh 2009
22 */
23public class ACSServlet extends HttpServlet {
24
25 private static final long serialVersionUID = 1L;
26
27 public void doGet(HttpServletRequest request, HttpServletResponse response)
28 throws ServletException {
29
30 }
31
32 public void doPost(HttpServletRequest request, HttpServletResponse response)
33 throws ServletException, IOException {
34 // session 记住已执行的method
35
36
37 InputStream in = request.getInputStream();
38 String ip = request.getRemoteAddr();
39 InputStreamReader ir = new InputStreamReader(request.getInputStream());
40 BufferedReader input = new BufferedReader(ir);
41 String line;
42 String xml = "";
43 while ((line = input.readLine()) != null) {
44 if (line.trim().length() <= 0)
45 continue;
46 xml += line;
47 }
48 in.close();
49 System.out.println(ip+"Post:"+xml);
50
51
52 }
53}
54
55
不知道大家是怎么贴代码的,感觉这样贴代码很不好看。呵呵。。。。。
然后在web.xml中配置Servlet了,这个过程就不多说了。
既然服务器写好了,那么下一步就让AP给我发Inform吧,当然AP并不知道ACS的地址
所以下一步就需要配置AP了。
再次申明:使用的是H3C的AP,不一定是通用的,具体请参考不同的CPE。
Windows Command Window中输入:
//telent 到AP
telnet 192.168.1.200
//出现授权框,输入用户名和密码
system-view
cwmp