浏览 7349 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-08
最后修改:2009-01-21
其功能主要有两块组成ACS(Auto Config Server)和CPE(Customer Pression Equalment)。其具体功能请参考TR-069协议,网络上也有介绍,在此不再多说了。 最近公司接到了一个项目,主要是对电信的AP(Access Point)设备进行性能监控和管理。我也是项目组的开发人员,主要是负责ACS的搭建。 根据协议的描述 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,准备接收消息。 代码如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.HashMap; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.seahigh.tyt.acs.util.AcsUtil; /** * ACS serverImp * * @author 汪心利 * @Create Time 2009-1-4下午04:34:42 (c)copy right seahigh 2009 */ public class ACSServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // session 记住已执行的method InputStream in = request.getInputStream(); String ip = request.getRemoteAddr(); InputStreamReader ir = new InputStreamReader(request.getInputStream()); BufferedReader input = new BufferedReader(ir); String line; String xml = ""; while ((line = input.readLine()) != null) { if (line.trim().length() <= 0) continue; xml += line; } in.close(); input.close(); System.out.println(ip+"Post:"+xml); } } 然后在web.xml中配置Servlet了 <?xml version="1.0" encoding="UTF-8"?> This is the description of my J2EE component This is the display name of my J2EE component ACS com.seahigh.ACS ACS /acs/* index.jsp 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |