red5用のPluginを書いてみる

あたらしいソケット対応させるために、websocket用にpluginを書いて動作させようと思います。
一番はじめにRed5用のプラグインというものがどういうものであるか知る必要があるので、適応なPluginを書いてみることにします。

とはいえ、資料が全然みつからないです。Red5のソースコードを追ってとりあえず動作をするものを作りましたが、間違いの指摘等ありましたら、よろしくおねがいします。

red5のプラグインの作り方
  • 作成したJarファイルはred5-home/plugins/というディレクトリの内部に設置する。
  • ManifestファイルにRed5-Plugin-Main-Classを記述しておく(個々がプラグインのエントリーになる。)
  • PluginのメインクラスはRed5Pluginクラスを継承しておく。
  • アプリケーションのWEB-INF/red5-web.xmlの内部にプラグイン利用を記述しておく。(*)

これだけ押さえておけば大丈夫です。
(*)に関して、別に記述しなくても起動時にpluginsディレクトリの中身を読み込みにいき、doStartを実行するようです。
アプリケーションに記述しておけば、アプリケーションのstart時にも実行することになります。

まずはマニフェスト。今回は、webSocket用のプラグインをつくろうとしてつくったひな形です。
Manifest-Version: 1.0
Red5-Plugin-Main-Class: com.ttProject.red5.server.plugin.websocket.WebSocketPlugin
 
Name: WebSocketPlugin.class
Java-Bean: True
 
エントリーとして利用しようとおもっている。WebSocketPluginクラスを設定しておきます。

プログラムは以下のような感じ
package com.ttProject.red5.server.plugin.websocket;
 
import org.red5.server.Server;
import org.red5.server.plugin.Red5Plugin;
import org.springframework.context.ApplicationContext;
 
public class WebSocketPlugin extends Red5Plugin {
	public WebSocketPlugin() {
		System.out.println("constructor");
	}
	@Override
	public void doStart() throws Exception {
		System.out.println("doStart");
		super.doStart();
	}
	@Override
	public void doStop() throws Exception {
		System.out.println("doStop");
		super.doStop();
	}
	@Override
	public void setApplicationContext(ApplicationContext context) {
		System.out.println("set application context:" + context.getId());
		super.setApplicationContext(context);
	}
	@Override
	public void setServer(Server server) {
		System.out.println("set server:" + server.toString());
		super.setServer(server);
	}
	@Override
	public String getName() {
		return "WebSocketPlugin";
	}
}
 

ただ書いただけでなにもしてません。
もし、WEB-INF/red5-web.xmlに記述して、アプリケーション起動時に特別な動作させたい場合は次のように書きます。
<bean id="web.handler" class="jp.co.ttProject.Application" singleton="true">
     <property name="plugins">
       <list>
         <bean class="org.red5.server.plugin.PluginDescriptor">
           <property name="pluginName" value="WebSocketPlugin"/>
           <property name="pluginType" value="com.ttProject.red5.server.plugin.websocket.WebSocketPlugin"/>
           <property name="method" value="doStart"/>
         </bean>
       </list>
     </property>
   </bean>
 
ApplicationAdapterの読み込みのところにpropertiesとしてpluginsを追加し、その中にbeans設定をいれます。
ちなみに、このlistの中にbeansはPluginDescriptorのBeanを生成してるわけで、WebSocketPluginを生成しているわけではありません。
なので、ここのWebSocketPluginの細かい設定をいれて生成させる・・・というわけにはいきません。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年02月12日 17:51
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。