posts - 28,  comments - 13,  trackbacks - 0
          RED5 將所有的應用程序都放在RED5根目錄下的"webapps"目錄。你需要為所創建的程序在webapps目錄下添加相應的目錄。在你的應用程序目錄里應該有一個名為"WEB-INF"的目錄,用來存放你的程序的配置文件。在"doc/templates/myapp"目錄有一個模板,可以用來幫你完成建立程序的初始工作。
          RED5啟動的時候,在"webapps"目錄的程序文件都是搜索"WEB-INF"的目錄下的配置文件來完成配置的。
          最主要的配置文件是"web.xml"。這個文件里包含了以下參數:
          globalScope:指定全局作用范圍
          <context-param>
          ? ? <param-name>globalScope</param-name>
          ? ? <param-value>default</param-value>
          </context-param>
          contextConfigLocation:指定配置handler的文件的位置。這些配置文件描述了客戶端加入/離開的動作觸發后調用的處理方法,作用范圍。在描述的時候可以使用通配符來描述多個文件:
          <context-param>
          ? ? <param-name>contextConfigLocation</param-name>
          ? ? <param-value>/WEB-INF/red5-*.xml</param-value>
          </context-param>
          locatorFactorySelector:程序的根上下文,通常是"red5.xml"
          <context-param>
          ? ? <param-name>locatorFactorySelector</param-name>
          ? ? <param-value>red5.xml</param-value>
          </context-param>
          parentContextKey:父級上下文,通常是"default.context"
          <context-param>
          ? ? <param-name>parentContextKey</param-name>
          ? ? <param-value>default.context</param-value>
          </context-param>
          log4jConfigLocation:日志配置文件的位置
          <context-param>
          ? ? <param-name>log4jConfigLocation</param-name>
          ? ? <param-value>/WEB-INF/log4j.properties</param-value>
          </context-param>
          webAppRootKey:程序的全局唯一名
          <context-param>
          ? ? <param-name>webAppRootKey</param-name>
          ? ? <param-value>/myapp</param-value>
          </context-param>
          對于每一個Handler配置文件最少需要有三個bean
          Context:用來影射路徑到某個作用范圍、搜索服務和Handler,它有一個保留的名字"web.context"。 其默認的類為org.red5.server.Context
          <bean id="web.context" class="org.red5.server.Context"
          ? ???autowire="byType" />
          對于沒有一個應用程序只應該有一個Context,但是同一個Context可以被多個作用范圍共享
          Scope:每一個應用程序最少有一個作用范圍,用來將handler連接到context和服務器。作用范圍可以建立一棵樹,每一個客戶端連接到樹上的一個節點,而共享對象存在于作用范圍里。可以把作用范圍看作是聊天室或者程序實例。默認的作用范圍通常是web.scope,不過這名字是可以任意取的。
          對于bean有以下屬性:
          server:與全局服務器"red5.server"相關。
          parent:指定當前作用范圍的父范圍,通常是"global.scope"
          context:當前作用范圍的服務器上下文,一般指定為"web.context"
          handler:對應當前作用范圍的handler
          contextPath:用來連接到當前作用范圍的路徑
          virtualHosts:一個主機名或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"放到另外一個單獨的屬性文件里邊,而在這里使用變量來表示,為此需要添加一個特別的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.0.1
          則上邊的bean的"contextPath"和"virtualHosts"屬性即可使用變量來指定值
          ??<property name="contextPath" value="http://www.ruyiblog.com/${webapp.contextPath}" />
          ? ?<property name="virtualHosts" value="http://www.ruyiblog.com/${webapp.virtualHosts}" />
          對于"contextPath"可以視為是一個根作用范圍。你可以在配置好的"contextPath"路徑后邊隨意添加其他的路徑,而連接到這些路徑的客戶端將動態創建另外的作用范圍,這些作用范圍使用的是同樣的handler,但擁有自己的屬性、共享對象和活動流。
          handler:每一個上下文需要一個handler來響應用戶連接、離開作用范圍時的動作,handler實現了很多方法,用戶可以調用以達到特定的目的。這個handler必須實現"org.red5.server.api.IScopeHandler"接口,當然針對共享對象和流的訪問還應該實現其他的接口。
          在"org.red5.server.adapter.ApplicationAdapter"可以找到一個能夠用作基類的例子,同時還應該多多參照文檔以得到更多細節。
          某個作用范圍的handler可以如下指定:
          <bean id="web.handler"
          ? ???class="the.path.to.my.Application"
          ? ???singleton="true" />
          其中"id"屬性是上邊定義的作用范圍里指定的。
          如果你不需要任何服務端的邏輯處理,可以使用Red5默認提供的handler
          <bean id="web.handler"
          ? ???class="org.red5.server.adapter.ApplicationAdapter"
          ? ???singleton="true" />
          handler的例子
          ??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("The result is " + obj);
          ??}
          ??nc.call("add", nc, 1, 2);
          返回因該有輸出:
          The result is 3
          posted on 2007-01-24 14:14 Lib 閱讀(11014) 評論(0)  編輯  收藏 所屬分類: 服務配置
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345



          我的JavaEye博客
          http://lib.javaeye.com


          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          FLASH

          Java

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 延长县| 灌云县| 同仁县| 枝江市| 鄄城县| 广灵县| 宁远县| 台州市| 青神县| 九寨沟县| 永新县| 无棣县| 龙门县| 安化县| 都江堰市| 山东| 科技| 皮山县| 会理县| 鱼台县| 洪湖市| 新民市| 台南县| 花莲市| 韶关市| 兴仁县| 柘荣县| 黔东| 商洛市| 分宜县| 沙湾县| 蓬安县| 衡水市| 邓州市| 叶城县| 河津市| 奉贤区| 固镇县| 随州市| 胶南市| 通山县|