在试了官方文档说的两个数据源配置方式没能成功之后,用了一种取巧的方式,分享出来希望能帮大家解决类似问题。
首先,将mysql的jdbc数据库驱动复制到<JBOSS_HOME>\standalone\deployments这个目录下,注意,驱动包版本要在5.1.17之上,我用的是mysql-connector-java-5.1.30-bin.jar,在mysql官网可以下到这个最新版本。
接下来,启动JBOSS应用服务器,启动完成后,这个jdbc驱动包成功被部署后,deplayments文件夹下会有名为mysql-connector-java-5.1.30-bin.jar.deployed的文件,表示这个jar包部署成功。
下一步,打开JBOSS管理控制台http://localhost:9990/console/App.html,使用用户名和密码登录,如果还未创建用户,可以运行bin目录下的add-user.bat文件添加用户,登录完成后,进行下一步,在控制台图形界面上添加数据源,选择右上角的Profile,选择左边tab导航的Datasources,点击Add按钮添加数据源,根据提示进行各项参数的填写,包括connectionurl,user,password等,在填写参数过程中有一项是要选择数据源驱动的,选择我们刚添加的jdbc驱动,这个jar包部署后,产生了两个mysql驱动,我选择的是mysql-connector-java-5.1.30-bin.jarcom.mysql.jdbc.Driver_5_1。
完成数据源的配置后,数据源就配置好了,在<JBOSS_HOME>\standalone\configuration\standalone.xml生成了如下配置代码:
<datasource jta="true" jndi-name="java:jboss/datasources/myds" pool-name="myds" enabled="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost:3306/ejb3</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql-connector-java-5.1.30-bin.jarcom.mysql.jdbc.Driver_5_1</driver>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
</pool>
<security>
<user-name>root</user-name>
<password>yourpassword</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<prepared-statement-cache-size>10</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 该文件指定实体Bean使用的数据源及EntityManager的默认行为 -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="news">
<jta-data-source>java:jboss/datasources/myds</jta-data-source>
<properties>
<property name="hibernate.hbm2dll.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.jdbc.batch_size" value="10"/>
<property name="hibernate.jdbc.fetch_size" value="18"/>
</properties>
</persistence-unit>
</persistence>
<jta-data-source>java:jboss/datasources/myds</jta-data-source>
接下来我们就可以在SessionBean中,注入EntityManager了,如下:
@PersistenceContext(unitName="news")
EntityManager em;
最后,我们创建客户端项目远程访问Session,就可以访问数据库了,注意:客户端项目要添加Hibernate相关jar包和数据库驱动包。
至此,使用JBOSS管理数据源,成功注入EntityManager之后,就可以和数据库交互了!