JBoss Seam 2.2.1 ve Glassfish 2.1 Kurulumu

JBoss Seam genel olarak Java EE5 destekleyen tüm uygulama sunucularında çalışmakta fakat doğal olarak asıl desteklediği JBoss AS dışındaki uygulama sunucularında çalıştırmak biraz uğraş gerektiriyor… Bu uğraş aslında uygulama sunucuların temel ayarları ya da JBoss Seam’in altta kullandığı bazı bağımlılıkların o uygulama sunucular içerisinde bulunmamasından kaynaklanıyor.

Burada mümkün olduğunca Glassfish v2 üzerinde nasıl çalışma ortamı yaratılacağından bahsetmeye ve zaman içerisinde de gerekitiğinde güncellemeye çalışacağım.

Öncelikle Glassfish Kurulumu

Glassfish v2 Java EE 5 deskteklemektedir. Glassfish v3 ise Java EE 6. Dolayısı ile Seam 2.x sürümü ile çalışacaksanız Glassfish v2 terih etmelisiniz.

Buradan Glassfish paketini indirdikten sonra kurulum için yapmanız gereken oldukça basit.

$>java -Xmx256m -jar {paket-adı}.jar

komutuyla indirdiğiniz paket glassfish adlı bir klasör içine açılacaktır. Ardından aşağıdaki komutla kurulum işleminiz tamamlanacaktır.

$>chmod -R +x lib/ant/bin
$>lib/ant/bin/ant -f setup.xml

Glassfish kurulduğunda domain1 adıyla otomatik bir domain açacak ve varsayılan kullanıcı için admin ve parola olarak olarakta adminadmin ataması yapacaktır.

Sunucuyu çalıştırıp test etmek için aşağıdaki komutu çalıştırıp,

$>glassfish/bin/asadmin start-domain domain1

tarayıcınıza şu adresi http://localhost:4848 girerseniz Glassfish yönetim konsoluna ulaşacaksınız.

JBoss Seam 2.2.1 kurulumu ve Proje oluşturma

JBoss Seam 2.2.x sürümünü buradan indirdikten sonra yapmanız gereken bu paketi istediğiniz bir klasör içine açmaktır.
Ardından aşağıdaki kod ile seam-gen’i çalıştırıp sorulara gereken cevapları vererek projenizi oluşturabilirsiniz. seam-gen’in bu sürümünde Glassfish desteği atomatik olarak gelmektedir. Yani oluşturacağınız proje Glassfish’e yüklenmek için gerekli ayarları barındırıyor olacak.

$>jboss-seam-2.2.1/seam setup
$>jboss-seam-2.2.1/seam create-project

seam-gen ile oluşturduğunuz proje Hem NetBeans hem de Eclipse ile açılıp üzerinde geliştirme yapılabilir durumdadır. Fakat çalışmaya hemen başlamadan önce IDE’lerimiz üzerinde bazı ayarlar yapmak durumundayız.

NetBeans ile Proje üzerinde çalışmak

NetBeans’in güncel sürümleri Glassfish v3 ile gelmektedir. Dolayısıyla ilk yapmamız gereken şey NetBeans’e yeni kurulumunu yaptığımız Glassfish v2’nin tanıtımını yapmak olacak. Bunun için “Services” tabından “Servers” nodunu seçip sağ fare menüsü ile “Add Server” seçeneği ile yeni sunucu tanım sihirbazını açıp Glassfish v2 seçeneğini seçtikten sonra, kurulum yaptığımız kalasörü seçmemiz yeterli olacaktır.

Projemizi NetBeans ile açmak için ise “Files|Open Project” seçeneğini seçip seam-gen ile projemizi oluşturduğumuz klasörü seçmek yeterli olacaktır.

seam-gen NetBeans için ant tabanlı “Free-form Project” oluşturduğu için hangi ant target’larını çalıştıracağımızı seçmemiz gerekiyor. Bunun için projenin üzerine gelip sağ fare menüsünden “Properties” ile proje ayarlarını açıp “Build and Run” seçeneğinden hangi işlevlerde hangi ant target’larının çalışacağını seçeceğiz. Projemizi Glassfish üzerine deploy edeceğimiz için “gf-” ile başlayan ant targetları bizim için gerekli…

