华为手环多少钱监控终端操作!eSpace VCN3000

为开发者提供全方位培训服务
提供开发者更好的开发支持
平台(SMC2.0)位于视讯系统的运营支撑层,主要的作用是受理视讯业务请求并负责对视讯会议进行资源管理、调度。" />
1. 开放能力总览
IVS提供灵活的对接方案,除了常用的Client方式(如API、OCX),还提供eSDK Server服务端方式。根据开发场景的不同,eSDK IVS服务端提供了native和SOAP开发方式,覆盖主流开发语言C#、C++和JavaScript。
1JAVA可以调用Native或者SOAP。
2其他开发语言可以通过SOAP调用eSDK IVS。
1.1 整体结构
IVS server服务端方式开放结构图
7视频业务接口(实况类、录像类、云镜控制类等)
1.2 配套版本
2. 开放集成场景
2.1 轻量化客户端场景
2.1.1 集成场景概述
随着移动化应用普及,大量个人和企业用户希望把的业务从大屏和PC上移植到手机或PAD中,视频监控客户端的轻量化便成为趋势。
利用eSDK server,开发者无需在应用本地集成API或OCX,通过简单的Native或拼装的SOAP协议便可调用华为IVS各功能。满足各种业务场景需要。
2.2 多系统集成共设场景
2.2.1 集成场景概述
当第三方业务同时集成IVS API且与多类别或多厂家API并进行共同调用,可能出现一些不兼容问题。这种情况,可以在本地只集成其他厂商API,通过eSDK server调用IVS的能力。
2.2.2 典型应用场景
ISV需集成某无线集群厂商API,同时需调用IVS系统实时浏览,录像回放能力,而两个系统API间存在不兼容。可采用分布式部署方案:将集群API集成到业务本地,另外采用soap协议方式调用IVS能力,确保两个系统可以融合调用。
步骤1 &调用login接口,实现用户登录
步骤2 &调用getDeviceList,列出所有在线摄像头。
步骤3 &根据步骤2中获取的摄像头ID,调用startRealPlayByIPEx接口,将该摄像头的实时视频打到目标终端设备。
步骤4 &根据步骤2中获取的摄像头ID,调用startPlatformPlayBackByIP接口,将平台上存储的该摄像头录像打到目标终端设备。
3. 接口参考
3.1 SOAP接口
3.2 Native接口
4. 二次开发快速入门
4.1 开发环境搭建和配置
4.1.1 环境要求
在进行二次开发之前,应该准备好以下开发工具。工具名称和版本要求如下表所示。
表 &工具名称及版本要求
Windows 7 专业版
Eclipse 3.6及以上版本
Java Development Kit 1.7.0.45及以上版本
Apache Tomcat 7.0.37及以上版本
V100R005C30
4.1.2 eSDK开发资源
eSDK IVS提供以下资源支撑二次开发:
l二次开发接口(WSDL、本地API)及相关配置文件
eSDK IVS软件包括:esdk_ivs_native_professional_java.jar、eSDK IVS软件安装包(包括平台安装包、业务安装包)、eSDK工具包:&eSDK_Tools_V1.5.30.zip&
l二次开发接口参考文档
l二次开发Demo代码样例
4.1.3 获取IVS访问URL和应用帐号
获取eSDK IVS的访问URL:http(s)://${IP}:${Port}/esdk/services和eSDK IVS应用帐号。具体说明如下所示。
l${IP}为安装eSDK IVS的服务器IP地址,${Port}为eSDK IVS的服务端口。
leSDK安装默认勾选HTTPS端口,此次Demo仅支持HTTP访问模式,安装eSDK时请勾选HTTP端口。具体请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
leSDK IVS应用帐号及密码,根据eSDK安装后选择的不同鉴权方式,对应说明如下:
leSDK默认使用透传鉴权,此处应用账号和密码分别为在IVS配置的登录设备的登录名和密码。
l如果使用单应用鉴权或一对一映射鉴权,此处应用账号和密码为第三方应用向eSDK鉴权的用户名和密码。
l关于鉴权策略及应用账号和密码的具体说明,请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
4.2 基于Native的BS开发
4.2.1 导入eSDK IVS Demo工程
通过导入eSDK IVS Demo工程源文件,了解Demo相关功能。
步骤1 &打开Eclipse,单击菜单栏的&File & Import...&。
系统显示&Import&窗口。
步骤2 &选择&General & Existing Projects into Workspace&。
效果如下图所示。
图 &Import向导窗口
步骤3 &单击&Next&。
系统显示&Import Projects&窗口。
步骤4 &单击&Browse&,选择&eSDK_IVS_Demo_BS_Java&工程。
效果如下图所示。
图 &Import Projects窗口
步骤5 &单击&Finish&按钮,完成&eSDK_IVS_Demo_BS_Java&工程的导入。
具体如下eSDK_IVS_Demo_BS_Java工程结构图所示。
eSDK_IVS_Demo_BS_Java工程以下简称为Demo。
步骤6 &设置Demo工程的编码格式。在Demo工程上单击右键,在弹出的菜单中选择&Properties&。
系统默认打开&Resource&窗口。
步骤7 &设置编码格式为&UTF-8&,单击&OK&,完成编码格式设置。
效果如下图所示。
图 &设置工程编码格式窗口
步骤8 &导入Native的JAR包。在Demo工程上单击右键,在弹出的菜单中选择&Build Path & Configure Build Path&&。
步骤9 &打开&Java Build Path&窗口,选择&Libraries&选项卡,查看是否已经存在&esdk_ivs_native_professional_java.jar&,如果不存在,通过&Add External JARs...&添加Native的JAR包。
确认是否已经导入Native的JAR包,若工程中已经包含Native的JAR包,可以跳过此步骤。
效果如下导入Native的JAR包所示。
步骤10 &设置Native相关配置文件。打开Demo工程&src&目录下的配置文件&esdk_ivs_config.properties&,修改内容如下。
#eSDK&Service&URL,&for&example&:&sdkserver.url=http://10.95.41.64:8086/esdk/services&sdkserver.url=https://localhost:18543/esdk/services&&#To&turn&on/off&the&CXF&logging&interceptor&#true&-&turn&on&the&logging&interceptor,&the&logging&will&be&output&to&console&#false&-&turn&off&the&logging&interceptor&cxf.logging.interceptor.on=true&&#login&user&name&userName=ivsTest01&&#native&login&user&password&password=Huawei_123&&#soap&service&deviceMgr.service.url=ivsProfessionalDeviceManager&commonMgr.service.url=ivsProfessionalCommon&professional.key.service.url&=&platformKeyMgr&&#configuring&SSL&support&#true&-support&the&SSL&#false&-not&support&the&SSL&ssl.support&=&true&&#keystore&password&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore.password&=&Mw3lo+I1Wt9ftuKdqYFIFg==&&#keystore&file&name&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore&=&server.keystore&&#the&keystore&type&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore.type&=&JKS&&#the&keystore&provider&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore.provider&=&SUN&&#the&Secure&Sockets&Layer&Protocol&#the&option&will&be&used&when&ssl.support&is&true&ssl.secure.socket.protocol&=&TLS&&#to&turn&on&the&SSL&socket&communication&debug&option.&The&debug&output&message&can&help&you&to&know&what&exactly&happens&at&the&SSL&layer.&#all&-turn&on&all&debugging&#ssl&-turn&on&ssl&debugging&#the&following&can&be&used&with&ssl:&#record&&-enable&per-record&tracing&#handshake&&-print&each&handshake&message&#the&option&will&be&used&when&ssl.support&is&true&#for&example:&ssl.javax.net.debug&=&ssl,handshake&ssl.javax.net.debug&=
用户需要根据实际环境补充如下字段的值:
lsdkserver.url为eSDK IVS提供的服务地址,IP为安装eSDK服务的IP地址,eSDK安装默认使用HTTPS端口,端口号为18543。
l${userName}与${password}为应用账号和密码,根据鉴权策略的不同,具体说明如下:
leSDK默认使用透传鉴权,此处${userName}和${password}分别为在IVS平台配置的登录设备的账号和密码。
l如果使用单应用鉴权或一对一映射鉴权,此处${userName}和${password}为第三方应用向eSDK鉴权的用户名和密码。
l关于鉴权策略及应用账号和密码的具体说明,请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
4.2.2 了解eSDK IVS Demo工程架构
提供的eSDK IVS Demo基于B/S架构。工程主要模块如下图所示。
eSDK IVS Demo工程结构图
关于工程的主要模块说明,如下所示。
lfactory:工厂类。ServiceFactory用来获取Native提供的接口服务。Servlet容器启动时初始化此类。开发时需要在此类中的init方法中注册所需的接口服务。
lservlet:服务层。处理浏览器发来的请求。调用eSDK Native提供的接口获取eSDK IVS的业务能力。
lutils:工具类。处理配置文件。
lesdk_ivs_config.properties:配置文件。具体可配置如下几项:
leSDK的URI
leSDK Native的日志开关
l登录eSDK鉴权的用户名和密码
llog4j.properties :日志属性文件。
lcss:Demo视图页面的css库。
ljs:Demo视图页面的JavaScript库。
lpages:Demo视图页面的html资源。
lindex.html:默认主视图。
linterface:每个接口对应的主视图。
ldescription:接口说明页签的视图。
lexecution:接口执行页签的视图。
lsourcecode:接口调用过程的源代码展示视图。
lpic:Demo视图页面的多媒体库。
lWEB-INF:web应用的第三方库文件和web配置文件。
4.2.3 开发eSDK IVS应用实例
可以通过实例开发中介绍的步骤,逐步实现eSDK IVS Demo的运行,了解Demo相关功能。本文档以查询告警事件信息接口为例,进行eSDK IVS应用实例开发的简要介绍。
本文档所使用的接口如下表本文档所使用的接口所示。
getAlarmEventInfo
查询告警事件信息
查询告警事件信息的时序图如下图所示。
第三方用户在实际开发时,可根据具体应用场景调用登录鉴权接口、保活会话接口和登出接口。在调用其他接口前,调用登录鉴权接口和保活会话接口(保活会话接口的使用方法请参考二次开发接口参考文档),在整个会话结束后调用登出接口。此处为了方便演示接口调用的周期,在单个接口调用前后,调用了登录和登出接口。
4.2.4 编写视图层
视图层html代码请参考Demo Web工程中&/eSDK_IVS_Demo_BS_Java/WebContent/pages/execution/getalarmeventinfo_execution.html&文件。视图层显示结果如下图所示。
查询告警事件信息执行视图
4.2.5 客户端与服务器交互
单击&查询告警事件信息&按钮,调用js方法&getAlarmEventInfo()&,浏览器发出请求。请参考Demo工程中的源代码文件&/eSDK_IVS_Demo_BS_Java/WebContent/pages/interface/getalarmeventinfo.html&,代码如下图客户端与服务器交互代码所示。
关于代码的说明如下:
l第88行:请求的目标url,此url为web.xml中配置的alarmServlet。
l第91行:将页面参数和要调用的接口名称组装成表单数据。
l第103~112行:将服务器返回的json消息串显示在&告警事件信息&文本域里,同时将结果编码显示在&结果码&文本框里。
此处所描述的客户端和服务器均指第三方用户自己开发的客户端和搭建的servlet容器。
4.2.6 配置servlet
在Web工程中配置servlet。客户端发送请求到服务器,该请求由一个servlet处理,该servlet在web.xml中配置信息如下。
&&&servlet&&&&&&&servlet-name&alarmServlet&/servlet-name&&&&&&&servlet-class&com.huawei.esdk.demo.servlet.AlarmServlet&/servlet-class&&&&&/servlet&&&&&servlet-mapping&&&&&&&servlet-name&alarmServlet&/servlet-name&&&&&&&url-pattern&/alarmServlet&/url-pattern&&&&&/servlet-mapping&
4.2.7 alarmServlet处理客户端请求
alarmServlet中实现了doGet方法,根据客户端请求参数method的值调用具体的Native服务,并将结果以json字符串形式返回给客户端。本文档中涉及的method值为&getAlarmEventInfo&。具体代码请参考Demo工程中的类&com.huawei.esdk.demo.servlet.AlarmServlet&。doGet方法代码如下图所示。
关于代码的说明如下:
l第74行:获取请求参数method的值。
l第77~86行:根据method值调用相应的Native接口服务。
4.2.8 调用Native接口服务
调用Native接口服务的源代码请参考Demo工程中的类&com.huawei.esdk.demo.servlet.AlarmServlet&。getAlarmEventInfo方法代码如下图所示。
关于代码的说明如下:
l第108行:调用Native中的登录鉴权接口。其中userName和password配置在Demo工程中esdk_ivs_config.properties文件中。
l第111~116行:如果登录鉴权失败,返回鉴权错误码。
l第125~130行:调用Native中的获取告警事件信息接口,并将结果以json字符串的形式返回。
l第133行:调用Native中的登出接口。
4.2.9 发布eSDK IVS应用实例
步骤1 &在Eclipse中创建一个Server。
具体如下图创建eSDK IVS BS Demo所示。
步骤2 &发布Demo工程到步骤1创建好的Server中。
具体如下图发布Demo工程所示。
步骤3 &发布成功后启动Tomcat服务。
4.2.10 运行eSDK IVS应用实例
打开浏览器,在浏览器中输入url:http://localhost:8080/eSDK_IVS_Demo_BS_Java/,会得到如下所示Demo&运行效果页面。
Demo视图结构
Demo视图结构概括
Demo视图结构图如下图所示。
Demo视图结构图具体说明如下:
l1:Demo中接口的功能树
l2:接口对应的功能页签。具体的功能页签说明如下:
&说明:包括接口的功能描述、输入参数和输出参数的详细描述。
&执行:接口的具体执行和返回结果。
&源码:第三方用户开发的servlet代码。
点击&查询告警事件信息&,默认显示接口的详细说明页签,包括入参和出参的详细说明。如下图查询告警事件信息的接口说明页签所示。
查询告警事件信息的接口说明页签具体说明如下:
l1:查询告警事件信息接口的输入参数及描述。
l2:查询告警事件信息接口的输出参数及描述。
点击&执行&页签,显示接口的执行视图。输入有效的告警事件ID和告警源编码,点击&查询告警事件信息&按钮,输出查询结果。如下图查询告警事件信息的接口执行页签所示。
查询告警事件信息的接口执行页签具体说明如下:
l1:查询告警事件信息接口的输入参数。
l2:查询告警事件信息接口的执行结果。
l3:查询告警事件信息接口的执行状态。
点击&源码&页签,显示接口的服务端代码。如下图查询告警事件信息的源码页签所示。
4.3 基于SOAP的BS开发
4.3.1 导入eSDK IVS Demo工程
通过导入eSDK IVS Demo工程源文件,了解Demo相关功能。
步骤1 &打开Eclipse,单击菜单栏的&File & Import...&。
系统显示&Import&窗口。
步骤2 &选择&General & Existing Projects into Workspace&。
效果如下图Import向导窗口所示。
步骤3 &单击&Next&。
系统显示&Import Projects&窗口。
步骤4 &单击&Browse&,选择&eSDK_IVS_Demo_BS_Java&工程。
效果如下图Import Projects窗口所示。
步骤5 &单击&Finish&按钮,完成&eSDK_IVS_Demo_BS_Java&工程的导入。
具体如下eSDK_IVS_Demo_BS_Java工程结构图所示。
eSDK_IVS_Demo_BS_Java工程以下简称为Demo。
步骤6 &设置Demo工程的编码格式。在Demo工程上单击右键,在弹出的菜单中选择&Properties&。
系统默认打开&Resource&窗口。
步骤7 &设置编码格式为&UTF-8&,单击&OK&,完成编码格式设置。
效果如下图设置工程编码格式窗口所示。
步骤8 &设置SOAP相关配置文件。打开Demo工程&src&目录下的配置文件&esdk_ivs_config.properties&,修改内容如下。
#eSDK&Service&URL,&for&example&:&sdkserver.url=http://10.95.41.64:8086/esdk/services&sdkserver.url=https://localhost:18543/esdk/services&&#To&turn&on/off&the&CXF&logging&interceptor&#true&-&turn&on&the&logging&interceptor,&the&logging&will&be&output&to&console&#false&-&turn&off&the&logging&interceptor&cxf.logging.interceptor.on=true&&#login&user&name&userName=ivsTest01&&#native&login&user&password&password=Huawei_123&&#soap&service&deviceMgr.service.url=ivsProfessionalDeviceManager&commonMgr.service.url=ivsProfessionalCommon&professional.key.service.url&=&platformKeyMgr&&#configuring&SSL&support&#true&-support&the&SSL&#false&-not&support&the&SSL&ssl.support&=&true&&#keystore&password&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore.password&=&Mw3lo+I1Wt9ftuKdqYFIFg==&&#keystore&file&name&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore&=&server.keystore&&#the&keystore&type&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore.type&=&JKS&&#the&keystore&provider&#the&option&will&be&used&when&ssl.support&is&true&ssl.keystore.provider&=&SUN&&#the&Secure&Sockets&Layer&Protocol&#the&option&will&be&used&when&ssl.support&is&true&ssl.secure.socket.protocol&=&TLS&&#to&turn&on&the&SSL&socket&communication&debug&option.&The&debug&output&message&can&help&you&to&know&what&exactly&happens&at&the&SSL&layer.&#all&-turn&on&all&debugging&#ssl&-turn&on&ssl&debugging&#the&following&can&be&used&with&ssl:&#record&&-enable&per-record&tracing&#handshake&&-print&each&handshake&message&#the&option&will&be&used&when&ssl.support&is&true&#for&example:&ssl.javax.net.debug&=&ssl,handshake&ssl.javax.net.debug&=&
用户需要根据实际环境补充如下字段的值:
lsdkserver.url为eSDK IVS提供的服务地址,IP为安装eSDK服务的IP地址,eSDK安装默认使用HTTPS端口,端口号为18543。
l${userName}与${password}为应用账号和密码,根据鉴权策略的不同,具体说明如下:
leSDK默认使用透传鉴权,此处${userName}和${password}分别为在IVS平台配置的登录设备的账号和密码。
l如果使用单应用鉴权或一对一映射鉴权,此处${userName}和${password}为第三方应用向eSDK鉴权的用户名和密码。
l关于鉴权策略及应用账号和密码的具体说明,请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
4.3.2 了解eSDK IVS Demo工程架构
提供的eSDK IVS Demo基于B/S架构。工程主要模块如下eSDK IVS Demo工程结构图所示。
关于工程的主要模块说明,如下所示。
src目录结构
lgen:通过CXF处理WSDL文档生成的bean。(具体参见如何利用CXF工具生成客户端代码 )
linterceptor:用于存放拦截器类。
lservlet:业务层,处理浏览器发来的请求。调用eSDK WSDL提供的接口获取eSDK IVS的业务能力。
lutils:工具类。处理配置文件。
lesdk_ivs_config.properties:配置文件。具体可配置如下几项:
&eSDK的URI
&soap service路径配置
&登录eSDK鉴权的用户名和密码(需要手动对密码加密,使用AES-128加密算法,然后进行BASE64编码,加密工具为:&encode加密工具.rar&)
llog4j.properties :日志属性文件。
WebContent目录结构
lcss:Demo视图页面的css库。
ljs:Demo视图页面的JavaScript库。
lpages:Demo视图页面的html资源。
lindex.html:默认主视图。
linterface:每个接口对应的主视图。
ldescription:接口说明页签的视图。
lexecution:接口执行页签的视图。
lsourcecode:接口调用过程的源代码展示视图。
lpic:Demo视图页面的多媒体库。
lWEB-INF:web应用的第三方库文件和web配置文件。
&lib:用于存放项目中要用到的第三方库
&web.xml:用于配置项目
Demo的开发基于SOAP和Native两种方式,本文档主要介绍基于SOAP的开发方式,结构中的factory在SOAP方式中没有用到,在此不作介绍。
4.3.3 使用CXF拦截器
用户发送登录请求后,需要拦截返回消息Header中的sessionID,在以后的每次请求中,需要把sessionID添加到HTTP Header中。本Demo中使用CXF自带的拦截器进行消息拦截,具体实现方法如下所示。
n编写消息接收拦截器MsgInInterceptor.java(位于src.com.huawei.esdk.demo.interceptor中)。
具体代码如下所示:
public&class&MsgInInterceptor&extends&AbstractPhaseInterceptor&{&&&&&public&MsgInInterceptor()&&&&&{&&&&&&&&&super(Phase.PRE_INVOKE);&&&&&}&&&&&&&&&&@SuppressWarnings("unchecked")&&&&&public&void&handleMessage(Message&message)&&&&&&&&&throws&Fault&&&&&{&&&&&&&&&//&对返回参数中的sessionId截取,通过拆分字符串的方式解析出IVS中的sessionId&&&&&&&&&Map&String,&List&&headers&=&(Map&String,&List&)message.get(Message.PROTOCOL_HEADERS);&&&&&&&&&if&(message.toString().contains("loginResponse"))&&&&&&&&&{&&&&&&&&&&&&&List&String&&msgSession&=&headers.get("Set-Cookie");&&&&&&&&&&&&&if&(null&!=&msgSession&&&&!msgSession.isEmpty())&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&//&发消息到SDK的情况,如果不是loginRequest接口,不赋值&&&&&&&&&&&&&&&&&MsgSessionHolder.getInstance().setSession(msgSession);&&&&&&&&&&&&&}&&&&&&&&&}&&&&&&&&&&&&&&}&}
n编写用于发送消息的拦截器MsgOutInterceptor.java(位于src.com.huawei.esdk.demo.interceptor下)。
具体代码如下所示:
public&class&MsgOutInterceptor&extends&AbstractPhaseInterceptor&{&&&&&&&&&&public&MsgOutInterceptor()&&&&&{&&&&&&&&&super(Phase.PRE_STREAM);&&&&&}&&&&&&&&&&@SuppressWarnings("unchecked")&&&&&public&void&handleMessage(Message&message)&&&&&&&&&throws&Fault&&&&&{&&&&&&&&&//&在header中添加set-cookie属性&&&&&&&&&&&&&&&&&List&String&&session&=&MsgSessionHolder.getInstance().getSession();&&&&&&&&&if&(null&!=&session&&&&!session.isEmpty())&&&&&&&&&{&&&&&&&&&&&&&Map&String,&List&String&&&headers&=&(Map&String,&List&String&&)message.get(Message.PROTOCOL_HEADERS);&&&&&&&&&&&&&headers.put("Cookie",&session);&&&&&&&&&}&&&&&}&}
n添加拦截器ClientProvider.java(位于src.com.huawei.esdk.demo.utils下)。
核心代码如下所示:
private&static&Map&String,&Object&&clientMap&=&new&HashMap&String,&Object&();&&&&&public&static&synchronized&Object&getClient(Class&clz)&&&&&{&&&&&&&&&Object&clientObj&=&clientMap.get(clz.getName());&&&&&&&&&if&(null&!=&clientObj)&&&&&&&&&{&&&&&&&&&&&&&return&clientO&&&&&&&&&}&&&&&&&&&JaxWsProxyFactoryBean&factory&=&new&JaxWsProxyFactoryBean();&&&&&&&&&String&url&=&PropertiesUtils.getValue("sdkserver.url");&&&&&&&&&String&serviceUrl&=&"";&&&&&&&&&if&(clz.getName().equals(IVSProfessionalDeviceManager.class.getName()))&&&&&&&&&{&&&&&&&&&&&&&serviceUrl&=&PropertiesUtils.getValue("deviceMgr.service.url");&&&&&&&&&}&&&&&&&&&else&if&(clz.getName().equals(IVSProfessionalCommon.class.getName()))&&&&&&&&&{&&&&&&&&&&&&&serviceUrl&=&PropertiesUtils.getValue("commonMgr.service.url");&&&&&&&&&}&&&&&&&&&&&&&&&&&&factory.setAddress(url&+&"/"&+&serviceUrl);&&&&&&&&&&&&&&&&&&Object&service&=&&&&&&&&&&service&=&factory.create(clz);&&&&&&&&&Client&client&=&ClientProxy.getClient(service);&&&&&&&&&&&&&&&&&&//&添加Header信息&&&&&&&&&&&&&&&&&if&(Boolean.valueOf(PropertiesUtils.getValue("logging")))&&&&&&&&&{&&&&&&&&&&&&&client.getOutInterceptors().add(new&LoggingOutInterceptor());&&&&&&&&&&&&&client.getInInterceptors().add(new&LoggingInInterceptor());&&&&&&&&&}&&&&&&&&&&&&&&&&&&//&做拦截器,对发送出去的消息添加sessionID,对收到的消息截取sessionID&&&&&&&&&client.getOutInterceptors().add(new&MsgOutInterceptor());&&&&&&&&&client.getInInterceptors().add(new&MsgInInterceptor());&&&&&&&&&&&&&&&&&&//&设置&HTTP&Related&信息&&&&&&&&&HTTPConduit&http&=&(HTTPConduit)client.getConduit();&&&&&&&&&if&(null&==&http)&&&&&&&&&{&&&&&&&&&&&&&return&&&&&&&&&&}&&&&&&&&&HTTPClientPolicy&httpClientPolicy&=&new&HTTPClientPolicy();&&&&&&&&&httpClientPolicy.setConnectionTimeout(35000);&&&&&&&&&httpClientPolicy.setAllowChunking(false);&&&&&&&&&httpClientPolicy.setReceiveTimeout(30000);&&&&&&&&&http.setClient(httpClientPolicy);&&&&&&&&&&&&&&&&&&clientMap.put(clz.getName(),&service);&&&&&&&&&return&&&&&&}
4.3.4 开发eSDK IVS应用实例
可以通过实例开发中介绍的步骤,逐步实现eSDK IVS Demo的运行,了解Demo相关功能。本文档以获取子设备列表信息接口为例,进行eSDK IVS应用实例开发的简要介绍。
本文档所使用的接口如下表所示。
getDeviceList
获取子设备列表信息
获取子设备列表信息的时序图如下图所示。
第三方用户在实际开发时,可根据具体应用场景调用登录鉴权接口、保活会话接口和登出接口。在调用其他接口前,调用登录鉴权接口和保活会话接口(保活会话接口的使用方法请参考二次开发接口参考文档),在整个会话结束后调用登出接口。此处为了方便演示接口调用的周期,在单个接口调用前后,调用了登录和登出接口。
其中有如下两项需要特别注意:
l首先进行登录鉴权,才能调用eSDK IVS其他接口。
l完成登录认证后,启用新线程对登录认证状态保活,否则60秒后登录认证状态超时。
4.3.5 编写视图层
视图层html代码请参考Demo Web工程中&/eSDK_IVS_Demo_BS_Java/WebContent/pages/execution/getdevicelist_execution.html&文件。视图层显示结果如下获取子设备列表信息说明视图所示。
4.3.6 客户端与服务器交互
单击&获取子设备列表&按钮,调用js方法&getDeviceList()&,浏览器将发出请求。请参考Demo工程中的源代码文件&/eSDK_IVS_Demo_BS_Java/WebContent/pages/interface/getdevicelist.html&,代码如下所示:
&&&&&&&&&&&&type&:&"post",&&&&&&&&&&&&&dataType&:&"json",&&&&&&&&&&&&&data&:&"deviceType="&+&deviceType&+&"&fromIndex="&+&fromIndex&+&"&toIndex="&+&toIndex&+&"&method=getDeviceList",&&&&&&&&&&&&&async&:&false,&&&&&&&&&&&&&success&:&function(data)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&//&登录登出异常&&&&&&&&&&&&&&&&&if&(null&==&data.resultCode)&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&$("#getDeviceList_resultCode").val(data);&&&&&&&&&&&&&&&&&&&&&$("#getDeviceList_status").html(controller.language.titles["operationFailed"]);&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&$("#getDeviceList_resultCode").val(data.resultCode);&&&&&&&&&&&&&&&&&&&&&if&(deviceType==2)&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&//&摄像机列表&&&&&&&&&&&&&&&&&&&&&&&&&$("#deviceList").val(JSON.stringify(data.cameraBriefInfos));&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&else&if&(deviceType==3)&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&//&音频设备列表&&&&&&&&&&&&&&&&&&&&&&&&&$("#deviceList").val(JSON.stringify(data.audioBriefInfos));&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&else&if&(deviceType==4)&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&//&告警设备列表&&&&&&&&&&&&&&&&&&&&&&&&&$("#deviceList").val(JSON.stringify(data.alarmBriefInfos));&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(0&==&data.resultCode)&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&$("#getDeviceList_status").html(controller.language.titles["operationSuccess"]);&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&$("#getDeviceList_status").html(controller.language.titles["operationFailed"]);&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&},&&&&&&&&&&&&&error&:&function(data)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&var&res&=&data.responseT&&&&&&&&&&&&&&&&&$("#getDeviceList_resultCode").val(res);&&&&&&&&&&&&&&&&&$("#deviceList").val("");&&&&&&&&&&&&&&&&&$("#getDeviceList_status").html(controller.language.titles["operationFailed"]);&&&&&&&&&&&&&},&&&&&&&&&&&&&beforeSend&:&function()&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&$("#getDeviceList_resultCode").val("");&&&&&&&&&&&&&&&&&$("#deviceList").val("");&&&&&&&&&&&&&}&&&&&&&&&});&
4.3.7 配置servlet
在Web工程中配置servlet。客户端发送请求到服务器,该请求由一个servlet处理,servlet在web.xml中配置信息如下所示:
&servlet&&&&&&&servlet-name&deviceServlet&/servlet-name&&&&&&&servlet-class&com.huawei.esdk.demo.servlet.DeviceServlet&/servlet-class&&&/servlet&&&servlet-mapping&&&&&&&servlet-name&deviceServlet&/servlet-name&&&&&&&url-pattern&/deviceServlet&/url-pattern&&&/servlet-mapping&
4.3.8 deviceServlet处理客户端请求
deviceServlet中实现了doGet方法,根据客户端请求参数method的值调用具体的SOAP接口服务,并将结果以json字符串形式返回给客户端。本文档中涉及的method值为&getDeviceList&。具体代码请参考Demo工程中的类&com.huawei.esdk.demo.servlet.deviceServlet&。doGet方法代码如下图所示。
部分代码说明如下:
l第95行:获取请求参数的method值
l第98~102行:根据method值调用相应的SOAP接口
4.3.9 调用SOAP接口服务
调用SOAP接口服务的源代码请参见Demo工程中的类&com.huawei.esdk.demo.servlet.DeviceServlet&。getDeviceList方法代码如下:
public&String&getDeviceList(HttpServletRequest&request)&{&&&&&&&&&//&定义返回结果&&&&&&&&&String&response&=&&&&&&&&&&&&&&&&&&&//&拼装登录接口入参&&&&&&&&&Login&loginParam&=&new&Login();&&&&&&&&&loginParam.setUserName(userName);&&&&&&&&&loginParam.setPassword(password);&&&&&&&&&LoginResponse&loginResponse&=&new&LoginResponse();&&&&&&&&&&&&&&&&&&try&&&&&&&&&{&&&&&&&&&&&&&//&调用登录接口&&&&&&&&&&&&&loginResponse&=&ivsProfessionalCommon.login(loginParam);&&&&&&&&&&&&&&&&&&&&&&&&&&//&登录失败,返回给页面&&&&&&&&&&&&&int&resultCode&=&loginResponse.getResultCode();&&&&&&&&&&&&&if&(0&!=&resultCode)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&LOGGER.info("Get&deviceList&failed&due&to&login&failed,&errorCode&is&:&"&+&resultCode);&&&&&&&&&&&&&&&&&response&=&gson.toJson(resultCode);&&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&LOGGER.info("Begin&to&getDeviceList");&&&&&&&&&&&&&&&&&&&&&&&&&&//&获取页面参数&&&&&&&&&&&&&int&deviceType&=&Integer.parseInt(request.getParameter("deviceType"));&&&&&&&&&&&&&int&fromIndex&=&Integer.parseInt(request.getParameter("fromIndex"));&&&&&&&&&&&&&int&toIndex&=&Integer.parseInt(request.getParameter("toIndex"));&&&&&&&&&&&&&&&&&&&&&&&&&&//&拼装分页对象&&&&&&&&&&&&&IndexRange&indexRange&=&new&IndexRange();&&&&&&&&&&&&&indexRange.setFromIndex(fromIndex);&&&&&&&&&&&&&indexRange.setToIndex(toIndex);&&&&&&&&&&&&&&&&&&&&&&&&&&//&拼装查询设备列表入参&&&&&&&&&&&&&GetDeviceList&parameters&=&new&GetDeviceList();&&&&&&&&&&&&&parameters.setDeviceType(deviceType);&&&&&&&&&&&&&parameters.setIndexRange(indexRange);&&&&&&&&&&&&&GetDeviceListResponse&getDeviceListResponse&=&new&GetDeviceListResponse();&&&&&&&&&&&&&&&&&&&&&&&&&&//&调用获取子设备列表接口,indexRange为封装的分页对象,deviceType为int型,只能传入2、3、4&&&&&&&&&&&&&getDeviceListResponse&=&ivsProfessionalDeviceManager.getDeviceList(parameters);&&&&&&&&&&&&&&&&&&&&&&&&&&//&用户登出&&&&&&&&&&&&&Logout&logoutParam&=&new&Logout();&&&&&&&&&&&&&LogoutResponse&logoutResponse&=&ivsProfessionalCommon.logout(logoutParam);&&&&&&&&&&&&&&&&&&&&&&&&&&resultCode&=&logoutResponse.getResultCode();&&&&&&&&&&&&&if&(0&!=&resultCode)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&LOGGER.info("Get&deviceList&failed&due&to&logout&failed,&errorCode&is&:&"&+&resultCode);&&&&&&&&&&&&&&&&&response&=&gson.toJson(resultCode);&&&&&&&&&&&&&&&&&return&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&//&登出成功后,根据接口返回数据生成JSON字符串&&&&&&&&&&&&&response&=&gson.toJson(getDeviceListResponse);&&&&&&&&&&&&&LOGGER.info("Finish&to&getDeviceList,&response&is&:&"&+&response);&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&catch&(SOAPFaultException&e)&&&&&&&&&{&&&&&&&&&&&&&LOGGER.error("Get&deviceList&failed&due&to&soap&fault");&&&&&&&&&&&&&&&&&&&&&&&&&&//&SDK内部服务错误&&&&&&&&&&&&&return&gson.toJson();&&&&&&&&&}&&&&&&&&&&&&&&&&&&return&&}&
4.3.10 发布eSDK IVS应用实例
步骤1 &在Demo工程上单击右键,在弹出的菜单中选择&Properties&,弹出配置框,在左边栏选中&Project facets&,勾选&Dynamic Web Module&、&Java&和&JavaScript&三项,单击&OK&,如下图启动配置界面所示。
步骤2 &单击&Eclipse&菜单栏的&File & New & Other&,在打开的新建向导窗口中选择&Server&,如下图新建向导界面所示。
步骤3 &单击&Next&,选择&Apache&下的&Tomcat v7.0 Server&,其它保持默认,如下图Apache配置界面所示。
步骤4 &单击&Next&,进入&Add and Remove&窗口,发布&Demo&到创建好的Server中去,如下图Add and Remove界面所示。
步骤5 &发布成功后启动Tomcat服务。
4.3.11 Demo运行效果
打开浏览器,在浏览器中输入url:http://localhost:8080/eSDK_IVS_Demo_BS_Java/,会得到如下所示Demo&运行效果页面。
Demo视图结构
Demo视图结构概括
Demo视图结构图如下图所示。
Demo视图结构图具体说明如下:
l1:Demo中接口的功能树
l2:接口对应的功能页签。具体的功能页签说明如下:
&说明:包括接口的功能描述、输入参数和输出参数的详细描述。
&执行:接口的具体执行和返回结果。
&源码:第三方用户开发的servlet代码。
点击&获取子设备列表信息&,默认显示接口的详细说明页签,包括入参和出参的详细说明。如下图获取子设备列表信息的接口说明页签所示。
获取子设备列表信息的接口说明页签具体说明如下:
l1:获取子设备列表信息接口的输入参数及描述。
l2:获取子设备列表信息接口的输出参数及描述。
点击&执行&页签,显示接口的执行视图。输入有效的告警事件ID和告警源编码,点击&获取子设备列表信息&按钮,输出查询结果。如下图图4-34 获取子设备列表信息的接口执行页签页签所示。
获取子设备列表信息的接口执行页签具体说明如下:
l1:获取子设备列表信息接口的输入参数。
l2:获取子设备列表信息接口的执行结果。
l3:获取子设备列表信息接口的执行状态。
点击&源码&页签,显示接口的服务端代码。如下图获取子设备列表信息的源码页签签所示。
4.4 基于Native的CS开发
4.4.1 导入eSDK IVS Demo工程
通过导入eSDK IVS Demo工程源文件,了解Demo相关功能。
步骤1 &打开Eclipse,单击菜单栏的&File & Import...&。
系统显示&Import&向导窗口。
步骤2 &选择&General & Existing Projects into Workspace&,如下图Import向导窗口所示。
步骤3 &单击&Next&。
系统显示&Import Projects&窗口。
步骤4 &单击&Browse&,选择eSDK_IVS_Demo_CS_Java工程,如下图Import Projects窗口所示。
步骤5 &单击&Finish&按钮,完成eSDK_IVS_Demo_CS_Java工程的导入,如下eSDK_IVS_Demo_CS_Java工程结构图所示。
eSDK_IVS_Demo_CS_Java工程以下简称为Demo。
步骤6 &设置Demo工程的编码格式。在Demo工程上单击右键,弹出菜单中选择&Properties&。
步骤7 &设置编码格式为&UTF-8&,单击&OK&,完成编码格式设置,如下图设置工程编码格式窗口所示。
步骤8 &设置Native相关配置文件。
打开Demo工程&src&目录下的配置文件&esdk_ivs_config.properties&,完成修改,修改内容如下。
sdkserver.url = http://${IP}:${Port}/esdk/services
并配置文件&user.properties&,修改内容如下。
userName=${userName}
password=${password}
用户需要根据实际环境补充如下字段的值:
l${IP}为安装eSDK IVS的服务器IP地址,${Port}为eSDK IVS的服务端口。
leSDK安装默认勾选HTTPS端口,此次Demo仅支持HTTP访问模式,安装eSDK时请同时勾选HTTP端口。具体请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
l${userName}与${password}为应用账号和密码,根据鉴权策略的不同,具体说明如下:
leSDK默认使用透传鉴权,此处${userName}和${password}分别为在IVS平台配置的登录设备的账号和密码。
l如果使用单应用鉴权或一对一映射鉴权,此处${userName}和${password}为第三方应用向eSDK鉴权的用户名和密码。
l关于鉴权策略及应用账号和密码的具体说明,请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
步骤9 &运行Demo。在&DemoApp.java&类上单击右键&Run As & Java Application&,如下eSDK_IVS_Demo_CS_Java运行方法图所示。
4.4.2 了解eSDK IVS Demo工程架构
提供的eSDK IVS Demo基于C/S架构。工程主要模块如eSDK_IVS_Demo_CS_Java工程结构图所示。
laction包:主要定义界面中一些点击指令。
lview包:主要实现界面编写。
lcommon包:公共方法以及Native服务的获取。
lconvert包:获取界面参数和结果显示。
lesdk_ivs_config.properties:配置文件。设置eSDK的URI。
luser.properties:配置文件。设置登录eSDK鉴权的用户名和密码。
llog4j.properties:配置文件。设置eSDK Native的日志开关。
ldescription:接口说明页签资源。
lconfig:界面国际化资源。
limage:显示图片。
4.4.3 开发eSDK IVS应用实例
可以通过实例开发中介绍的步骤,了解Demo相关功能。本文档以查询告警事件信息接口为例。
本文档所使用的接口如下表所示。
getAlarmEventInfo
查询告警事件信息
查询告警事件信息的时序图如下图所示。
第三方用户在实际开发时,可根据具体应用场景调用登录鉴权接口、保活会话接口和登出接口。在调用其他接口前,调用登录鉴权接口和保活会话接口(保活会话接口的使用方法请参考二次开发接口参考文档),在整个会话结束后调用登出接口。为了方便演示接口调用的周期,在单个接口调用前后,调用了登录和登出接口。
4.4.4 新建Demo工程
步骤1 &打开Eclipse,单击菜单栏的&File & project...&。
系统显示&New Project&界面。
步骤2 &选择&Java Project&,单击&Next&,输入工程名称,单击&Finish&完成工程新建。如下eSDK_IVS_Demo_CS_Java新建工程图所示。
4.4.5 导入Native以及相关jar包
步骤1 &在工程上单击右键,选择&New & Folder&,新建一个文件夹,将Native以及相关jar包复制到该文件夹下。具体Native依赖的jar包如下图所示。
步骤2 &选中所有jar包单击右键,在弹出的菜单中选择&Build Path & Add To Build Path&,将jar包导入至工程中。如下图jar包导入工程界面所示。
4.4.6 调用Native提供的API
步骤1 &设置Native相关配置文件。
n在新建的Demo工程的&src&目录下配置文件&esdk_ivs_config.properties&,新建内容如下。
sdkserver.url = http://${IP}:${Port}/esdk/services
l${IP}为安装eSDK IVS的服务器地址。
l${Port}为eSDK IVS的服务端口。
leSDK安装默认勾选HTTPS端口,此次Demo仅支持HTTP访问模式,安装eSDK时请同时勾选HTTP端口。具体请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
n在新建的Demo工程的&src&目录下配置文件&user.properties&,新建内容如下。
userName=${userName}
password=${password}
用户需要根据实际环境补充如下字段的值:
l${userName}与${password}为应用账号和密码,根据鉴权策略的不同,具体说明如下:
leSDK默认使用透传鉴权,此处${userName}和${password}分别为在IVS平台配置的登录设备的账号和密码。
l如果使用单应用鉴权或一对一映射鉴权,此处${userName}和${password}为第三方应用向eSDK鉴权的用户名和密码。
l关于鉴权策略及应用账号和密码的具体说明,请参见《eSDK IVS V100R005C30 安装配置指南 01(Windows)》。
步骤2 &编写视图层代码。
参考发布Demo中GetAlarmEventInfo.java,显示效果如下图所示。
eSDK_IVS_Demo_CS_Java界面效果图
步骤3 &调用Native提供的API获取IVS业务能力。
参考发布Demo中GetAlarmEventBtnActionImpl.java
//初始化公共服务&,该服务中包含login,logout等接口&CommonServiceEx&commonService&=&ServiceFactory.getInstance().getCommonServiceEx();&&//初始化告警管理服务,该服务中包含告警管理的相关接口&AlarmManagerServiceEx&alarmManagerService&=&ServiceFactory.getInstance().getAlarmManagerServiceEx();&&//登录成功后才能调用其他接口&int&loginErrorCode&=commonService.login(PropertiesUtils.getValue("userName"),&PropertiesUtils.getValue("password"));&if&(0&!=&loginErrorCode)&{&&&&&&}&&//设置入参&StringBuffer&alarmEventId&=&new&StringBuffer();&StringBuffer&alarmInCode&=&new&StringBuffer();&&//从面板中拿到所有参数&AlarmManagerConvert.getParametersFromFrame(alarmEventId,&alarmInCode);&&//调用getAlarmEventInfo&native接口。&//返回查询结果,result包含错误码及查询信息&IVSSDKResponse&AlarmEvent&&result&=alarmManagerService.getAlarmEventInfo(Long.parseLong(alarmEventId.toString()),&alarmInCode.toString());&&//把返回结果渲染到面板中&AlarmManagerConvert.showResultInFrame(result);&&commonService.logout();
4.4.7 运行Demo
在view层中编写main方法,并将界面以及相关事件监听加载完成。参考发布Demo中DemoApp.java,在该类单击右键&Run As & Java Application&,如下eSDK_IVS_Demo_CS_Java运行方法图所示。
4.4.8 运行eSDK IVS应用实例
Demo运行效果
双击发布的Demo jar包,会得到如下图所示eSDK_IVS_Demo_CS_Java运行效果图页面。
Demo视图结构
Demo视图结构图如下图所示。
l1:Demo中接口的功能树。
l2:接口对应的功能页签。具体页签说明如下:
&说明:包括接口的功能描述、输入参数和输出参数的详细描述。
&执行:接口的具体执行和返回结果。
&源码:调用IVS Native方法的核心代码。
单击&查询告警事件信息&,默认显示接口的详细说明页签,包括入参和出参的描述。如下图查询告警事件信息的接口说明页签所示。
n查询告警事件信息接口的输入参数及描述。
n查询告警事件信息接口的输出参数及描述。
单击&执行&页签,显示接口的执行视图。输入有效的告警事件ID和告警源编码,点击&查询告警事件信息&按钮,输出查询结果。如下图查询告警事件信息的接口执行页签所示。
n查询告警事件信息接口的输入参数。
n查询告警事件信息接口的执行结果。
n查询告警事件信息接口的执行状态。
单击&源码&页签,显示接口的调用代码。如下图查询告警事件信息的源码页签所示。
4.5 日志分析
4.5.1 eSDK服务端日志信息概述
日志级别说明
当系统出现问题需要定位且当前的日志无法满足要求时,可以通过修改日志的级别来获取更多的信息。其中DEBUG日志信息最丰富,ERROR日志信息最少。
具体说明如下:
lDEBUG:调试级别
lINFO:信息级别
lWARN:告警级别
lERROR:错误级别
更改日志级别
eSDK Server运行日志级别修改
可以通过修改&log4j.properties&文件来更改eSDK服务器运行日志级别,修改文件后需要重启eSDK服务才能生效。
正常情况下运行日志级别为INFO,调试时需要修改为DEBUG。
&log4j.properties&的路径如下所示:
&C:\Huawei\eSDK\esdk\webcontent\WEB-INF\classes&
修改项如下所示:
llog4j.rootLogger:修改整个eSDK服务器的日志级别,调试时修改为DEBUG。
llog4j.logger.org.apache.cxf:修改SOAP消息的日志级别,调试时修改为DEBUG。
eSDK OM管理平台日志级别修改
可以通过修改&log4j.properties&文件来更改OM管理平台日志级别,修改文件后需要重启eSDK服务才能生效。
正常情况下日志级别为INFO,调试时需要修改为DEBUG。
&log4j.properties&的路径如下所示:
&C:\Huawei\eSDK\esdkom\webcontent\WEB-INF\classes&
修改项如下所示:
llog4j.rootLogger:修改整个OM管理平台的日志级别,调试时修改为DEBUG。
4.5.2 日志信息结构
接口日志格式为:日志时间|级别|接口所属业务|接口类型|接口协议|接口名称|源端设备|宿端设备|事务标识|请求时间|应答时间|请求参数|结果码|应答参数。
记录日志的时间,精确至毫秒;格式为yyyy-MM-dd HH:mm:sss。
支持INFO级别。
接口所属业务
接口所属的产品,包括UC、IVS、TP、FusionSphere、Storage等。
接口类型:
l1:北向接口
l2:南向接口
注:北向接口指的是eSDK与ISV应用之间交互的接口,南向接口指的是eSDK与华为产品之间交互的接口。
接口协议分为SOAP(细分ParlayX)、Rest、COM、Native、HTTP+XML,SMPP。
接口的名称。
发送消息设备/模块的唯一标识字符串,一般是IP地址,本地调用时显示空。
接收消息设备/模块的唯一标识字符串,一般是IP地址,本地调用时显示空。
唯一标识接口消息所属事务,一般用于异步消息中请求与响应消息的关联,业务模块自定义,没有则显示空。
北向接口收到请求的时间,南向接口发起请求的时间,格式为yyyy-MM-dd HH:mm:sss。
北向接口应答的时间,南向接口收到应答的时间,格式为yyyy-MM-dd HH:mm:sss。
请求参数,涉及用户信息时,显示*(比如即时消息,用*替代),涉及多媒体信息时,显示*。
接口处理结果,0或不显示表示成功,其它情况显示错误码。
应答参数,涉及用户信息时,显示*(例如即时消息,用*替代),涉及多媒体信息时,显示*。
示例: 15:45:01 356|info|UC|1|ParlayX|createGroup|10.68.160.1|10.68.160.112|ID2/11/15 15:45:01 026| 15:45:01 345|name=group, autoName=false|0|resultCode=0
操作日志格式为:日期时间|级别|内部模块名|用户|操作客户端标识|操作结果|关键描述信息
记录日志的时间,精确至毫秒,yyyy-MM-dd HH:mm:sss。
支持INFO级别。
内部模块名
内部模块名称,分为:login、config、log、version。
执行操作的用户名称。
操作客户端标识
操作客户端标识,一般为客户端IP。
操作结果:
lsuccessful:操作成功
lfailed:操作失败
关键描述信息
日志详细描述的关键信息,参见如下描述。
补充说明:
l查询类操作,需要包括查询对象标识、名称、相关属性名称和属性值
l设置类操作,需要包括设置对象标识、名称、相关属性名称和属性新值和旧值
l创建类操作,需要包括创建操作涉及的对象标识、名称
l删除类操作,需要包括删除操作涉及的对象标识、名称
示例: 15:45:00 201|info|config|admin|10.68.160.112|successful|add user zhangsan
运行日志格式为:日期时间|级别|内部模块名|关键描述信息
记录日志的时间,精确至毫秒,yyyy-MM-dd HH:mm:sss。
包括DEBUG、INFO、WARN、ERROR级别。
内部模块名
内部模块名称。
关键描述信息
日志详细描述的关键信息,参见如下描述。
关键描述信息包括如下:
l对于系统运行过程中的异常状态和异常动作,需要包括异常对象名称、异常现象的详细描述和关键参数
l对于系统进程的描述,需要包括进程标识、进程状态等
l对于系统线程的描述,需要包括线程标识、线程状态、所属进程等
l对于系统资源的占用描述,需要包括系统资源名、占用情况、是否越限等
l对于加载License,需要包括相应License的关键信息
l对于调试日志,需要包括动作和参数(如反射函数调用invoke(param1, param2, &&))
示例: 15:45:01 102|error|UCServer|java.net.BindException: Address already in use: JVM_Bind
4.5.3 服务端日志存储及上报
关于日志存储及上报说明如下表所示。
日志存储路径
eSDK服务器日志存储于&C:\Huawei\eSDK\esdkom\logs&。
当配置&客户端、服务端日志上报功能接入地址&时,日志会上传至&C:\Huawei\eSDK\esdkom\logs&,否则日志存储于本地&C:\Huawei\eSDK\esdk\logs&。
日志文件名
正在记录的日志文件名为&模块名称.日志类型.log&。
模块名称为&eSDK-Server&和&eSDK-具体的业务&。
日志类型为:
linterface(接口类型)
lrun(运行类型)
loperation(操作类型)
日志文件定期根据大小备份,备份后的文件名为&模块名称.日志类型.log.次序&。
日志定期上传到日志服务器(一般默认60分钟),上传成功后删除本地日志。如果需要修改上传时间间隔,需修改&platform_common_in_conf.properties&中的&platform.upload.log.file.interval&参数,单位分钟,具体路径为&C:\Huawei\eSDK\esdk\webcontent\conf&。
日志删除机制
当日志文件总量大小超过30G时,将最早生成的日志文件压缩备份,文件名称为xx.xx.log.yyyymmddhhmm.zip,文件赋予当前用户可操作权限;当磁盘可用空间小于5%时,顺序删除最早生成的日志文件zip包,并记录日志,直到可用空间大于5%。
日志上报说明
日志上报指日志从业务模块(包括eSDK-Server:eSDK服务端和eSDK-Client:eSDK客户端)上报到日志服务器(即O&M的日志管理服务器),需在eSDK服务器的OM管理平台配置日志上报功能接入地址。
4.5.4 IVS业务示例解读
介绍当出现&鉴权异常&错误提示时的问题定位和处理方法。
当调用接口时出现错误码,鉴权错误。
根据已有案例和经验对问题进行预估
l如果已有案例已经搜集此问题,可以根据已有案例中的解决方法解决该问题。
l如果没有相关案例参考,执行下面的步骤进行问题定位。
查找日志信息
根据错误发生时间、日志级别(ERROR、WARN)及操作的相关信息,在&C:\Huawei\eSDK\esdk\logs&路径的调试日志文件&eSDK-Server.run.log&中查找相关的调试日志,日志示例如下。
[008]&WARN&&PhaseInterceptorChain&[http-bio-8086-exec-3]:&Interceptor&for&{esdk_ivs_professional_server}IVSProfessionalDeviceManagerService#{esdk_ivs_professional_server}addDevice&has&thrown&exception,&unwinding&now&org.apache.cxf.interceptor.Fault:&&&&&&at&com.huawei.esdk.ivs.authorize.LoginAuthorize.authorize(LoginAuthorize.java:74)&&&&&at&com.huawei.esdk.platform.interceptor.AppAuthorize.handleMessage(AppAuthorize.java:62)&&&&&at&org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)&&&&&at&org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)&&&&&at&org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:237)&&&&&at&org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:239)&&&&&at&org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:213)&&&&&at&org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:131)&&&&&at&org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:266)&&&&&at&org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:186)&&&&&at&javax.servlet.http.HttpServlet.service(HttpServlet.java:647)&
根据错误日志信息分析错误原因
根据日志信息LoginAuthorize.authorize抛interceptor.Fault异常,失败的原因可能有:
l请求报文中的Http header中的JSESSIONID无效
n检查JSESSIONID,确保此JSESSIONID在eSDK中有效。
n重新登录eSDK,使用登录接口登录成功后返回的JSESSIONID。
设备不存在
介绍当出现&设备不存在&错误提示时的问题定位和处理方法。
当调用接口时出现错误码,SDK内部服务错误。
根据已有案例和经验对问题进行预估
l如果已有案例已经搜集此问题,可以根据已有案例中的解决方法解决该问题。
l如果没有相关案例参考,执行下面的步骤进行问题定位。
查找日志信息
根据错误发生时间、日志级别(ERROR、WARN)及操作的相关信息,在&C:\Huawei\eSDK\esdk\logs&路径的调试日志文件&eSDK-Server.run.log&中查找相关的调试日志,日志示例如下。
[887]&ERROR&IVSProfessionalCommonImpl&[http-bio-8086-exec-1]:&loginRequest&method&error&com.huawei.esdk.platform.common.exception.SDKException:&device&does&not&exist&&&&&at&com.huawei.esdk.platform.nemgr.DeviceManager.getServiceProxyFromDevice(DeviceManager.java:232)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceManager.getDeviceServiceProxy(DeviceManager.java:213)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceManager.getDeviceServiceProxy(DeviceManager.java:247)&&&&&at&com.huawei.esdk.ivs.domain.util.DeviceServiceProxy.getDeviceServiceProxy(DeviceServiceProxy.java:44)&&&&&at&com.huawei.esdk.ivs.domain.model.Authenticate.login(Authenticate.java:39)&&&&&at&com.huawei.esdk.ivs.business.professional.commonmgr.CommonMgrService.login(CommonMgrService.java:44)&&&&&at&com.huawei.esdk.ivs.authorize.AuthenticateService.login(AuthenticateService.java:71)&&&&&at&com.huawei.esdk.ivs.northcommu.cxf.professional.IVSProfessionalCommonImpl.login(IVSProfessionalCommonImpl.java:97)&
根据错误日志信息分析错误原因
根据日志信息device does not exist分析,发生设备不存在的错误,失败的原因可能有:
l已添加的设备,配置的设备ID不正确。
查看已添加的设备,确认配置的设备ID在设备列表中存在。
设备类型错误
介绍当出现&设备类型错误&提示时的问题定位和处理方法。
当调用接口时出现错误码,SDK系统内部错误。
根据已有案例和经验对问题进行预估
l如果已有案例已经搜集此问题,可以根据已有案例中的解决方法解决该问题。
l如果没有相关案例参考,执行下面的步骤进行问题定位。
查找日志信息
根据错误发生时间、日志级别(ERROR、WARN)及操作的相关信息,在&C:\Huawei\eSDK\esdk\logs&路径的调试日志文件&eSDK-Server.run.log&中查找相关的调试日志,日志示例如下。
[261]&WARN&&DeviceFactory&[http-bio-8086-exec-1]:&mapType2Class&mgrId=com.huawei.esdk.platform.nemgr.DeviceFactory@1aac821&for&XIVSDevType1&is&empty.&[264]&ERROR&IVSProfessionalCommonImpl&[http-bio-8086-exec-1]:&loginRequest&method&error&java.lang.NullPointerException&&&&&at&com.huawei.esdk.platform.nemgr.DeviceInstance.prepareForConnect(DeviceInstance.java:394)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceInstance.getConnection(DeviceInstance.java:239)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceInstance.getServiceProxy(DeviceInstance.java:480)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceManager.getServiceProxyFromDevice(DeviceManager.java:238)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceManager.getDeviceServiceProxy(DeviceManager.java:213)&&&&&at&com.huawei.esdk.platform.nemgr.DeviceManager.getDeviceServiceProxy(DeviceManager.java:247)&&&&&at&com.huawei.esdk.ivs.domain.util.DeviceServiceProxy.getDeviceServiceProxy(DeviceServiceProxy.java:44)&&&&&at&com.huawei.esdk.ivs.domain.model.Authenticate.login(Authenticate.java:39)&&&&&at&com.huawei.esdk.ivs.business.professional.commonmgr.CommonMgrService.login(CommonMgrService.java:44)&&&&&at&com.huawei.esdk.ivs.authorize.AuthenticateService.login(AuthenticateService.java:71)&&&&&at&com.huawei.esdk.ivs.northcommu.cxf.professional.IVSProfessionalCommonImpl.login(IVSProfessionalCommonImpl.java:97)&
根据错误日志信息分析错误原因
根据日志信息mgrId=com.huawei.esdk.platform.nemgr.DeviceFactory@1aac821 for XIVSDevType1 is empty分析,设备类型XIVSDevType1为空,失败的原因可能有:
l查看已添加的设备,配置的设备ID对应的设备类型不正确。
查看已添加的设备,确认配置的设备ID所对应的设备类型正确。
密码解密错误
介绍当出现&密码不正确&错误提示时的问题定位和处理方法。
当调用接口时出现错误码,解密用户密码和设备密码错误。
根据已有案例和经验对问题进行预估
l如果已有案例已经搜集此问题,可以根据已有案例中的解决方法解决该问题。
l如果没有相关案例参考,执行下面的步骤进行问题定位。
查找日志信息
根据错误发生时间、日志级别(ERROR、WARN)及操作的相关信息,在&C:\Huawei\eSDK\esdk\logs&路径的调试日志文件&eSDK-Server.run.log&中查找相关的调试日志,日志示例如下。
[686]&ERROR&SDKException&[http-bio-8086-exec-5]:&Error&Message:PASSWORD&ERROR!&[705]&ERROR&IVSProfessionalDeviceManagerImpl&[http-bio-8086-exec-5]:&add&device&failed&com.huawei.esdk.platform.common.exception.SDKException:&PASSWORD&ERROR!&&&&&at&com.huawei.esdk.ivs.northcommu.cxf.professional.convert.IVSProfessionalDeviceManagerConvert.getDeviceOperInfoSoap2Model(IVSProfessionalDeviceManagerConvert.java:171)&&&&&at&com.huawei.esdk.ivs.northcommu.cxf.professional.convert.IVSProfessionalDeviceManagerConvert.addDeviceSoap2Model(IVSProfessionalDeviceManagerConvert.java:145)&&&&&at&com.huawei.esdk.ivs.northcommu.cxf.professional.IVSProfessionalDeviceManagerImpl.addDevice(IVSProfessionalDeviceManagerImpl.java:191)&
根据错误日志信息分析错误原因
根据日志信息PASSWORD ERROR!分析,密码错误,失败的原因可能有:
l添加设备时,输入的设备密码使用AES128算法解密失败。
检查接口调用的入参,将密码相关的参数使用AES128加密。
必填参数不全
介绍当出现&参数不正确&错误提示时的问题定位和处理方法。
当调用接口时出现错误码,必填参数不全。
根据已有案例和经验对问题进行预估
l如果已有案例已经搜集此问题,可以根据已有案例中的解决方法解决该问题。
l如果没有相关案例参考,执行下面的步骤进行问题定位。
查找日志信息
根据错误发生时间、日志级别(ERROR、WARN)及操作的相关信息,在&C:\Huawei\eSDK\esdk\logs&路径的调试日志文件&eSDK-Server.run.log&中查找相关的调试日志,日志示例如下。
[052] ERROR IVSProfessionalDeviceManagerImpl [http-bio-8086-exec-4]: The input parameter of startSearchDevice method is error
根据错误日志信息分析错误原因
根据日志信息The input parameter of startSearchDevice method is error分析,接口入参错误,失败的原因可能有:
l搜索设备时,输入的参数中缺少必填参数。
检查接口调用的入参,补全入参中的必填参数。
介绍当出现&索引错误&错误提示时的问题定位和处理方法。
当调用接口时出现错误码,统一查询参数中的Fromindex、Toindex不正确。
根据已有案例和经验对问题进行预估
l如果已有案例已经搜集此问题,可以根据已有案例中的解决方法解决该问题。
l如果没有相关案例参考,执行下面的步骤进行问题定位。
查找日志信息
根据错误发生时间、日志级别(ERROR、WARN)及操作的相关信息,在&C:\Huawei\eSDK\esdk\logs&路径的调试日志文件&eSDK-Server.run.log&中查找相关的调试日志,日志示例如下。
[263] ERROR IVSProfessionalClusterManagerImpl [http-bio-8086-exec-6]: The indexRange is error
根据错误日志信息分析错误原因
根据日志信息The indexRange is error分析,输入参数中的索引错误,失败的原因可能有:
l调用接口时,接口的输入参数中的索引值错误。
检查接口调用的入参,起始索引要大于0,而且不大于结束索引。
5.1 如何利用CXF工具生成客户端代码
如何利用CXF工具生成客户端代码?
步骤1 &将WSDL文件(以&esdk_ivs_professional_server.wsdl&为例)拷贝至CXF工具的bin目录下(以&D:\CXF\apache-cxf-2.6.10\bin&为例)。
& 开始 & 运行&,输入cmd,进入&命令提示符&界面。
步骤3 &切换至CXF工具的bin目录,然后执行如下命令:
wsdl2java -p com.huawei.esdk.demo.gen& &verbose esdk_ivs_professional_server.wsdl
执行后,具体如下图所示。
利用CXF生成客户端代码
步骤4 &执行后,生成的客户端代码所在目录为&D:\CXF\apache-cxf-2.6.10\bin&。
6. SDK下载
V1.5.60.101版本发布。
V1.5.20版本。
eSpace VCN3000开放的WebService接口,包含SOAP API、本地JAVA SDK,提供设备&用户&告警&录像&集群管理、视频浏览&回放等能力。
64位Linux平台安装包
V1.5.20版本。
eSpace VCN3000开放的WebService接口,适用于在Linux安装部署。
32位Windows平台安装包
V1.5.20版本。
eSpace VCN3000开放的WebService接口,适用于在32位Windows服务器安装部署。
64位Windows平台安装包
V1.5.20版本,
eSpace VCN3000开放的WebService接口,适用于在64位Windows服务器安装部署。
请拨打热线400-822-9999
选择二次开发客服小组
提供您的公司信息以及问题描述
请选择反馈类型
远程实验室
Login To Download

我要回帖

更多关于 华为手环 的文章

 

随机推荐