Chinaunix首页 | 论坛 | 博客
  • 博客访问: 663366
  • 博文数量: 779
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5000
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 13:28
文章分类

全部博文(779)

文章存档

2011年(1)

2008年(778)

我的朋友

分类:

2008-10-27 13:38:11


  本文主要介绍了10gas得data-source的一些配置情况,包括一些再生产系统中实施的建议。
  
  通常我们的应用都会访问数据库,对于基于j2ee的应用,j2ee制定了jdbc以及jndi来满足j2ee连接数据库的应用。各个中间件得jdbc配置方式不太一样,下面主要讲10gas中得data-source如何配置,程序如何访问数据库。
  
  10gas中得data-source主要有由三种
  1.Emulated Data Sources 该方式通过程序模拟XA做two-phase 提交,性能比较好,主要用于jdbc driver不完全支持XA的情况下。在基于ias的应用中,通常就采用该种Data Source
  2.Non-emulated Data Sources该方式完全支持XA及two-phase提交,如果你的应用用到两个不同的数据库,需要满足two-phase commit,就只能采用该Data Sources
  3. Native Data Source这个主要用于ejb不需要存取数据库和不需要XA的情况下,在通常的应用中,是基本不可能的,所以这种方式用的比较少。
  
  那么这三种data -source,对于你的应用,该如何选择呢?
  
  如果你的ejb不需要使用数据库,那么选择Native Data Sources 这个是最快得。如果你的应用需要访问数据库,但是后台只有一个数据库,不需要做 two-phase提交,那么选择Emulated Data Sources 方式,这个也比较快,通常选用这种方式能够满足大部分的应用。
  
  如果你的应用必须要支持XA和 two-phase提交,那么只能选择 Non-emulated Data Sources 。
  
  根据我们在生产系统中对 Non-emulated Data Sources和Emulated Data Sources得使用表明,
  使用 Emulated Data Sources 性能比较好,且不容易出现问题。但是如果程序有jdbc使用不规范的情况,会导致到数据库得connection 数目超过你设置的最大连接数的情况。其他都没有啥问题。
  
  建议使用 Emulated Data Sources 。
  
  下面就以Emulated Data Sources为例,说明如何配置 Data Sources 。
  
  设置方式有两种
  1.通过em 的web页面进行设置
  2.通过手工编辑 data-sources.xml 文件进行配置
  
  通过 web页面设置比较简单 ,主要步骤如下
  进入em页面,选择需要配置data-source得oc4j, 然后进入Administration 页面,
  接着选择Data Sources ,然后选择Create即可。
  
  在出现的Edit Data Source 页面中
  需要填写如下 项目
  
  General 部分
  Name 这个设置 data-source得名字,可以随便取
  JDBC URL 设置数据库得连接串,如下
  jdbcracle:thin:@10.1.3.20:1521:tpl8 其中
  10.1.3.20:1521:tpl8 分别对应数据库得ip,监听端口和instance name.
  
  Datasource Username and Password 部分Username 和Use Cleartext Password 对应数据库得用用户名和密码JNDI Locations 部分EJB Location 需要设置,将来成要通过这个名字访问数据库,其他的缺省即可。
  
  Connection Attributes
  Connection Retry Interval (seconds) 设置 如果第一次连接数据库不成功,过多长时间再次尝试连接。 缺省即可。
  Max Connection Attempts 设置如果连接不成功,最多尝试几次连接。缺省即可。
  Cached Connection Inactivity Timeout (seconds) 设置多长时间如果jdbc connection不活动,就关闭的时间 。缺省即可。
  Maximum Open Connections 设置最大连接数,通常和oc4j得thread数目一样,25即可。
  Minimum Open Connections 设置需要保留的最小连接数,再生产环境中,设置成和 Maximum Open Connections 一样。
  Wait For Free Connection Timeout (seconds) 设置如果当前没有可用的connection,而且已经达到 Maximum Open Connections 数目的情况下,需要等待多长时间来等待其他线程释放 connection 而活到可用的 Connections。缺省即可。
  
  过 手工编辑的方式,主要是修改
  j2ee/home/config/data-sources.xml 文件
  
  添加一个data-source如下
  
    name="TxLife"
  location="jdbc/CoreDS"
  xa-location="jdbc/xa/XADS"
  ejb-location="test"
  connection-driver="oracle.jdbc.driver.OracleDriver"
  username="taipinglife2iastest"
  password="ftp123"
  url="jdbcracle:thin:@10.1.3.20:1521:tpl8"
  inactivity-timeout="5"
  min-connections="15"
  max-connections="15"
  max-connect-attempts="5"
  wait-timeout="120"/>
  
  各个选项设置的值可以很容易的在em配置页面中找到对应的项
  。
  
  由于是手工修改,需要
  执行
  
  dcmctl updateconfig 命令通知dcm-daemon配置文件已经修改。
  
  然后在重新启动 oc4j
  
  opmnctl restartproc process-type=home
  即可。
  
  javax.naming.InitialContext ic=new javax.naming.InitialContext(); // 初始化jndi
  javax.sql.DataSource ds=(javax.sql.DataSource)ic.lookup("test"); //test对应 ejb-location
  java.sql.Connection con=ds.getConnection(); //获得连接
  java.sql.Statement st=con.createStatement(); //创建statement
  java.sql.ResultSet rs=st.executeQuery("select * from test_wzy"); //执行查询操作
  while(rs.next()) //循环所有纪录
  out.println(rs.getString("id")); //打印纪录
  rs.close(); //关闭结果集
  st.close(); //关闭statement
  con.close(); //关闭连接
  
  
  
【责编:admin】

--------------------next---------------------

阅读(369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~