Home > Ngoprek, NyanyianKode, seam > JBoss-seam double datasource

JBoss-seam double datasource

Suatu hari anak muda mendapat tugas membuat sopwer yang menggunakan dua database. Yang satu menggunakan MySQL dan satu lagi Oracle. Sang anak muda sudah terbiasa menggunakan seam-framework dan akan menggunakan seam juga untuk membuat program yang ditugaskan.

Datasource yang pertama digunakan untuk main data transaction (smsgw), sedangkan datasource yang kedua digunakan sekedar baca (mbmcDatasource). Berikut adalah langkah2 yang dilakukan oleh anak muda dalam menggunakan dua datasource di seam-projectnya:

  1. Definisikan datasource di *-ds.xml
    <local-tx-datasource>
    <jndi-name>smsgwDatasource</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/smsgw</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>smsgw</user-name>
    <password>rahasia</password>
    </local-tx-datasource>

    <no-tx-datasource>
    <jndi-name>mbmcDatasource</jndi-name>
    <connection-url>jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ORACLESID</connection-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <user-name>root</user-name>
    <password>rahasia</password>
    </no-tx-datasource>

  2. Definisikan entity manager di component.xml
    <persistence:managed-persistence-context name=”entityManager”
    auto-create=”true”
    entity-manager-factory=”#{smsgwEntityManagerFactory}”/>
    <persistence:entity-manager-factory name=”smsgwEntityManagerFactory”
    persistence-unit-name=”smsgw”/>
    <persistence:managed-persistence-context name=”mbmcEntityManager”
    auto-create=”true”
    entity-manager-factory=”#{mbmcEntityManagerFactory}”/>
    <persistence:entity-manager-factory name=”mbmcEntityManagerFactory”
    persistence-unit-name=”mbmc”/>
  3. Definisikan jndi datasource nya di persistence-*.xml
    <persistence-unit name=”smsgw” transaction-type=”JTA”>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:/smsgwDatasource</jta-data-source>
    <properties>
    <property name=”hibernate.dialect” value=”org.hibernate.dialect.MySQLDialect”/>
    <!– property name=”hibernate.hbm2ddl.auto” value=”update”/–>
    <property name=”hibernate.show_sql” value=”true”/>
    <property name=”hibernate.format_sql” value=”true”/>
    <property name=”hibernate.transaction.manager_lookup_class” value=”org.hibernate.transaction.JBossTransactionManagerLookup”/>
    <property name=”hibernate.connection.release_mode” value=”after_transaction”/>
    </properties>
    </persistence-unit>

    <persistence-unit name=”mbmc” transaction-type=”RESOURCE_LOCAL”>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java:/mbmcDatasource</non-jta-data-source>
    <properties>
    <property name=”hibernate.dialect” value=”org.hibernate.dialect.Oracle10gDialect”/>
    <property name=”hibernate.show_sql” value=”true”/>
    <property name=”hibernate.format_sql” value=”true”/>
    <property name=”jboss.entity.manager.factory.jndi.name” value=”java:/mbmcEntityManagerFactory”/>
    <property name=”hibernate.connection.release_mode” value=”after_transaction”/>
    </properties>
    </persistence-unit>
    4. Untuk menggunakan masing-masing entityManager, sang anak muda cukup menggunakan anotasi lookup @In yang dimiliki oleh seamframework.
    —SomeWhere.java–
    @In
    private EntityManager entityManager;
    @In
    private EntityManager mbmcEntityManager;

Seingat anak muda itulah step2 yang dilakukannya. Semoga bermanfaat. Salam.

Advertisements
Categories: Ngoprek, NyanyianKode, seam
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: