30 Mayıs 2008 Cuma

Proje Sunumumu Yaptım

Bugün, uzun süredir araştırmasını yaptığım "IPv6 Destekli Vidyokonferans Yazılımı" konulu diploma projemin sunumunu yaptım. Bir gün öncesinden Necdet Hoca' ya sunduğumdan dolayı bir zorluk yaşamadım. Pazartesi de raporu teslim edeceğim.

4 Mayıs 2008 Pazar

Red5 uygulaması ama nasıl ?

Kaç gündür red5 uygulamasından bahsediyoruz, ama bir red5 uygulaması nasıldır, neye benzer, bu konuda hicbir açıklama yapmadık. Şimdi temel bir red5 uygulamasının yapısı nasıldır, hangi dosya ve dizinlerden oluşur ve bunlar ne işe yarar vs. bunlardan bahsedeceğim.

SUNUCU TARAFI
-----------------------------
Öncelikle daha önceki yazıda bahsettiğim red5 kurulumunu yaptığınızı varsayıyorum. Örnek bir red5 uygulaması "/usr/local/red5-trunk2/doc/templates/myapp/" de WEB-INF dizininde bulunuyor. Şimdilik sadece bu dosyaların içerisindeki bazı yerleri değiştireceğiz ve uygun yere koyacağız. Yaratacağımız yeni uygulamamızın adı "uygulama" olsun."/usr/local/red5-trunk2/dist/weapps/uygulama" dizini içine, bulunduğumuz .../myapp/ içindeki WEB-INF dizinini kopyalayın. Dosyalardaki değişiklikleri /usr/local/red5-trunk2/dist/weapps/uygulama/WEB-INF içinde yapacağız.

1-) log4j.properties : Bu dosya, uygulamadaki log4j kütüphanelerinin kullanacağı ayar dosyasıdır.
Örneğin : "log4j.appender.FLOG2.Threshold=DEBUG" buna benzer satırlardan oluşur. Şu an bu dosya bizi çok ilgilendirmiyor.

2-) red5-web.properties : Uygulama dizini ve sanal host ile ilgili ayarlamalar bu dosyada yapılır. Buradaki contextPath virtualHosts değişkenleri red5-web.xml dosyasından okunuyor.
webapp.contextPath=/myapp olan kısmı
webapp.contextPath=/uygulama yapın ve kaydedin.

3-) web.xml : Jetty/Tomcat Servlet makinasının ilk olarak okuyacağı dosyadır. Bu dosyadaki "webpprootkey" değişkeni uygulamamızın yapısını tanımlar.

webAppRootKey
/myapp
olan kısmı

webAppRootKey
/uygulama
yapın ve kaydedin.

4-) red5-web.xml : Yazmış olduğumuz Java sınıfların yolları ile ilgili ayarlar, sanal-host ve uygulamaya özel servislerin ayarları bu dosyada yapılır.

(< id="web.handler">class="the.path.to.my.Application"
singleton="true" />

(< id="myhandler.service">class="the.path.to.my.Application"
singleton="true" /> )
olan kısmı

(< id="web.handler">class="org.uygulama"

singleton="true" />
< id="myhandler.service">class="org.uygulama"

singleton="true" /> )yapın ve kaydedin.

Yaptığımız bu değişikliğe göre; "yazacağımız Java sınıfının yolu org.uygulama şeklindedir" demiş olduk. Sınıfı yazarken de bu hiyerarşiye göre oluşturacağız.

Şimdi eclipse, netbeans vs. hangi editörü kullanıyorsak, uygulama adında bir Java projesi oluşturuyoruz. Sonra bu projede de org paketi ve bunun içinde de uygulama isimli java sınıfımızı oluşturuyoruz. Yazacağımız kodun hatasız derlenebilmesi için, yazacağımız sınıfta kullanacağımız Red5 sınıflarını barındıran Red5.jar' ın projemize eklenmesi gerekiyor. Kullandığınız editöre göre Red5.jar'ı red5 dizininden projemize ekliyoruz (bendeki yeri : /usr/local/red5-trunk2). "uygulama.java" dosyamıza şunu yapıştırıyoruz :

package org;

import org.red5.server.adapter.ApplicationAdapter;

public class uygulama extends ApplicationAdapter {
public String mesaj (String mesaj)
{
return mesaj;
}
}
Şu anda bilmemiz gereken ilk şey; bir red5 sınıfı ApplicationAdapter sınıfından türetilir, metoda bakınca ne yaptığını sanırım herkes anlamıştır :) Şimdi uygulama.java dosyamızı derliyoruz(Netbeans' da F9 ile). Projemiz nerede oluşturuldu ise build vs. dizini içinde classes isimli bir dizini bulup, bu dizini red5 dizinimizdeki projemiz içine kopyalıyoruz (/usr/local/red5-trunk2/dist/weapps/uygulama/WEB-INF). Projemizdeki son yapı şu şekilde olmalı :

  • uygulama
    • WEB-INF
      • classes (dizin)
      • log4j.properties
      • red5-web.properties
      • red5-web.xml
      • web.xml

İSTEMCİ TARAFI
------------------------------
Tamam uygulamamızı red5 sunucusuna ekledik ama oluşturduğumuz Java dosyasına yapması gereken işi nasıl yaptıracağız? Bunu da Flash ile yapıyoruz. Flash dökümanları oluşturabileceğimiz Macromedia Flash 8 Wine ile pek güzel kurulup çalıştırılabiliyor. MF 8' i kurduğununuzu varsayarak bir flash dökümanı oluşturuyoruz ve şunu yapıştırıyoruz :

nc = new NetConnection();
nc.connect("rtmp://127.0.0.1/uygulama");
nc.onResult = function (obj) {
trace("Mesaj = " + obj) ;
};
nc.call("mesaj", nc, "Bu bizim ilk Red5 uygulamamız") ;

sonra ctrl+enter a basıyoruz ve mesajımız karşımıza geliyor. Tut ki gelmedi, o zaman Red5' i başlatmamışsınızdır :)./usr/local/red5-trunk2/dist içinde "./red5.sh" deyip red5' i çalıştırıyoruz. Şimdi tekrar deneyelim, çalışmış olmalı. İlk basit Red5 uygulamımız hazırdır :)