<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日韩综合一区久热| 91福利视频免费观看| 亚洲A∨无码无在线观看| 未满十八私人高清免费影院| 女人18毛片免费观看| 亚洲av无码一区二区三区天堂古代| 人妻丰满熟妇无码区免费| 亚洲精品成人片在线播放| 一个人看的www视频免费在线观看| 在线观着免费观看国产黄| 亚洲综合久久精品无码色欲 | 老司机午夜精品视频在线观看免费 | 中国人xxxxx69免费视频| 免费日本黄色网址| 亚洲国产区男人本色| 热久久精品免费视频| 亚洲成A人片在线播放器| 女人张开腿等男人桶免费视频| 亚洲H在线播放在线观看H| 无码国产精品一区二区免费虚拟VR| 亚洲精品无码不卡| 啦啦啦完整版免费视频在线观看| 亚洲人成在线播放网站岛国| 99精品免费观看| 久久精品国产亚洲AV嫖农村妇女| 99国产精品免费观看视频| 亚洲综合久久成人69| 91免费资源网站入口| 亚洲乱码无人区卡1卡2卡3| 国产男女猛烈无遮挡免费视频| 精品国产日韩亚洲一区在线 | 国产精品亚洲AV三区| 亚洲视频免费播放| 亚洲www在线观看| 精品剧情v国产在免费线观看| 自拍偷自拍亚洲精品播放| 久久国产亚洲电影天堂| 国产自产拍精品视频免费看| 今天免费中文字幕视频|