科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Apusic V4.0.3应用服务器Oracle JDBC配置与使用

Apusic V4.0.3应用服务器Oracle JDBC配置与使用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Apusic V4.0.3不仅提供了JDBC的支持,还提供了对最新规范JDBC 3.0的支持,从而为JDBC开发中数据库连接提供了连接池管理。

作者:朱远翔 来源:blog 2007年8月1日

关键字: mysql jdbc oracle jdbc JDBC 朱远翔 Apusic

  • 评论
  • 分享微博
  • 分享邮件
1. JDBC的介绍。

JDBC是Java的开发者——Sun公司制定的Java数据库连接(Java Data Base Connectivity)技术的简称,是为各种常用数据库提供无缝联接的技术。在Web和Internet应用程序中的作用和ODBC在Windows系列平台应用程序中的作用类似。同时JDBC和ODBC也可以称之为数据连接中间件,现在JDBC被融合在J2EE的框架中,简化了J2EE框架下应用开发过程中对数据库的调用和移植。JDBC对于现在主流的数据库都可以支持,例如:MySQL、PostgreSQL(两个开源产品)和DB2、Oracle、SQL Server、Sybase(商业化产品)等。

使用JDBC来完成对数据库的访问包括以下四个主要组件:Java或J2EE的应用程序、JDBC驱动管理器、JDBC驱动程序(以jar为后缀的Java类库)和数据源。SUN公司在设计JDBC时只定义了统一标准的SQL数据存取接口。程序员开发应用时,只需要按照标准的接口访问数据,而不需要关心后台的数据库由谁提供,从而屏蔽了数据库的差异性,减少了应用与数据库的藕合,增强了应用本身的可扩展性和可移植性。提供这种可移植性的正是JDBC的驱动程序,这个部分一般由DBMS厂商提供,应用软件只需要将提供的JAR包加载到系统中就可以实现对该数据库访问的支持。

Apusic V4.0.3不仅提供了JDBC的支持,还提供了对最新规范JDBC 3.0的支持,从而为JDBC开发中数据库连接提供了连接池管理。只需要在JNDI中配置JDBC连接,就可以自动享受连接池管理带来的好处,避免在应用中通过JDBC直接访问时因为创建和关闭连接带来的资源消耗。同时,还为数据库连接提供了自动检测与失效恢复技术,当程序代码中使用连接后没有返回给连接池,系统会检测到这样的失误并自动完成连接回收工作,从而避免了软件开发中的失误,增强了应用的健壮性。

2. JDBC的使用。
JDBC的使用主要有三种:直接通过JDBC与数据库连接;客户端远程通过iiop协议由Apusic应用服务器的JNDI->JDBC与数据库连接;Apusic应用服务器端直接通过JNDI->JDBC与数据库连接。
2.1. 直接通过JDBC与数据库连接。
这种连接方式无论是在客户端还是服务器端撰写的方式都一样,我这里建个连接Oracle数据库的例子:
Class.forName("oracle.jdbc.driver.OracleDriver");//Oracle的加载JDBC驱动程序的方法
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL",ID,Pwd);
// 与Oracle数据库建立连接的方法。使用的是Oracle在JDBC中的连接串。
// 前面两行代码仍然与数据库有绑定关系,不同数据库的加载类不同,数据库连接串也会不同。
// 如果大家需要了解其他数据库的情况,可以在网上搜索“JDBC使用过程”或者“常用数据库JDBC连接写法”可得。
Connection.createStatement();
// 创建一个Statement对象。Statement对象执行一个查询并从DBMS返回一个包含响应结果的ResultSet对象。
// 除了Statement对象外,还有其他对象这里不再介绍,大家可以搜索“使用JDBC访问数据库”或者“JDBC优化”可得。
con.close(); // 关闭数据库连接!这个必须要做,否则数据库连接资源会在一次次打开中耗尽。

2.2. 客户端通过iiop协议由JNDI->JDBC与数据库连接。
这种方式程序就会享受到使用数据库连接池的好处,程序会减少创建和关闭数据库连接时消耗的时间。但是,我只觉得应该是客户端程序中才这样使用,因为服务器端会有更加简单的使用方式,而且代码中还存在与应用服务器绑定的问题,如何绑定的我将在Apusic中使用的例子说明:
Hashtable env=new Hashtable();
Context initCtx=null;
DataSource datasource=null;
try{
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.apusic.naming.jndi.CNContextFactory");
// JNDI的上下文工厂类,不同的应用服务器这里不同。
// WEBLOGIC是weblogic.jndi.WLInitialContextFactory可以通过查看那些产品的相关类可知。
env.put(Context.PROVIDER_URL,"iiop://APUSIC_ADDRESS:6888");
// 连接所用的协议与端口,也与应用服务器有关,WEBLOGIC就是T3.
// 以上与服务器相关的信息包括下面的部分最好都采用XML定义的方式,以便未来容易配置。
//插入相关验证信息
env.put(Context.SECURITY_CREDENTIALS,"your_username" ) ;
env.put(Context.SECURITY_PRINCIPAL,"your_password");
initCtx=new InitialContext(env);
//通过RMI 取得数据库连接
datasource=(DataSource)initCtx.lookup("jdbc/sample")
Connection conn=datasource.getConnection();
}catch(Exception e){
e.printStackTrace();
}
这样的连接在部署时还需注意为相应的连接设置用户认证标记,在APUSIC_HOME/config/datasources.xml 中添加<remote-acl>标记及其元素。范例如下:
<remote-acl>
<user>username</user>
</remote-acl>

<remote-acl>
<group>groupname</group>
</remote-acl>
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章