在JBoss EAP 建立JNDI DataSouce
Auther: Marvin Create date 2016/06/12

由於最近在工作上,有需要協助他人建立JBoss EAP JNDI DataSource的事情發生,因此就想想來寫寫這主題好了。JBoss EAP也跟其他廠商的AP Server有Console介面可以操作建立Data Source,但是功能卻不太成熟,如果使用Console建立的話則會很難建立成功,所以可以查查Google看到的範例,大多是以直接修改設定檔的方式來建立。接下來將以MySql的XA DataSorce範例告訴各位建立的步驟

1.複製JDBC Driver與建立模組資料夾,JBoss EAP對引用外部的jar檔是以模組的方式進行,所以我們必須要將檔案複製到安裝目錄的模組資料夾內,如C:\JBoss安裝目錄\modules\system\layers\base建立com\mysql\jdbc\main階層的資料夾如下圖

2.編寫模組設定檔,建立module.xml檔案,檔案內容如下範例,注意name=”com.mysql.jdbc”這段內容,要與你放置於模組資料夾的位置相同

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.3" name="com.mysql.jdbc">

    <resources>

        <resource-root path="mysql-connector-java-5.1.38-bin.jar"/>

    </resources>

    <dependencies>

        <module name="javax.api"/>

        <module name="javax.transaction.api"/>

        <module name="javax.servlet.api" optional="true"/>

    </dependencies>

</module>

 

3.修改standalone.xml設定檔的datasources子系統,如下範例

<subsystem xmlns="urn:jboss:domain:datasources:4.0">
    <datasources>
        <!-- 以下是XA DataSource範例 -->    
        <xa-datasource jndi-name="java:/輸入JNDI名稱" pool-name="輸入Pool名稱" enabled="true" use-ccm="true">

            <xa-datasource-property name="ServerName">
                輸入主機名稱
            </xa-datasource-property>

            <xa-datasource-property name="DatabaseName">
                輸入資料庫名稱
            </xa-datasource-property>

            <xa-datasource-property name="Port">
                輸入使用連接port號
            </xa-datasource-property>

            <!-- driver的輸入要與最後面的driver名稱標記相同 -->

            <driver>mysql</driver>
            <security>
                <user-name>輸入帳號</user-name>
                <password>輸入密碼</password>
            </security>

            <validation>

                <valid-connection-checker class-name = "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                <background-validation>true</background-validation>
                <exception-sorter class-name = "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter" />

            </validation>

        </xa-datasource>

        <drivers>
            <!-- 此部分則是輸入第一、二步驟建立的模組名稱與JDBC Class Name -->
            <driver name="mysql" module="com.mysql.jdbc">
                <xa-datasource-class> com.mysql.jdbc.jdbc2.optional.MysqlXADataSource </xa-datasource-class>

            </driver>
        </drivers>

    </datasources>

</subsystem>

 

4.之後重新啟動server便可以看到JNDI DataSource已經設定完畢的訊息