Locked History Actions

Diff for "asterisk/Java"

Differences between revisions 4 and 5
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Asterisk-Java =

AGIはasterisk側からスクリプトを必要な時にその都度キックして呼び出すものだが、当然この方式では起動時間のコストがかかる。
FastAGIは「サーバ」に対してTCPポートで要求を送信して結果を得るもの。
要するに、ウェブサイトにおけるCGI呼び出しからサーブレットへの変更のようなものと思えばよい。


Asterisk-Javaは、そのFastAGIプロトコルを解するJava製のサーバ。Asterisk-Javaを使うということは、要するにサーブレットコンテナにデプロイする
サーブレットを開発するようなもの。

== ダウンロード等 ==

 * [[https://blogs.reucon.com/asterisk-java/]]の右側にダウンロードがある。


== 使い方 ==

 * [[http://www.asterisk-java.org/development/tutorial.html]]

上に利用方法が簡単に記述されているが、これはとてもわかりにくい。簡単に言えばこれは、「サーブレットコンテナ」であるということ。
したがって、Javaのmainメソッドは、asterisk-java.jarの中にある。具体的には、org.asteriskjava.fastagi.DefaultAgiServerクラスのmainメソッドを用いる。

そして、自分で開発した「サーブレット」に名前をつけ、それを呼び出してもらうことになる。この「名前のマッピング」はfastagi-mapping.propertiesにて行う。

asterisk側では、その名前を指定して呼び出すことになる。


== DefaultAgiServerについて ==

このライブラリのmainメソッドを利用しない、あるいはfastagi-mapping.propertiesによるマッピングを行わないことも可能である。
これはDefaultAgiServerのソースをみればすぐにわかる。以下では、プログラ中でマッピングを行い、明示的にDefaultAgiServerを作成して実行する方法を示す。


{{{
    DefaultAgiServer server = new DefaultAgiServer();
    SimpleMappingStrategy ms = new SimpleMappingStrategy();
    Map<String, AgiScript>mapping = new HashMap<String, AgiScript>();
    mapping.put("hello.agi", new HelloAgiScript());
    ms.setMappings(mapping);
    server.setMappingStrategy(ms);
    
    server.startup();
}}}

startup()の後は制御が戻らない。サーバをシャットダウンするには、shutdown()を呼び出す。