轉載地址:http://blog.csdn.net/kylinsoong/article/details/12340101
內容概要
JBoss 系列五主要目的是演示如何在JBoss 7/WildFly中配置使用Oracle數據庫,主要分兩大部分Oracle數據庫相關的配置,一個使用Oracle數據庫的HelloWorld小程序。如下爲一簡單示意圖:
Hello World App部署於JBoss上,Hello World App通過JPA/Hibernate操作數據庫,數據庫連接是通過JCA/Datasource維護。
我們需要下載,編譯生成Hello World App,具體根據系列一中相關步驟,下載,編譯:
- git clone [email protected]:kylinsoong/csdn.git
- cd csdn/5
- mvn clean install
git clone [email protected]:kylinsoong/csdn.git
cd csdn/5
mvn clean install
如上執行完成會生成jpa-helloworld.war,位於target目錄下,我們需要將它部署到JBoss。
Oracle數據庫相關的配置
本部分我們分三塊:JBoss 端配置,Oracle數據庫端的配置,應用端配置
JBoss 端配置
1. 添加Oracle數據庫驅動模塊到JBoss
在JBOSS_HOME/modules/目錄下創建com/oracle/main目錄,將Oracle驅動jari(ojdbc6.jar)拷貝到此目錄下,並同在此目錄下創建module.xml文件,添加內容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <module xmlns="urn:jboss:module:1.1" name="com.oracle">
- <resources>
- <resource-root path="ojdbc6.jar"/>
- </resources>
- <dependencies>
- <module name="javax.api"/>
- <module name="javax.transaction.api"/>
- </dependencies>
- </module>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
2 添加驅動配置到JBoss服務器配置文件
編輯JBOSS_HOME/standalone/configuration/standalone.xml文件,在<subsystem xmlns="urn:jboss:domain:datasources處datasources,drivers中添加如下內容:
- <driver name="oracle" module="com.oracle">
- <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
- </driver>
<driver name="oracle" module="com.oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
Oracle數據庫端的配置
使用DBA用戶連接到Oracle數據庫控制檯,創建demo_user/soong,並分配相應的權限,如下:
- sqlplus / as sysdba
- create tablespace TESTSPACE datafile '/oracle/oradata/TESTSPACE.DBF' size 100M
- create user demo_user identified by soong default tablespace TESTSPACE;
- grant connect,resource,dba to demo_user;
sqlplus / as sysdba
create tablespace TESTSPACE datafile '/oracle/oradata/TESTSPACE.DBF' size 100M
create user demo_user identified by soong default tablespace TESTSPACE;
grant connect,resource,dba to demo_user;
應用端配置
1. 配置datasource
編輯csdn/5/src/main/resources/JPADemo-ds.xml,修改datasource內容如下所示:
- <datasource jndi-name="java:jboss/datasources/JPADemoDS" pool-name="JPADemoPool">
- <connection-url>jdbc:oracle:thin:@10.66.192.144:1521:JBOSS</connection-url>
- <driver>oracle</driver>
- <security>
- <user-name>demo_user</user-name>
- <password>soong</password>
- </security>
- </datasource>
<datasource jndi-name="java:jboss/datasources/JPADemoDS" pool-name="JPADemoPool">
<connection-url>jdbc:oracle:thin:@10.66.192.144:1521:JBOSS</connection-url>
<driver>oracle</driver>
<security>
<user-name>demo_user</user-name>
<password>soong</password>
</security>
</datasource>
注意:我們也可以將此配置添加到JBOSS_HOME/standalone/configuration/standalone.xml,具體添加到<subsystem xmlns="urn:jboss:domain:datasources:1.1">的<datasources>屬性中。
2. 配置persistence-unit
編輯csdn/5/src/main/resources/META-INF/persistence.xml,添加persistence-unit內容如下所示:
- <persistence-unit name="primary">
- <jta-data-source>java:jboss/datasources/JPADemoDS</jta-data-source>
- <shared-cache-mode>ALL</shared-cache-mode>
- <properties>
- <property name="hibernate.hbm2ddl.auto" value="create-drop" />
- <property name="hibernate.show_sql" value="true" />
- <property name="hibernate.cache.use_second_level_cache" value="true" />
- <property name="hibernate.cache.use_query_cache" value="true" />
- </properties>
- </persistence-unit>
<persistence-unit name="primary">
<jta-data-source>java:jboss/datasources/JPADemoDS</jta-data-source>
<shared-cache-mode>ALL</shared-cache-mode>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
</properties>
</persistence-unit>
運行HelloWorld程序
1. 部署jpa-helloworld.war到JBoss(參照使用4種方式部署應用到JBoss7/WildFly)。
2. 啓動JBoss
- [kylin@localhost bin]$ ./standalone.sh
[kylin@localhost bin]$ ./standalone.sh
3. 使用http://localhost:8080/jpa-helloworld/訪問,會有如下界面
點擊Submit會執行數據庫查詢。
點擊Add a new user會執行插入數據庫操作。
點擊List All Users會列出數據庫中所有用戶。
4. 結果分析
依次執行上述操作,JBoss後臺日誌會有如下SQL語句:
- 12:01:14,482 INFO [stdout] (http-/127.0.0.1:8080-1) Hibernate: select user0_.id as id0_, user0_.firstName as firstName0_, user0_.lastName as lastName0_, user0_.username as username0_ from USERS user0_ where user0_.username=? limit ?
- 12:01:31,284 INFO [stdout] (http-/127.0.0.1:8080-1) Hibernate: call next value for hibernate_sequence
- 12:01:31,295 INFO [stdout] (http-/127.0.0.1:8080-1) Hibernate: insert into USERS (firstName, lastName, username, id) values (?, ?, ?, ?)
- 12:01:45,775 INFO [stdout] (http-/127.0.0.1:8080-1) Hibernate: select user0_.id as id0_, user0_.firstName as firstName0_, user0_.lastName as lastName0_, user0_.username as username0_ from USERS user0_