Jboss通过数据源连接Oracle
1. Jboss服务进程的Oracle数据源配置及部署
设Jboss的安装路径为$Jboss,首先在路径$Jbossserverdefaultlib路径下放置连接数据库所用的JDBC Driver:ojdbc14.jar,然后在路径$Jbossserverdefaultdeploy下,创建Oracle数据源文件oracle-ds.xml,该文件需指明:
ü jndi-name:数据源的jndi名称
ü connection-url:数据库连接串,参照所访问数据库的TNS配置
ü user-name:访问数据库的用户名
ü password:访问数据库的用户密码
ü driver-class、exception-sorter-class-name、metadata保留原样
文件内容如下:
OracleDS jdbc:oracle:thin:@127.0.0.1:1521:remorse oracle.jdbc.OracleDriver scott tiger org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter Oracle9i |
2. 应用引用Oracle数据源
应用引用数据源有两种方式,一种为直接进行JNDI名称查找,另一种使用资源引用方式,即应用使用某资源引用,而部署人员进行资源引用与JNDI所代表资源的映射。由于资源引用方式便于部署,故两种方式中推荐使用资源引用方式。设待部署应用$db_test,其部署路径为$Jbossserverdefaultdeploydb_test.war,在该路径下创建JSP文件index.jsp,文件内容如下:
/* direct lookup the JNDI configured in oracle-ds.xml */ InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:/OracleDS"); Connection conn = ds.getConnection(); --> /* Lookup the reference, The reference should be defined in web.xml and jboss-web.xml */ InitialContext ctx = new InitialContext(); Context envCtx = (Context) ctx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/TestDB"); Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL"); while ( rs.next() ) { out.println( rs.getString(1) + " out.println( "Oracle Connection Test }
conn.close(); Test Oracle Database |
3. 部署应用
在$Jbossserverdefaultdeploydb_test.warWEB-INF下创建两文件:jboss-web.xml、web.xml,若使用直接查找JNDI的话,则两文件无有效内容,具体如下:
web.xml文件:
jboss-web.xml文件:
PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"> |
若使用资源引用方式使用数据源,则具体如下:
web.xml文件:
DB Connection jdbc/TestDB javax.sql.DataSource Container |
jboss-web.xml文件:
PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"> jdbc/TestDB java:OracleDS |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/247757/viewspace-1006548/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/247757/viewspace-1006548/