J2EE应用中与Oracle数据库的连接 |
作者:佚名 发布时间:2005-04-02 来源:不详
|
在J2EE应用程序开发中 里我主要谈谈在本地应用程 ,在iPlanet Application 数据库连接池的配置以及应
|
,应用程序与数据库连接的建立 序中通过OCI方式、thin方式和J Server 6.5和Sun Java System 用中如何从连接池中获得连接。
|
是我们经常遇到的问题之一。在这 dbcOdbc桥方式连接Oracle数据库 Application Server 7中对Oracle
|
通过JDBC获得Oracle数 OCI方式依赖于本地的动态 而thin方式为纯java的数据 种方式一般不太被采用。
|
据库连接,有三种方式:OCI方 链接库,如果在本地安装了Orac 库连接方式;JdbcOdbc桥方式依
|
式、thin方式和JdbcOdbc桥方式。 le数据库客户端可以采用该方式; 赖于本地ODBC数据库源的配置,这
|
先在本地安装Oracle客 dbc/lib/classes12.zip文 。
|
户端,安装完之后,在安装的路 件,我们在环境变量classpath
|
径中可以找到…/j 中设置classes12.zip所在的路径
|
然后通过以下的数据库连接类,在本地通过OCI方式获得Oracle数据库连接。 |
import oracle.jdbc.driver.*; |
public class DbConnection |
final static String sDBDriver =
|
"oracle.jdbc.driver.OracleDriver";
|
final static String sConnStr = "
|
jdbc:oracle:oci8:sr/sr@ora199";
|
public java.sql.Conn
|
ection connectDbByOci()
|
java.sql.Connection conn=null; |
Class.forName(sDBDriver); |
conn = DriverManager.getConnecti
|
on(sConnStr);
|
System.out.println("
|
ERROR:"+e.getMessage());
|
在连接字符串 "jdbc:o 和口令,"ora199"为数据库
|
racle:oci8:sr/sr@ora199" 中 服务名。
|
,"sr/sr"为Oracle用户的用户名
|
先到Oracle技术网(ht java/sqlj_jdbc/index.htm 设置在环境变量classpath
|
tp://otn.oracle.com/global/c l)下载Oracle JDBC Drivers, 。
|
n/software/tech/ 同样地将下载后的zip文件的路径
|
然后通过以下的数据库连接类,在本地通过thin方式获得Oracle数据库连接。 |
import oracle.jdbc.driver.*; |
public class DbConnection |
private String sConnStr = ""; |
sConnStr = "jdbc:oracle:thin:@10
|
.1.4.199:1521:ora199";
|
public DbConnection(String ip,St
|
ring serviceName)
|
sConnStr = "jdbc:ora
|
cle:thin:@"+ip+":1521:"+serv
|
iceName;
|
* 通过thin方式获得Oracle数据库的连接. |
public java.sql.Conn
|
ection connectDbByThin()
|
java.sql.Connection conn=null; |
Class.forName(sDBDriver); |
conn = DriverManager.getConnecti
|
on(sConnStr,"sr","sr");
|
System.out.println("
|
ERROR:"+e.getMessage());
|
* 通过thin方式获得Oracle数据库的连接. |
public java.sql.Conn
|
ection connectByJdbc(String
|
userId,String password)
|
java.sql.Connection conn=null; |
Class.forName(sDBDriver); |
conn = DriverManager.getConnecti
|
on(sConnStr,userId,password);
|
System.out.println("
|
ERROR:"+e.getMessage());
|
这种方式运用起来比较灵活,简单, "jdbc:oracle:thin:@10.1.4.199:1521:o
|
具有较强的移植性和适用性。只要注意连接字符串 ra199"中具体参数的设置即可。
|
先通过管理工具中的数 接类,在本地通过JdbcOdbc
|
据源来添加本地对Oracle数据库 桥方式获得Oracle数据库连接。
|
的连接,然后通过以下的数据库连
|
import oracle.jdbc.driver.*; |
* 通过JdbcOdbc桥方式获得Oracle数据库连接 |
public class DbConnection |
public java.sql.Conn
|
ection connectDbByJdbcOdbcBr
|
idge()
|
java.sql.Connection conn=null; |
Class.forName("sun.jdbc.odbc.Jdb
|
cOdbcDriver");
|
con=DriverManager.ge
|
tConnection("jdbc:odbc:ora19
|
9","sr","sr");
|
System.out.println("ERROR:"+e.ge
|
tMessage());
|
在getConnection方法中第一个参数" 的数据源名称,第二个参数和第三个参数
|
jdbc:odbc:ora199" 中的"ora199"为本地ODBC数据源 分别为Oracle的用户名和口令。
|
这部分主要讲述在iPla Server 7中Oracle数据库连
|
net Application Server 6.5和 接池的配置,以及在应用中如何
|
Sun Java System Application 通过连接池获得数据库的连接。
|
1、iPlanet Application Server 6.5连接池的配置 |
先打开iPlanet Applic "External JDBC Drivers" "ora-type4"的JDBC Driver
|
ation Server 6.5的管理控制台 选项后,点击"Add…"按钮,在 。
|
,选中"database"面板,再选择 弹出的对话框中,添加一个名为
|
Driver Classpath:该参数填写clas
|
ses12.zip文件的物理路径。
|
然后在"External JDBC DataSources 称为"credit2"的数据源。
|
"中选择"Add…",在弹出的对话框中添加一个JNDI名
|
DriverType:选择刚添加好的"ora-type4"; |
Datasource:ora199,为Oracle数据库服务名; |
Connection Pool Para 些设置。
|
meters:图中显示的是缺省设置
|
,可以根据自己环境情况来更改这
|
保存完设置后,在"Dat 选择"Vendor Specific Pro
|
aSource Selection Box"中,选 perties"按钮。在对话中添加一
|
择刚添加的"credit2"数据源,再 个URL属性。
|
至此,iPlanet Applic 。
|
ation Server 6.5中的数据库连
|
接池配置完毕,重起服务使之生效
|
2、Sun Java System A
|
pplication Server 7连接池的
|
配置
|
在配置之前将classes12.zip文件置于…/server1/lib目录下。通过浏览器的4848端口打开Sun Java System Application Server 7的管理界面,选择"server1"->"JDBC"-> "Connection Pools"下的"New…" |
添加一个名称为"MyCon
|
nectionPool"的Oracle数据库连
|
接池。"Next"下一步。
|
在"General"中填写"Datasource Classname"。 |
在"Properties"中将不需要的属性删除,同时添加"URL"属性。 |
"dataSourceName"中填写Oracle数据库服务名。 |
以下连接池的缺省设置,可以根据自己环境的情况作相应的调整。 |
下一步为"MyConnectionPool"连接池创建一个JNDI,以便应用程序能够通过该名称获得连接池中的连接。 "server1"->"JDBC"-> "JDBC Resources"下的"New…" |
至此,Sun Java System Applicatio 之生效。
|
n Server7中的数据库连接池配置完毕,重起服务使
|
以上在iPlanet Applic 置的连接池都可以通过以下
|
ation Server 6.5和Sun Java S 的数据库连接类,从连接池中获
|
ystem Application Server7中配 得Oracle数据库连接。
|
import oracle.jdbc.driver.*; |
public class DbConnection |
public java.sql.Conn
|
ection connectDbByConnection
|
Pool()
|
java.sql.Connection conn=null; |
Context ctx = new InitialContext(); |
DataSource ds = (DataSource)ctx.
|
lookup("jdbc/credit2");
|
System.out.println("
|
ERROR:"+e.getMessage());
|
对数据库的连接统一进行配置、管理 同时对应用中没有关闭或其他原因造成没
|
、监控,以及对数据库连接池的参数进行优化调整, 有关闭的数据库连接由连接池统一进行管理。
|
便于应用的移植和后端 而具体连接的是哪一台机器
|
数据库的切换,因为在应用中通 上的数据库与应用无关。
|
过统一的JNDI获得数据库的连接,
|
|
|
|
|
|