帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
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数据库连接

  通过JDBC获得Oracle数
OCI方式依赖于本地的动态
而thin方式为纯java的数据
种方式一般不太被采用。
据库连接,有三种方式:OCI方
链接库,如果在本地安装了Orac
库连接方式;JdbcOdbc桥方式依

式、thin方式和JdbcOdbc桥方式。
le数据库客户端可以采用该方式;
赖于本地ODBC数据库源的配置,这


  1、OCI方式                                                                

  先在本地安装Oracle客
dbc/lib/classes12.zip文

户端,安装完之后,在安装的路
件,我们在环境变量classpath

径中可以找到…/j
中设置classes12.zip所在的路径


  然后通过以下的数据库连接类,在本地通过OCI方式获得Oracle数据库连接。  

  /**                                                                        
  * 在本地获得数据库连接                                                      
  */                                                                          

  package com.j2ee.db;                                      

  import java.util.*;                                        
  import java.sql.*;                                          
  import javax.sql.*;                                        
  import java.io.*;                                            
  import oracle.jdbc.driver.*;                      
  import javax.naming.*;                                  

  /**                                                                        
  * 通过OCI方式获得Oracle数据库连接                                  
  */                                                                          
  public class DbConnection                            
  {                                                                            
  final static String sDBDriver =
"oracle.jdbc.driver.OracleDriver";
  final static String sConnStr = "
jdbc:oracle:oci8:sr/sr@ora199";

  /**                                                                        
  *                                                                            
  */                                                                          
  public DbConnection()                                    
  {                                                                            
  }                                                                            

  /**                                                                        
  * 获得Oracle数据库连接                                                
  */                                                                          

  public java.sql.Conn
ection connectDbByOci()
  {                                                                            
  java.sql.Connection conn=null;                  
  try                                                                        
  {                                                                            
  Class.forName(sDBDriver);                            
  conn = DriverManager.getConnecti
on(sConnStr);
  }                                                                            
  catch (Exception e)                                        
  {                                                                            

  System.out.println("
ERROR:"+e.getMessage());
  }                                                                            
  return conn;                                                      
  }                                                                            
  }                                                                            

  在连接字符串 "jdbc:o
和口令,"ora199"为数据库
racle:oci8:sr/sr@ora199" 中
服务名。
,"sr/sr"为Oracle用户的用户名


  2、thin方式                                                              

  先到Oracle技术网(ht
java/sqlj_jdbc/index.htm
设置在环境变量classpath
tp://otn.oracle.com/global/c
l)下载Oracle JDBC Drivers,

n/software/tech/
同样地将下载后的zip文件的路径


  然后通过以下的数据库连接类,在本地通过thin方式获得Oracle数据库连接。

  /**                                                                        
  * 在本地获得数据库连接                                                      
  */                                                                          

  package com.j2ee.db;                                      

  import java.util.*;                                        
  import java.sql.*;                                          
  import javax.sql.*;                                        
  import java.io.*;                                            
  import oracle.jdbc.driver.*;                      
  import javax.naming.*;                                  

  /**                                                                        
  * 通过thin方式获得Oracle数据库连接                                
  */                                                                          
  public class DbConnection                            
  {                                                                            
  private String sConnStr = "";                    

  /**                                                                        
  * 缺省构造器                                                                
  */                                                                          
  public DbConnection()                                    
  {                                                                            
  sConnStr = "jdbc:oracle:thin:@10
.1.4.199:1521:ora199";
  }                                                                            

  /**                                                                        
  * @param ip,serviceName                                
  */                                                                          
  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;                  
  try                                                                        
  {                                                                            
  Class.forName(sDBDriver);                            
  conn = DriverManager.getConnecti
on(sConnStr,"sr","sr");
  }                                                                            
  catch (Exception e)                                        
  {                                                                            

  System.out.println("
ERROR:"+e.getMessage());
  }                                                                            
  return conn;                                                      
  }                                                                            

  /**                                                                        
  * 通过thin方式获得Oracle数据库的连接.                            
  * @param userId,password                              
  */                                                                          
  public java.sql.Conn
ection connectByJdbc(String
userId,String password)
  {                                                                            
  java.sql.Connection conn=null;                  
  try                                                                        
  {                                                                            
  Class.forName(sDBDriver);                            
  conn = DriverManager.getConnecti
on(sConnStr,userId,password);
  }                                                                            
  catch (Exception e)                                        
  {                                                                            

  System.out.println("
ERROR:"+e.getMessage());
  }                                                                            
  return conn;                                                      
  }                                                                            
  }                                                                            

  这种方式运用起来比较灵活,简单,
"jdbc:oracle:thin:@10.1.4.199:1521:o
具有较强的移植性和适用性。只要注意连接字符串
ra199"中具体参数的设置即可。

  3、JdbcOdbc桥方式                                                    

  先通过管理工具中的数
接类,在本地通过JdbcOdbc
据源来添加本地对Oracle数据库
桥方式获得Oracle数据库连接。
的连接,然后通过以下的数据库连


  /**                                                                        
  * 在本地获得数据库连接                                                      
  */                                                                          

  package com.j2ee.db;                                      

  import java.util.*;                                        
  import java.sql.*;                                          
  import javax.sql.*;                                        
  import java.io.*;                                            
  import oracle.jdbc.driver.*;                      
  import javax.naming.*;                                  

  /**                                                                        
  * 通过JdbcOdbc桥方式获得Oracle数据库连接                      
  */                                                                          
  public class DbConnection                            
  {                                                                            
  /**                                                                        
  *                                                                            
  */                                                                          
  public DbConnection()                                    
  {                                                                            
  }                                                                            

  /**                                                                        
  * 获得Oracle数据库连接                                                
  */                                                                          
  public java.sql.Conn
ection connectDbByJdbcOdbcBr
idge()
  {                                                                            
  java.sql.Connection conn=null;                  
  try                                                                        
  {                                                                            
  Class.forName("sun.jdbc.odbc.Jdb
cOdbcDriver");
  con=DriverManager.ge
tConnection("jdbc:odbc:ora19
9","sr","sr");
  }                                                                            
  catch (Exception e)                                        
  {                                                                            
  System.out.println("ERROR:"+e.ge
tMessage());
  }                                                                            
  return conn;                                                      
  }                                                                            
  }                                                                            

  在getConnection方法中第一个参数"
的数据源名称,第二个参数和第三个参数
jdbc:odbc:ora199" 中的"ora199"为本地ODBC数据源
分别为Oracle的用户名和口令。

  二、通过连接池获得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数据库服务名。              

  以下连接池的缺省设置,可以根据自己环境的情况作相应的调整。                    

  选择"Finish"完成连接池的设置。                                        

  下一步为"MyConnectionPool"连接池创建一个JNDI,以便应用程序能够通过该名称获得连接池中的连接。 "server1"->"JDBC"-> "JDBC Resources"下的"New…"


  至此,Sun Java System Applicatio
之生效。
n Server7中的数据库连接池配置完毕,重起服务使


  3、通过连接池获得连接                                                        

  以上在iPlanet Applic
置的连接池都可以通过以下
ation Server 6.5和Sun Java S
的数据库连接类,从连接池中获
ystem Application Server7中配
得Oracle数据库连接。

  /**                                                                        
  * 从连接池中获得数据库连接                                                  
  */                                                                          

  package com.j2ee.db;                                      

  import java.util.*;                                        
  import java.sql.*;                                          
  import javax.sql.*;                                        
  import java.io.*;                                            
  import oracle.jdbc.driver.*;                      
  import javax.naming.*;                                  

  /**                                                                        
  * 通过连接池方式获得Oracle数据库连接                                  
  */                                                                          
  public class DbConnection                            
  {                                                                            
  /**                                                                        
  *                                                                            
  */                                                                          
  public DbConnection()                                    
  {                                                                            
  }                                                                            

  /**                                                                        
  * 获得Oracle数据库连接                                                
  */                                                                          
  public java.sql.Conn
ection connectDbByConnection
Pool()
  {                                                                            
  java.sql.Connection conn=null;                  
  try                                                                        
  {                                                                            
  Context ctx = new InitialContext();        
  DataSource ds = (DataSource)ctx.
lookup("jdbc/credit2");
  conn=ds.getConnection();                              
  }                                                                            
  catch (Exception e)                                        
  {                                                                            

  System.out.println("
ERROR:"+e.getMessage());
  }                                                                            
  return conn;                                                      
  }                                                                            
  }                                                                            

  4、使用连接池的优点                                                          

  使用连接池的优点主要体现在两个方面:                                          

  对数据库的连接统一进行配置、管理
同时对应用中没有关闭或其他原因造成没
、监控,以及对数据库连接池的参数进行优化调整,
有关闭的数据库连接由连接池统一进行管理。
  便于应用的移植和后端
而具体连接的是哪一台机器
数据库的切换,因为在应用中通
上的数据库与应用无关。
过统一的JNDI获得数据库的连接,

 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·.NET真的战胜了J2EE吗?  (2005-04-02)
 ·11本入门到精通J2EE书籍推荐  (2005-04-02)
 ·小心进行 J2EE Web Services 的测  (2005-04-02)
 ·AOP如何与J2EE实行高效的无缝结合  (2005-04-02)
 ·配置J2EE(v1.4.02)和Cloudscap  (2005-04-02)
 ·J2EE 1.4 的新特性完全展播  (2005-04-02)
 ·我眼中的J2EE  (2005-04-02)
 ·Java使用技巧两则---J2EE 1.4简介  (2005-04-02)
 ·运用J2EE创建灵活易扩展的企业应  (2005-04-02)
 ·在J2EE组件中引用和查找Web服务  (2005-04-02)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统