Eclipse ile Proje üzerinde çalışmak

Eclipse kurulumuna bağlı olarak suncucu tanımları arasında Glassfish yoksa eğer, “Define New Server” dialoğunun içerisinden “Download editional server adapters” linkine tıklayarak Glassfish adapterini indirip, Çıkan sihirbaza kurlum yaptığımız yolları göstererek yeni sunucumuzu tanıtıyoruz.

Eclipse ile projemizi açmak için Eclipse Workspace olarak proje klasörümüzün bir üstünü vererek Eclipse’i başlatıyoruz. Ardından “File|Import” ile “Existing project into workspace” ile projemizi Eclipse’dahil ediyoruz.

seam-gen ile oluşturulan projenin varsayılan yükleme sunucusu JBoss AS olduğu için projemizin çalıştıracağı varsayılan ant hedeflerini değiştirmemiz gerekiyor. Bunun için projenin sağ fare menüsünden “Properties” seçeneğini seçiyor ardından “Builders” nodundan ant ile tanımlanmış olan builder’ı düzenliyoruz.

Projemizi Glassfish’e yükleyeceğimizden “gf-” ile başlayan ant targetlarını seçiyoruz.

Proje üzerinde diğer ayarlar

  • Öncelikle uygulama sunucusunu başlatmak için bir kaç seçeneğimiz var. Bunlardan birincisi seam-gen’in ürettiği ant hedeflerinden gf-start, gf-debug gibi seçenekleri kullanmak. Diğeri ise kullandığımız idelerin desteğini kullanmak olabilir. Projemizi yüklemek için ise gf-explode, gf-hotdeploy ant hedeflerini kullanabiliriz.
  • Bir başka önemli şey ise JPA provider’ı. Glassfish TopLink ile gelmektedir. Seam her hangi bir JPA provider’ı ile çalışabilmesine rağmen en iyi sonucu Hibernate ile alacaksınız. Dolayısıyla Hibernate’in glassfish’e yülenmesi gerekir. Burada kullanabileceğiniz çözümlerden birisi gf-deploy-hibernate ant target’ı olabilir. Hibernate ve gerekli diğer jar’lar Glassfish’in genel lib’ine yüklenecektir. Alternatif olarak uygulamanız içerisinde deployed-jar.list dosyasına şu satırları ekleyerek uygulamanız içerisinde yüklenmesini sağlayabilirsiniz :
    # Hibernate and deps
    hibernate-core.jar
    hibernate-commons-annotations.jar
    hibernate-annotations.jar
    hibernate-entitymanager.jar
    hibernate-validator.jar
    jboss-common-core.jar
    # 3rd party and supporting jars
    log4j.jar
    slf4j-api.jar
    slf4j-log4j12.jar
    javassist.jar
    dom4j.jar
    concurrent.jar
    cglib.jar
    asm.jar
    antlr.jar
    commons-logging.jar
    commons-collections.jar
  • Veri tabanı için gereken ayarlar daha önce “resources/glassfish-resources-dev.xml” ve “resources/glassfish-resources-prod.xml” dosyaları içerisinde yapılabilir. Yükleme sırasında bu dosya tanıttığınız veri tabanı bağlantıları kontrol edilcek ve eğer yoksa Glassfish’e tanıtılacaklar.Kullanacağınız JBDC jarlarını ise glassfish/lib klasörü içerisine koyanız gerekmektedir.
  • Son olarak uygulamanızın log4j kullanabilmesi için log4j.xml oluşturup bunu da classpath’e yerleştirmeniz gerekmektedir. Bunu yapmak için proje ağacınız da resources altında bir log4j.xml dosyası oluşturup ( örnek olarak seam/examples/jee5/booking/resources altındakini kullanabilirsiniz ) sonra da build.xml içinde war target’ına budosyası kopyalamak için gerekl satırı eklemeniz yeterli olacaktır.
    <copy todir="${war.dir}/WEB-INF/classes">
    ...
    <fileset dir="${basedir}/resources">
    ....
    <include name="log4j.xml" />