Seam – Tomcat Entegrasyonu

Seam projenizi Tomcat ortamında koşturmak isterseniz aşağıdaki adımları izleyebilirsiniz.
Tomcat eclipse ortamında sunucu olarak tanıtılır.
Container üzerinde bir datasource tanımı yapılacağından jdbc driver tomcat/lib klasörü altına atılır. (Örneğin mysql-connector-java-5.1.7-bin.jar)


Seam ile bir war projesi oluşturulur. (Bunun için ilgili linki izleyebilirsiniz http://www.melihsakarya.com/2008/11/jboss-seam-gelistirme-ortami-kurulumu/)
Proje ismi olarak ben seamTomcat adini verdim doküman içerisindede bu ayarlar bu isim üzerinden yapılacak.

İlgili jar lar WEB-INF\lib altına eklenir. (Jar lar dokümanın sonunda yer almaktadır.)
Webcontent/META-INF altına context.xml aşağıdaki örnekteki gibi oluşturulmalı. Burada seamTomcat ismi ve veritabani ayarlarına dikkat edelim. Veritabanı ayarlarınızı kendinize göre değiştirebilirsiniz.

    <?xml version="1.0" encoding="UTF-8"?>
    <Context docBase="seamTomcat" path="/seamTomcat"
     reloadable="true">
     
     <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
      maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/seamTomcat"
      password="root"
      type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/test"
      username="root" />
     
    </Context>

src/main/META-INF altındaki persistence.xml aşağıdaki gibi düzenlenmeli

    <?xml version="1.0" encoding="UTF-8"?>
     <!– Persistence deployment descriptor for dev profile –>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
     version="1.0">
     
     <persistence-unit name="seamTomcat" transaction-type="RESOURCE_LOCAL">
          <provider>org.hibernate.ejb.HibernatePersistence</provider>
          <jta-data-source>java:comp/env/jdbc/deneme</jta-data-source>
          <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
             <property name="hibernate.hbm2ddl.auto" value="update"/>
             <property name="hibernate.show_sql" value="true"/>
             <property name="hibernate.format_sql" value="true"/>
             
          </properties>
       </persistence-unit>
     
    </persistence>

components.xml de jndi-pattern=”@jndiPattern@” kaldırılmalı.
Components.xml e asagidaki satir eklenmeli

    <transaction:entity-transaction entity-manager="#{entityManager}"/>

JBoss-web.xml silinmeli

Bu adımlardan sonra Tomcat üzerinde Seam in sorunsuz olarak çalışması gerekmektedir.

Jar listesi (Seam runtime altındaki lib klasöründen alınabilir)

antlr.jar
asm.jar
cglib.jar
commons-beanutils.jar
common-collections.jar
commons-digester.jar
commons-lang.jar
commons-logging.jar
dom4j.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate.jar
hibernate-validator.jar
javassist.jar
jboss-archive-browsing.jar
jboss-el.jar
jboss-seam-debug.jar
jboss-seam.jar
jboss-seam-ui.jar
jsf-api.jar
jsf-facelets.jar
jsf-impl.jar
jstl.jar
jta.jar
lucene-core.jar
persistence-api.jar
richfaces-api.jar
richfaces-impl.jar
richfaces-ui.jar
\test\hibernate-all.jar

Sep 28th, 2010
  1. Sep 28th, 2010 at 21:41 | #1

    Selam Melih,

    Tomcat üzerinde Seam’in web katmanı çalışacaktır ama uygulama içerisinde EJB kullanımı,transaction yönetimi yada connection pooling vs ‘yi JBoss’daki gibi sunucuya bırakma şansı olmayacak. Tomcat nihayetinde basit bir web container. Bu farklı vurgulamakta fayda var. Sonra sıkıntı çıkmasın :)

  2. Sep 28th, 2010 at 21:47 | #2

    İbrahim Hocam,
    EJB kullanamayiz evet ama neden kullanacagimizida sorgulamak lazim :) Transaction yönetimi seam tarafinda yapiliyor, connectioun pooling te bu örneğe göre container a birakilmis durumda ;)

  3. Sep 28th, 2010 at 23:26 | #3

    Bana kalsa ben de EJB kullanmam ama kullanmaya çalışanlar olabilir diye yazdım aslında

    Öğrenmek adına soruyorum:

    SEAM birden fazla datasource üzerinde transaction yönetimi yapabilir mi? (Yaparsa süper.)

    Pool yönetimini Resource auth=”Container” ifadesi ile mi container’a bırakmış oluyoruz?

    Kolay gelsin

  4. Zülfikar Karakaya
    Sep 30th, 2010 at 07:57 | #4

    ..
    “components.xml de jndi-pattern=”@jndiPattern@” kaldırılmalı.
    Components.xml e asagidaki satir eklenmeli”
    ..

    eklenmesi gereken satırı eklemen gerek sanırım Melih hocam :)

  5. Sep 30th, 2010 at 10:52 | #5

    Ibrahim hocam tabiki yapar :) Container dedigimiz zaman container uzerinde tanimli bir datasource yapmis oluyoruz. Zulfikar hocam duzenlemeyi yaptim uyari icin tesekkurler ;)

  6. YusuF Coşkun
    Oct 6th, 2010 at 20:42 | #6

    Hocam Şu Jar’Ları Bir rar dosyası olarak yayınlaya bilsek çok güzel olurdu =))

  7. Oct 6th, 2010 at 21:49 | #7

    seam klasoru altindaki lib klasoru altinda bulabilirsin.

  8. Nov 30th, 2010 at 13:49 | #8

    JBoss Seam’i çok fazla acı çekmeden Netbenas’de Glassfish ile kullanmanın bir yolu var mıdır?

  9. Rahman Yazgan
    Jan 2nd, 2011 at 11:51 | #9

    Eline sağlık Melih hocam, makbule geçti.

  10. Orhan Yılmaz
    Mar 8th, 2011 at 21:56 | #10

    jboss microcontainer release olana kadar. embedded-jboss-beta3.SP10 + hibernate 3.2 ile ejb3 çalıştırılabilir. Fakat ear olarak değil war olarak deploy etmek lazım. Testler için jndi da ayarlanabilir ama denemedim çok uğraştıracak gibi duruyor.

  11. Mar 12th, 2011 at 14:44 | #11

    tomcat’e jboss microcontainer ekleyerek sanirim ejb katmanini da kullanabilir hale getirebilir.z

  12. Apr 29th, 2011 at 22:27 | #12

    anlatım için teşekkürler

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>