Open Auto Configuration Server
Openacs的部署
Openacs搭建流程
项目
具体环境及版本
硬件系统
PC
操作系统
Ubuntu11.04(natty)-Linux 2.6.38-8-generic
运行环境
SUN-JDK-1.5.0_22
Web应用服务器
JBoss-4.2.2.GA
ACS服务器
Openacs-0.4-bin
数据库驱动
Mysql-connector-java-5.1.18
1.JDK简介
Java DevelopmentKit(JDK)是由Sun公司发布的针对Java开发人员发布的免费软件开发工具包(SDK, Softwaredevelopment kit)。自Java推出以来,JDK已经成为使用最广泛的Java SDK。作为java语言的SDK,普通用户并不需要安装JDK来运行Java程序,只需要安装JRE(Java Runtime Envirement)即可。而程序开发着必须安装JDK来开发、编译和调试程序。这里因为Openacs是基于jdk-1.5.0_22开发的,因此选用1.5版本的JDK来作为运行环境。
2.JBOSS简介
JBoss是一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它。在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。JBoss应用服务器还具有许多优秀的特质。
其一,它将具有革命性的JMX微内核服务作为其总线结构;
其二,它本身就是面向服务的架构(Service-Oriented Architecture,SOA);
其三,它还具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。
在2004年 6月,JBoss公司宣布,JBoss应用服务器通过了Sun公司的J2EE认证。这是JBoss应用服务器发展史上至今为止最重要的里程碑。与此同时, JBoss一直在紧跟最新的J2EE规范,而且在某些技术领域引领J2EE规范的开发,JBoss应用服务器已经真正发展成具有企业强度(即,支持关键级任务的应用)的应用服务器。
JBoss子目录功能说明:
bin
开始和停止JBOSS的地方
docs
lib
放置JBOSS所需要的部分jar包文件
client
放置EJB客户端运行时所需要的jar包
server
放置各启动类型的服务器端EJB配置所需要的文件等
3. Openacs简介
Openacs是一个用Java编写的开源的ACS服务器,该项目于2007-09-06 由Audrius Valunas发起,经过四年的开发,Openacs已经拥有了非常完善的功能,不仅仅可以作为CPE开发的辅助测试工具,而且完全可以胜任对一定数量的CPE进行远程管理。Openacs采用B/S模式,可以通过浏览器访问ACS服务器,对CPE的远程管理可以通过编写Java script来灵活实现。Openacs需要部署在JBoss应用程序服务器,Release的版本有bin(二进制)版本和src(源码)版本的,其中源码版本需要使用ant进行编译。
安装步骤
一、安装JDK1.5
从SUN公司的官网上下载二进制格式的JDK安装包jdk-1_5_0_22-linux-i586.bin,运行该文件,安装在/opt目录下,安装成功后需要设置环境变量,在/etc/bash.bashrc文件里加入如下语句:
PATH=$PATH:/opt/jdk1.5.0_22/bin
JAVA_HOME=/opt/jdk1.5.0_22
CLASS_PATH=$(JAVA_HOME)/lib/tools.jar
export PATH JAVA_HOMECLASS_PATH
修改完成后使用source /etc/bash.bashrc来更新环境变量,在终端里使用java -version来查看环境变量是否设置正确以及版本是否正确。
二、安装JBOSS4.2.2
下载JBoss的安装包jboss-4.2.2.GA.zip,将安装包解压到/opt文件夹下面,修改环境变量,在/etc/bash.bashrc加入如下语句:
PATH=$PATH:/opt/jboss-4.2.2.GA/bin
JBOSS_HOME=/opt/jboss-4.2.2.GA
部署完成后到/opt/jboss/bin目录下,./run.sh -b 0.0.0.0 来运行JBOSS,看是否能启动成功,如果可以正常浏览http://localhost:8080/,说明JBOSS安装成功。
三、安装MySQL数据库和数据库驱动
安装MySQL-5.1.54(ubuntu)版本的数据库,创建用户openacs并设置密码为openacs,可以使用mysql -u openacs -p 来进入数据库。将下载到的数据库驱动解压到/opt目录下,将mysql-connector-java-5.1.7-bin.jar拷贝到 $(JBOSS_HOME)/server/default/lib/下面。进入数据库,创建数据库ACS,并修改访问权限,如下所示:
CREATE DATABASE ACS;
GRANT ALL style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px">至此数据库和驱动安装完成。
四、部署Openacs
下载得到的Openacs-0.4-bin中包含了acs.ear,需要部署到JBOSS中才可以运行,首先将openacs解压到/opt中,将acs.ear拷贝到($JBOSS_HOME)/server/default/deploy/下面,修改openacs-ds.xml使其适合你的数据库的配置:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>ACS</jndi-name>
<connection-url>jdbc:mysql://localhost/ACS</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>openacs</user-name>
<password>openacs</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>5</idle-timeout-minutes>
</local-tx-datasource>
</datasources>
修改完成后将openacs-ds.xml拷贝到($JBOSS_HOME)/server/default/deploy/,创建openacs-service.xml并拷贝到($JBOSS_HOME)/server/default/deploy/jms下面,openacs-service.xml格式如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbeancode="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=acsQueue">
<dependsoptional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
至此Openacs的配置完成。运行JBoss,可以看到Jboss在部署Openacs,部署完成后可以通过http://localhost:8080/openacs/来访问,如下图所示:
Openacs使用简介
openacs的设置
1 CPE的设置
CPE需要ACS URL才能连接到ACS,因此需要在CPE侧设置好ACS的URL。URL又分为HTTP和HTTPS两种,HTTPS(超文本传输安全协议)是HTTP和SSL的结合,用来提供加密通讯和对网络服务器身份的鉴定,默认端口是443,这里为了与使用HTTP协议的Web服务区分但又方便记忆分别使用了8080和8443的端口。
ACS URL(HTTP)
http://localhost:8080/openacs/acs
ACS URL(HTTPS)
https://localhost:8443/openacs/acs
2 Openacs的基本设置
1) 在浏览器里访问http://192.168.1.86:8080/openacs/index.jsf 或者 https://192.168.1.86:8443/openacs/index.jsf,我们就可以访问Openacs的控制界面了。
2) 在"find CPE"页面,选择Hardware的型号,输入inform里SerialNumber,即可进行查询。
3)在查询页面"config"里可以进行用户名和密码设置,默认是没有的,还可以选择认证的方式,有BASIC和MD5两种方式,分别对应于BASIC基本认证和DIGEST摘要认证。
4) 在"Configuration scripts"-->"Default"里输入要操作的脚本,点击保存;当ACS收到CPE发来的INFORM消息后,ACS会默认执行Default脚本。
5)在"find CPE"页面,选择型号输入serial number查询后 ,在显示的查询页面里点击"Connection request URL: "就可以出发CPE被动连接ACS,但前提是你在启动JBoss的时候必须使用./run.sh -b YOUR_IP_ADDR绑定IP地址,不能使用-b 0.0.0.0。
Openacs函数
logger("string")
可以将string 输出到JBoss应用程序服务器的Log记录
call("scrpit_name")
调用其他指定脚本
Openacs变量
? cpedb:可以用来访问数据库中的CPE Bean,可以调用save方法将数据写回数据库。例如:
var someprop =cpedb.someprop;
cpedb.someprop ='new_value_for_someprop';
cpedb.Save ();
? cpe:可以用来访问所有TR069中指定的CPE变量和RPC方法,例如cpe.GetRPCMethods会返回CPE所有支持的RPC的数组。相应的GetRPCMethods的脚本如下所示:
// this willoutput supported methods to server console
var methods =cpe.GetRPCMethods ();
for (i = 0; i< methods.length; i++) {
logger ('Method: '+methods[i]);
}
? db:可以用来访问数据库。使用db.Query (data_source_name,select_statement)可以在data_source指定的数据源上调用select_statement指定的MySQL语句,如果省略data_source_name直接调用db.Query (select_statement),则会访问数据源java:ACS,例如:
try {
var rs = db.Query ("SELECT id,serialnoFROM hostsbean")
logger ("Rows found ="+rs.length)
for(i=0; i < rs.length; i++) {
logger ("id ="+rs[i].id+" serialno= "+rs[i].serialno);
}
} catch (e) {
logger ("DS exception:"+e.message)
}
如果想插入和更新数据库,可以分别调用db.Update(data_source_name, select_statement)方法同上,例如:
try {
var rs = db.Update ("INSERTid,serialno INTO hostsbean VALUES (NULL,'12345')")
} catch (e) {
logger ("DS exception:"+e.message)
}
Openacs测试结果
将CPE的ACS URL修改为Openacs服务器的URL后,CPE主动连接ACS触发INFORM流程,INFORM流程之后,Openacs开始按照"Default"的Java script的脚本执行。在CPE的代码开发阶段主要使用Openacs作为辅助测试工具,因此编写了多个脚本,每个脚本尽可能只调用一种RPC方法,来测试CPE侧对应RPC的功能是否完善,处理流程是否正确。Openacs拥有非常完善的功能,不仅TR069中所有的RPC都已经完美实现,还有很多实际应用中需要的功能,比如DSLStatistics和DSLStatistics Graph功能,可以统计CPE和ACS之间的数据交互情况,并以图表的形式反映出来。
Openacs小结
随着越来的越多的企业开始意识到TR069在远程管理设备上得优势,相信会有越来越多的企业参与到ACS和CPE的开发中。但对于中小企业来讲受研发实力和资金的限制,单独开发ACS可能会遇到很多的困难。Openacs作为一个开源项目,在作者和众多爱好的努力下,现在已经成为使用灵活、功能强大的ACS服务器,其开源的特性和完善的功能使的企业在使用Openacs的时候有多种选择,既可以作为开发CPE的辅助测试工具,也可以在Openacs的基础上开发适合本公司产品的ACS,或者直接使用Openacs来管理CPE设备。相信随着TR069的逐渐火热,Openacs作为开源的ACS服务器中的佼佼者,一定会得到越到越多的关注。