`
timcuisw
  • 浏览: 20117 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于RED5——配置文件详解

阅读更多

Red5 是建立在Jetty6(servlet engine) , Mina (networking)基础之上的,并通过使用Spring框架将起整合起来的.因此我们需要有一些配置文件.我们可能的通过载入properties 文件来简化配置,因此用户不需要深入了解XML.该文档就是要新手们去熟悉这些配置文件,其中一些需要改动,一些不必关心.

Jetty Config
----------------------------------

  一、/conf/jetty.xml
  servlet引擎主配置文件,如果你的应用程序是放在webapps文件中的,你就不需要更改该配置文件.该文件非常象一把瑞士军刀.你可以任意排序.关于其更多的详细信息参见jetty官方相关文档.

  二、/conf/web-default.xml
  缺省的web xml,其在WEB-INF/web.xml之前使用,它使得将servlets添加到所有的应用程序中.可以将其理解为一个webapp的模板文件.

  三、/conf/keystore 文件存储指纹.

  四、/conf/realm.properties web的归属,用户,密码等设置.

Red5 Server配置文件
----------------------------------

  一、/conf/red5.properties
  通过修改该文件我们就可以很轻松的指定端口,配置参数等,而不必去编辑xml文件.我们试图将所有的公用配置放到该文件中.

  二、/conf/red5.xml
  连接上下文.不知道是什么意思么?呵呵,不用担心,你不需要编辑该文件,除非你要添加另外一个全局的上下文.你可能在管理Red5的时候才会做这样的事情.

  三、/conf/red5-common.xml
  用来配置上下文环境树的根部,所有的服务都可以用于子环境.如果你想让在全局上下文环境中分享你的服务的话,你就需要修改该文件.99%的用户不需要编辑该文件.

  四、/conf/log4j.properties
  设置日值层,和输出文件等等.该文件作用于整个服务器.除非你要在webapp中的WEB-INF文件夹中使用log4j配置替代该文件,那么你就需要修改该文件.

  五、/conf/red5-net.xml
  安装Mina和启动Jetty.用户不需要修改该文件,类似端口的设置需要通过red5.properties文件配置.

  六、/webapps/red5-default-global.xml
  这是全局的上下文,大部分的服务器只需要一个,但是在安全的管理虚拟主机的时候需要将全局上下文分离.如果你想要在应用程序中分享服务的时候,将其加到这里.该上下文可以操作类似客户端注册和全局作用域.

Webapp配置文件
----------------------------------

  在默认的情况下,Red5将所有的应用程序存放在根目录的"Webapps"目录下面.因此在创建一个新的应用程序之前,首先需要在这个目录中创建一个子目录.习惯上这个子目录的名字应该和马上创建的应用程序的名字是一样的.

  在你的新应用程序中,需要一个"WEB-INF"的文件夹用来存放关于使用类情况的配置文件.你可以使用Red5提供的一个模板,它可以在"doc/templates/myapp"文件夹中找到.

  在Red5启动的时候,所有文件夹中的配置文件都会搜索到.

  在Red5提供的模板中,WEB-INF下一共有四个配置文件,分别是web.xml,red5-web.xml,red5-web.properties和log4j.properties。下面主要详解一下前两个文件的功能。

  一、Web.xml。主要的配置文件,它包含了如下参数:

  1.globalScope:
  "globalScope"为全局作用域,它可以使用默认的设置.
  <context-param>
       <param-name>globalScope</param-name>
       <param-value>default</param-value>
  </context-param>

  2.contextConfigLocation
  设置应用程序中控制文件的名称.这些控制文件列出了应用程序连接或断开客户端的类,同时也提供客户端可以调用的方法的类.

  控制文件还设定了这些类的有效范围.

  在这个路进中还可以使用通配符,从而可以包含进来多个文件.

  以下代码就是使用了通配符的代码,把WEB-INF/目录下所有文件名前面是“red5-”字样的xml文件包含进来,模板中是把red5-web.xml文件包含了进来。
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/red5-*.xml</param-value>
  </context-param>

  3.locatorFactorySelector
  指定根应用程序上下文配置文件通常是"red5.xml"::
  <context-param>
     <param-name>locatorFactorySelector</param-name>
     <param-value>red5.xml</param-value>
  </context-param>

  4.parentContextKey
  父上下文的名字,通常是"default.context"::
  <context-param>
   <param-name>parentContextKey</param-name>
   <param-value>default.context</param-value>
  </context-param>

  5.log4jConfigLocation
  指定子log系统的路径。模板中其实是把log4j.properties指定为log系统的路径。
  <context-param>
   <param-name>log4jConfigLocation</param-name>
   <param-value>/WEB-INF/log4j.properties</param-value>
  </context-param>

  6.webAppRootKey
  指定应用程序唯一的名称为/myapp
  <context-param>
   <param-name>webAppRootKey</param-name>
   <param-value>/myapp</param-value>
  </context-param>

  二、red5-web.xml。配置文件,每一个控制配置文件都至少包括如下三种Bean:

  1.Context
  这个Context bean有个预留的名字"web.context",它用来将路径放入域中,同时查找服务和控制器。默认的类是"org.red5.server.Context".

  具体代码如下:
  <bean id="web.context" class="org.red5.server.Context" autowire="byType" />
  每个应用程序只能有一个Context。然而这个Context能够跨多个域共享。

  2.域(Scope)
  每一个应用程序至少有一个Scope,这个Scope将控制器(Handler)连接到了Context和Server.这个Scopes用来建造一个树结构,客户端能够连接到这个树上的任何一个节点和共享对象(例如共享对象或者实时流).你可以将Scope看作是一个房间或者实例.

  默认的Scope通常有个名字"web.scope",但是这个名字可以任意的选择.

  这个Bean有如下的属性.
  "server"----设置全局的服务器域"red5.server".
  "parent"----设置父域,通常是"global.scope".
  "context"----指当前域,使用上面提到的"web.context"
  "handler"----当前域的控制器(Handler,下面将会提到).
  "contextPath"----连接当前域的路径.
  "virtualHosts"----用逗号分割开当然域(scope)运行的一组主机名或者IP地址.

  例如:
  <bean id="web.scope" class="org.red5.server.WebScope" init-method="register">
   <property name="server" ref="red5.server" />
   <property name="parent" ref="global.scope" />
   <property name="context" ref="web.context" />
   <property name="handler" ref="web.handler" />
   <property name="contextPath" value="/myapp" />
   <property name="virtualHosts" value="localhost, 127.0.0.1" />
  </bean>

  你可以将"contextPath"和"virtualHosts"的值转移到一个单独的properties文件,然后用参数表示.如果是这样的话,你就需要另外的一个Bean::
  <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="location" value="/WEB-INF/red5-web.properties" />
  </bean>

  假设一个"red5-web.properties"文件包含如下数据::
  webapp.contextPath=/myapp
  webapp.virtualHosts=localhost,127.0.01
  那么,在Scope中的参数将会变成如下样子::
  <property name="contextPath" value="${webapp.contextPath}" />
  <property name="virtualHosts" value="${webapp.virtualHosts}" />

  这个"contextPath"将会被看作域的"根(root)".当需要动态创建扩展域的时候,你可以在这个路径后边添加新的元素.

  这个额外域将使用同一个控制器(Handler),但是他们都拥有自己独立的属性,共享对象和实时流.

  3.控制器(Handlers)
  每一个Context都需要一个控制器(Handler),它实现一个方法,这个方法将在一个客户端连接这个域(Scope)时触发.这个控制器需要实现的接口是:"org.red5.server.api.IScopeHandler",然而如果你想控制访问共享对象或者流,你也可以实现其它接口.

  有一个"org.red5.server.adapter.ApplicationAdapter"作为一个基础类可以在类库中找到,这个类就是一个简单实现的例子.更多详细信息请查阅javadoc文档.

  这个Bean作为一个域的控制器要进行如下配置::
       <bean id="web.handler" class="the.path.to.my.Application" singleton="true" />
  这个ID的参数就是上面提到的域(scope)设置.

  4.控制器实例:用下面几行代码实现一个简单的控制器::
     package   the.path.to.my;
     import org.red5.server.adapter.ApplicationAdapter;
     public class Application extends ApplicationAdapter{
     public Double add(Double a,Double b){
     return a+b;
     }
     }
   
  假设已经经过了上面的配置,你可以通过如下的脚本来调用这个方法.
     nc = new NetConnection();
     nc.connect("rtmp://localhost/myapp");
     nc.onResult = function(obj){
     trace("This result is " +obj);
     }
     nc.call("add",nc,1,2);
  输出的结果如下:
  The result is 3;

  关于控制器的建立方法,请参考《关于RED5——如何由RED5的“WIN安装版”建立应用程序》一文中的Application.java的建立与编译、执行。

  三、red5-web.properties。

  存放red5-web.xml中参数"contextPath"和"virtualHosts"的文件。该文件可以被red5-web.xml轻松的使用,也会被red5 jetty configurator读取从而设置ebapp.virtualHosts和webapp.contextPath.注意不同的servlet引擎要求的配置文件不同,要酌情决定.

  四、log4j.properties。

  允许你为每个webapp分别设置日志等级等等。该文件也会被spring自动载入。一般不用去修改它,因为在red5的安装目录下的conf文件夹下也有一个相同的文件,该文件已经作用于整个服务器,他的作用是设置了日值层,和输出文件等等。


文章原地址:http://hi.baidu.com/xinming_blog/blog/item/8f92affd946c2446d6887dab.html

 

分享到:
评论

相关推荐

    red5入门--环境搭建

    2. **调整Red5配置**:可以尝试修改Red5服务器的配置文件`conf/Global.xml`,增加以下配置项以延长握手时间: ```xml &lt;handshakeTimeout&gt;30000&lt;/handshakeTimeout&gt; &lt;!-- 延长握手超时时间 --&gt; ``` 3. **...

    基于red5的javaDemo JDK1.7

    【基于Red5的Java Demo——JDK1.7详解】 在深入探讨基于Red5的Java Demo之前,我们首先需要理解Red5和JDK1.7这两个核心概念。Red5是一款开源的流媒体服务器,它支持实时传输协议(RTMP)、RTMPT、RTMPE、RTMPF以及...

    火龙果(redpitaya)开发板常用接口C语言开发指南(十一)——串口通信详解(持续更新中)

    火龙果(redpitaya)开发板常用接口C语言开发指南(十一)——串口通信详解(持续更新中)串口通信串口及使用模块简介red pitaya串口收发红外译码数据 ——本人为《火龙果实战指南——搭建基于Zynq处理器的测量仪器...

    RPM打包全过程SPEC详解

    RPM打包过程涉及一个关键文件——SPEC文件,它是RPM构建过程中的配置文件,详细定义了软件包的元数据、构建步骤和安装规则。本文将深入探讨RPM打包的全过程,特别是SPEC文件的详解。 **1. RPM与SPEC文件** RPM是...

    MySQL读写分离配置图文详解(案例).pdf

    2. **修改配置文件**:Amoeba的主要配置文件有两个——`amoeba.xml`和`dbServers.xml`。`amoeba.xml`中需配置Amoeba的监听端口(8066),以及连接到Amoeba的用户名和密码。`dbServers.xml`则用于定义主从关系,例如...

    红旗redflag 6 sp1硬盘安装全攻略

    另外,需要从ISO中的isolinux目录提取两个关键文件——`vmlinuz`和`initrd.img`,并将它们复制到同一分区的根目录下。 **二、GRUB引导设置** 1. **GRUB配置**:GRUB是一款多操作系统启动加载器,它允许你从不同的...

    linux——rpm命令

    这将显示软件包的概要信息、文件列表和配置文件列表。 ##### 9. 列出所有被安装的 rpm package 为了查看系统上安装的所有 RPM 包,使用: ```bash # rpm -qa ``` ##### 10. 列出一个未被安装进系统的 RPM 包文件中...

    openssh8.4——rpm升级包

    在CentOS 7中,OpenSSH的配置文件通常位于`/etc/ssh/`目录下,特别是`sshd_config`文件。备份这些文件可以防止意外配置丢失或错误。 3. **上传RPM包**:将RPM包上传到运行CentOS 7.7的服务器上。你可以通过FTP、SCP...

    yum源配置.docx

    以下是一份典型的YUM源配置文件——“CentOS-Base.repo”的内容,该文件用于CentOS系统的软件包管理。 ##### 1. [base] 部分 ``` [base] name=CentOS-$releasever-Base baseurl=http://mirrors.163.com/centos/$...

    redflag_linux安装手册.rar

    8. **等待安装完成**:系统会自动配置文件系统,安装必要的驱动和软件,这个过程可能需要一段时间。 9. **首次启动与配置**:安装完毕后,首次启动系统,可能会有一些基本的系统设置需要完成。 “user.pdf”文档...

    操作系统课程设计实验报告(以Linux为例

    - 更新GRUB配置文件以添加新内核选项。 - 重启系统并选择新内核启动。 **实验结果分析** - 检查编译和安装过程中遇到的问题及其解决方法。 - 观察GRUB配置文件的变化情况。 - 分析新内核启动过程中的任何错误信息...

    Word版,Python GUI设计——Tkinter菜鸟编程(上、中、下)

    ### Python GUI设计——Tkinter基础知识详解 #### 一、Tkinter简介 Tkinter是Python标准库中的一个图形用户界面(GUI)工具包,它提供了一系列的控件来帮助开发者快速构建用户界面。由于其易用性和跨平台特性,...

    pdksh-5.2.14-37.el5.x86_64

    PDKSH 5.2.14-37.el5.x86_64是针对Red Hat Enterprise Linux 5 (RHEL5)的一个特定版本,它支持64位架构。这个版本修复了一些已知问题,提升了稳定性和性能,同时包含了必要的安全更新。在RHEL6系统上,如果你正在...

    openmeeting的介绍与安装 .doc

    它利用了先进的流媒体技术,包括OpenLaszlo’s的新流媒体格式和开源的Flash服务器——Red5,提供了高质量的音视频传输服务。OpenMeeting支持多种功能,如屏幕共享、白板协作、即时消息等,适用于远程教育、在线会议...

    DBAr日记——修订版

    - RAC系统基于Oracle 10.2.0.3版本,运行在两台配置为8个CPU和16GB内存的微机服务器上,操作系统为64位Red Hat Linux AS4 Update 4。 - CRS (Cluster Resource Manager) 已安装了BUNDLE PATCH 1,这是保持RAC集群...

Global site tag (gtag.js) - Google Analytics