Archive for October, 2014

การ Config Datasource บน JBoss AS7/JBoss EAP 6.x

หลังจากมีโอกาสมาใช้งาน JBoss EAP 6.3 แล้วต้องการกำหนด Datasource สำหรับ MySQL เพื่อทดสอบการใช้งาน Hibernate ทำให้รู้ว่าขั้นตอนในการกำหนด Datasource นั้นแตกต่างจาก JBoss AS 5.x, 6.x พอสมควรเลยขอบันทึกไว้เป็นขั้นตอนดังนี้
1. ทำการ Config Library ก่อนดังต่อไปนี้

1.1 ทำการสร้าง module ขึ้นมาเพื่อ load JDBC Driver ก่อน โดยเข้าไปที่ [jboss-home]\modules
1.2 สร้าง folder com/mysql/main แล้วทำการ copy mysql-connector-java-.jar มาไว้ที่ path นี้
1.3 สร้างไฟล์module.xml โดยมีเนื้อหาดังนี้

			<?xml version="1.0" encoding="UTF-8"?>
			<module xmlns="urn:jboss:module:1.1" name="com.mysql">
				<resources>
					<resource-root path="mysql-connector-java-5.1.30-bin.jar"/>
				</resources>
				<dependencies>
					<module name="javax.api"/>
					<module name="javax.transaction.api"/>  
				</dependencies>
			</module>
		

ส่วนที่สำคัญคือ
name : คื่อส่วน path ตาม Folder ที่สร้างไว้ (ตัด main ออก) ตามตัวอย่างคือ com/mysql/main จะกำหนดเป็น “com.mysql”
resource-root : คือชื่ือ Jar File ที่เราเอามาวางไว้ภายใต้ path com/mysql/main
dependencies : Module library ที่เกี่ยวข้อง เพื่อให้ JBoss load ขึ้นมาด้วย
1.4 บันทึกไฟล์

2. ทำการ Config Datasource

2.1 ทำการแก้ไข [jboss-home]\standalone\configuration\standalone.xml เพื่อทำการเพิ่ม Driver และ Datasource (หาก เลือก profile ในการ deploy ที่ไม่ใช่ standalone.xml ให้แก้ไขตาม profile นั้นๆ)
2.2 ไปที่ section

		<subsystem xmlns="urn:jboss:domain:datasources:1.2">
            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
		

แล้วทำการเพิ่ม MySQL Driver และ Datasource เป็นดังนี้

        <subsystem xmlns="urn:jboss:domain:datasources:1.2">
            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <datasource jta="false" jndi-name="java:jboss/datasources/MySQLDS" pool-name="MySQLDS" enabled="false" use-ccm="false">
                    <connection-url>jdbc:mysql://localhost:3306/hibernate?characterEncoding=utf8</connection-url>
                    <driver-class>com.mysql.jdbc.Driver</driver-class>
                    <driver>mysql</driver>
                    <security>
                        <user-name>root</user-name>
                        <password>password</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                    <driver name="mysql" module="com.mysql">
                        <driver-class>com.mysql.jdbc.Driver</driver-class>
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>
		

2.3 ทำการ Stop/Start หรือ Restart JBoss Server ก็สามารถใช้งาน JNDI Datasource ที่สร้างได้แล้ว
หมายเหตุ : ชื่อ jndi-name ต้องขึ้นต้นด้วย java:/ หรือ java:jboss/ เท่านั้น

Read more