あたらしいソケット対応させるために、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の細かい設定をいれて生成させる・・・というわけにはいきません。
最終更新:2011年02月12日 17:51