有时我们 nginx 需要和 wowza 服务器交互以进行一些 LB 事宜;有时我们的管理员需要实时了解 wowza 服务器的一些其他状态信息(比如一些自定义对象的状态等等),而用 rtmp 不是太方便。这些情况下,如果我们的 wowza 服务器能提供一个 http api 就好了,就像 web 容器 tomcat 那样。本文以一个简单的 http 发送参数到 wowza,然后 wowza 返回一个 json 为例(经典的 REST 案例),介绍如何让你的 wowza 服务器提供 RESTful web 调用接口。
        本文是在《 取代 Ant:使用 Maven 管理 Wowza 插件开发》例子的基础上进一步进行研发,没有使用 wowza 官方的 Eclipse 插件(官方对 wowza 项目的管理使用的是 ant)。
        1. 新建 maven 项目
        参考《 取代 Ant:使用 Maven 管理 Wowza 插件开发》步骤。新建的 maven 项目 defonds-server-module 如下:

        新建项目的 debug 调试效果:

        2. 编写 HTTProvider2Base 子类

package com.defonds.wms.module.server;import java.io.IOException;
import java.io.OutputStream;import com.wowza.wms.http.HTTProvider2Base;
import com.wowza.wms.http.IHTTPRequest;
import com.wowza.wms.http.IHTTPResponse;
import com.wowza.wms.logging.WMSLogger;
import com.wowza.wms.logging.WMSLoggerFactory;
import com.wowza.wms.vhost.IVHost;public class ServerMonitorHttpInterface extends HTTProvider2Base {private static final WMSLogger logger = WMSLoggerFactory.getInstance().getLoggerObj(ServerMonitorHttpInterface.class.getName());@Overridepublic void onHTTPRequest(IVHost ivHost, IHTTPRequest request, IHTTPResponse response) {String id = request.getParameter("id");String name = request.getParameter("name");logger.debug("ServerMonitorHttpInterface--http--request--id=" + id + ";name=" + name);// TODO do your own business logic hereString jsonObject = "{\"key1\":\"value1\",\"key2\":\"value2\"}";response.setHeader("Content-Type", "application/json");// Get the printwriter object from response to write the required json object to the output stream      OutputStream out = response.getOutputStream();try {out.write(jsonObject.getBytes());out.flush();} catch (IOException e) {logger.error(e.getMessage(), e);}}}

3. 编辑 VHost.xml
        编辑 %wowza%/conf/VHost.xml,添加一个 HTTPProvider:

<HTTPProvider><BaseClass>com.defonds.wms.module.server.ServerMonitorHttpInterface</BaseClass><RequestFilters>monitor*</RequestFilters><AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>

4. 项目重新打包部署
        命令行切换到你的 defonds-server-module 项目目录下,执行
mvn package
        检查 %wowza%/lib 目录,发现 defonds-server-module 已成功部署:

        5. 访问接口
        debug 启动 defonds-server-module,然后在浏览器访问 http://localhost:1935/monitor?id=9527&name=defonds
        发现返回的是
Wowza Streaming Engine 4 Trial Edition

        Eclipse 控制台也没有 ServerMonitorHttpInterface 本应该输出的 log 日志。
        这是因为 com.wowza.wms.http.HTTPServerVersion 这个 HTTPProvider 把请求拦截了:

                 <HTTPProvider><BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass><RequestFilters>*</RequestFilters><AuthenticationMethod>none</AuthenticationMethod></HTTPProvider>

因为它的配置是 *。可以改为其他,或者将其注释掉。就可以了。
        注释掉 HTTPServerVersion 之后,重新启动 defonds-server-module,然后访问 http://localhost:1935/monitor?id=9527&name=defonds:
        这次是返回的我们想要的信息:

        Eclipse 控制台有 log 输出了:
DEBUG server comment - ServerMonitorHttpInterface--http--request--id=9527;name=defonds
        成功了。嗯,就这些,就是这么简单:)本文示例源码已上传 CSDN,有兴趣的朋友可以去这里下载: http://download.csdn.net/detail/defonds/7493981。
        参考资料

  • http://stackoverflow.com/questions/10410854/call-a-wowza-server-from-android-app
  • http://stackoverflow.com/questions/2010990/how-do-you-return-a-json-object-from-a-java-servlet
  • http://www.mkyong.com/webservices/jax-rs/restfull-java-client-with-java-net-url/

让你的 wowza 服务器提供 RESTful web 服务相关推荐

  1. 让你的 wowza server提供 RESTful web 服务

    有时我们 nginx 须要和 wowza 服务器交互以进行一些 LB 事宜:有时我们的管理员须要实时了解 wowza 服务器的一些其它状态信息(比方一些自己定义对象的状态等等).而用 rtmp 不是太 ...

  2. SAP 如何提供 RESTful Web 服务?

    SAP 推荐以 OData 方式提供 Restful Service.Netweaver 7.4 之后的版本可以直接使用 OData 服务.7.4 之前的版本需要升级 GW_CORE.IW_FND 和 ...

  3. 构建 RESTful Web 服务

    from: https://www.ibm.com/developerworks/cn/education/java/j-rest/j-rest.html 开始之前 关于本教程 REST 是一种思维方 ...

  4. RESTful Web 服务 - 安全性

    因为 RESTful Web 服务使用 HTTP URLs 路径,因此以保护网站同样的方式维护 RESTful Web 服务是非常重要的.以下是设计 RESTful Web 服务时要遵循的最佳实践. ...

  5. RESTful Web 服务 - 资源

    什么是资源? REST 架构把所有内容都视为资源.这些资源可以是文本文件,html 页面,图像,视频或者动态业务数据.REST 服务器只提供对资源的访问,REST 客户端访问和修改资源.这里每个资源都 ...

  6. RESTful Web 服务 - 介绍

    什么是 REST? REST 是 REpresentational State Transfer 的缩写.REST 是一种基于 Web 标准的软件架构,它使用 HTTP 协议处理数据通信.它以资源为中 ...

  7. 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

    http://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/ 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务 Y ...

  8. 使用Spring开发Java RESTful Web服务的7个理由

    REST现在已成为开发Web服务的标准方法,涉及Java时,可以使用许多框架和库,例如JAX-RS,Restlet,Jersey,RESTEasy,Apache CFX等,但是我鼓励Java开发人员使 ...

  9. restful web_泽西岛的RESTful Web服务

    restful web 我已经讨论了有关体系结构考虑事项<< link >>的早期文章,以成为可在我的系统/机器上使用的分布式环境上的RESTful系统. 本文我们将讨论如何基 ...

最新文章

  1. nvidia-smi 实时刷新 实时显示显存使用情况
  2. 8、使用SELECTI...INTO OUTFILE导出表数据
  3. C语言中的标识符作用域
  4. python定义一个圆类_(python)创建一个可以比较的自定义类
  5. ad16自动布线设置规则_设计 | 18种pcb设计特殊布线的画法与技巧!
  6. Hadoop 2.5.1集群安装配置
  7. SD卡中FAT32文件格式高速入门(图文具体介绍)
  8. Padavan设置无线中继
  9. html设置字体 圆体,css font-family字体大合集
  10. 计算机键盘正确指法操作方法,键盘指法,图文详解键盘指法练习方法
  11. 轩辕剑【超越XISE菜刀的shell管理工具】
  12. 除了努力挣钱,青春也不能错过的十件事
  13. SQLite崩溃处理
  14. 2019年制定的小目标
  15. 快捷方式管理软件推荐
  16. 苹果7无线网怎么连接电脑连接服务器,iPhone7怎么连接Wifi无线网络?苹果iPhone7 wifi和网络流量自动切换吗?...
  17. Apache2.4的安装、配置与常见的问题(Windows)
  18. [论文笔记]slope one predictors for online rating-based collaborative filtering
  19. 汽车行业的互联网生意经
  20. 台式计算机各种接口的名称,值得收藏的电脑接口大全(图文版)

热门文章

  1. ModuleNotFoundError: No module named nose 的python错误,解决方案
  2. C宏#define的一些用法
  3. 软考A计划-软件设计师(高级程序员)考试大纲
  4. HCTF 2018-warmup
  5. 【openMP并行计算】计算π
  6. i5功耗最低的cpu_CPU真的很费电? 三种环境下处理器功耗实测
  7. 【21天算法学习】折半插入排序
  8. Linux下开源打包工具fpm的安装与使用(超详细)
  9. “硬核”刘强东是怎么炼成的?
  10. ArcSDE10升级SP1补丁