在AS7当中,引入了新的module的概念。因此,如果需要在AS7中添加对PostgreSQL的支持,需要做的是加入一个新的module。查看一下AS7的目录结构:
weli@power:~/projs/jboss-as-7.1.1.Final$ ls
LICENSE.txt bundles jboss-modules.jar
README.txt copyright.txt modules
appclient docs standalone
bin domain welcome-content
我们进到modules目录,创建postgres的目录:
mkdir -p org/postgresql/main
进入到创建好的目录,从PostgreSQL的网站下载所需的jdbc库,我下载的是postgresql-9.1-903.jdbc4.jar:
weli@power:~/projs/jboss-as-7.1.1.Final/modules/org/postgresql/main$ ls
postgresql-9.1-903.jdbc4.jar
然后我们要制作module.xml,内容如下:
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<!-- Load with jboss-cli command:
/subsystem=datasources/jdbc-driver=postgresql-driver:add(driver-name=postgresql-driver, driver-class-name=org.postgresql.Driver, driver-module-name=org.postgresql)
-->
<resources>
<resource-root path="postgresql-9.1-903.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
这样,这个module就算制作完成了:
weli@power:~/projs/jboss-as-7.1.1.Final/modules/org/postgresql/main$ ls
module.xml
postgresql-9.1-903.jdbc4.jar
接下来要修改AS7的配置文件,如果用standalone模式,那么就修改standalone/configuration/standalone.xml:
<datasources>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="postgresql-driver" module="org.postgresql">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
</drivers>
</datasources>
AS7自带一个H2的module,下面的postgresql-driver是我们添加的。这样,就完成了对postgres模块的导入。其实,我们不必手工编辑standalone.xml来添加模块。可以在AS7启动后,通过命令终端来添加:
/subsystem=datasources/jdbc-driver=postgresql-driver:add(driver-name=postgresql-driver, driver-class-name=org.postgresql.Driver, driver-module-name=org.postgresql)
如果我们要使用这个模块,可以配置datasource:
<datasource jndi-name="java:jboss/datasources/SOME_DB" pool-name="SOME_DB" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql:SOME_DB</connection-url>
<driver>postgresql-driver</driver>
<security>
<user-name>XXX</user-name>
<password>YYY</password>
</security>
</datasource>