<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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 閱讀(11009) 評論(0)  編輯  收藏 所屬分類: 服務配置
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567



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


    常用鏈接

    留言簿(2)

    隨筆分類

    文章分類

    FLASH

    Java

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲av之男人的天堂网站| mm1313亚洲精品国产| 亚洲AV无码不卡在线播放| 国产大片免费天天看| 亚洲国产综合久久天堂| 一级特黄录像视频免费| 亚洲精品成a人在线观看| xxxxx做受大片视频免费| 亚洲综合熟女久久久30p| 你懂的免费在线观看网站| 亚洲av无码一区二区三区网站 | 亚洲免费视频播放| 99爱视频99爱在线观看免费| 亚洲精品成人图区| 老司机在线免费视频| 亚洲国产精品无码久久久秋霞1| 在线观看国产情趣免费视频| 日韩色日韩视频亚洲网站| 在线亚洲精品自拍| 香蕉免费在线视频| 亚洲AV无码久久精品成人| 免费精品无码AV片在线观看| 亚洲www在线观看| 日韩一品在线播放视频一品免费| 色婷婷精品免费视频| 久久亚洲免费视频| 中文字幕亚洲免费无线观看日本| 91精品免费国产高清在线| 亚洲人成电影网站久久| 免费成人黄色大片| 日本在线看片免费| 亚洲免费二区三区| 国产又大又粗又硬又长免费| 成人网站免费大全日韩国产| 免费一级毛片正在播放| 久久免费高清视频| 33333在线亚洲| 国产精品亚洲玖玖玖在线观看 | 中文字幕精品无码亚洲字| 久久A级毛片免费观看| 亚洲码和欧洲码一码二码三码|