当我们在开发数据库应用的时候,一般我们可以引入?数据源,数据源可以减少数据库连接对象的的创建对象,我们知道:数据库连接对象的创建是比较消耗性能的,数据源通过减少数据库对象的创建数量来提升系统的运行性能。
在JBoss中,我们如何创建数据源呢?
首先,可以在JBoss的文档中寻找到数据源的配置模板,这个配置模板在docs/examples/jca目录下,在这目录下可以看到有各种数据库的配置模板,找到mysql的配置模板,mysql-ds.xml
打开,编辑:
<?xml version="1.0" encoding="UTF-8"?> <!-- $Id: mysql-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ --> <!-- Datasource config for MySQL using 3.0.9 available from: http://www.mysql.com/downloads/api-jdbc-stable.html --> <datasources> <local-tx-datasource> <jndi-name>itcastDS</jndi-name> <!-- 以后就可以通过这个JNDI名称就可以找到数据源 --> <connection-url>jdbc:mysql://localhost:3306/testdb</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>456</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <!-- should only be used on drivers after 3.22.1 with "ping" support <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name> --> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> --> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
大家要注意的是:必属遵守 文件名的后缀必须要有-ds结尾,也就是说-ds结尾的文件会被JBoss认为是数据源配置文件,然后对它进行发布。
数据源配置好之后,就可以对它进行发布。因为数据源里面用到了mysql的驱动类,所以在部署前必须要把mysql的驱动jar文件拷贝进JBoss中,就是拷贝进%JBOSS_HOME%/server/default/lib/下,然后重启JBoss。
然后把数据源发布到JBoss中,数据源的发布和EJB的发布是一样的,只需要把数据源文件mysql-ds.xml拷贝进%JBOSS_HOME%/server/default/deploy/目录下,就可以完成数据源的发布了。
回到控制台,就可以看到数据源发布成功了。还可以看到数据源已经被绑定到了'java:itcastDs'这个JNDI名称下了。 itcastDS这个名称是之前在数据源设置里设置的,'java:'这个是它所在的命名空间。这里要注意,在'java:'这个命名空间里面,JNDI所绑定的资源,它只能被JBoss应用服务器内部的应用访问,外部应用是不能访问'java:'这个命名空间底下的资源的。
当数据源发布成功之后,我们就可以进入JBoss的管理控制台,http://localhost:8080/jmx-console/, 找到jboss.jca这个栏目,会找到很多name=itcastDS.service=....的东西,当这个数据源在jboss.jca这个栏目列出来的时候,就证明我们的发布是成功的。
这里有个连接是比较有用的,就是查看连接池里面的一些连接属性name=itcastDS.service=ManagedConnectionPool,点进去可以看到一些数据源里的连接属性,其中有几个属性我们是比较关注的:最大的可用连接数量MaxSize,默认是20条;然后是目前正在使用的连接的统计InUseConnectionCount;然后是最小的连接数量MinSize,还有连接的超时时间BlockingTimeoutMillis,也就是说当没有可用的连接的时候,后面的连接要等待多长时间,然后就超时。默认是30秒。
我们可以在数据源的配置文件里面,通过这两个元素来配置最小的连接数和最大的可用连接数
<min-pool-size>3</min-pool-size> <max-pool-size>100</max-pool-size>
这样就可以永久性的设置数据源的参数了。
因为数据源可以动态的发布,所以一旦我们修改完了并保存之后,JBoss就可以对它进行布署了。一布署完后,在后台界面就可以查看得到。