WebLogic Server 中的JDBC概述  在 WebLogic Server 中,您可以配置数据库连接,方法是先配置 JDBC 数据源和多数据源,然后将这些 JDBC 资源指定到或部署到 WebLogic 域中的服务器或群集。 您配置的每个数据源都包含一个在创建该数据源实例时(在对其进行部署或指定时或在服务器启动时)创建的数据库连接的缓冲池。应用程序会在 JNDI 树中或在本地应用程序上下文 (java:comp/env) 中查找数据源(具体取决于您如何配置和部署该对象),然后会请求一个数据库连接。完成该连接后,应用程序会调用 connection.close(),该方法会将该连接返回到数据源中的连接缓冲池。 下图为JDBC的连接架构

多数据源是一组数据源的提取,可提供与此多数据源相关联的各数据源之间的负载平衡或故障转移处理。就像数据源会绑定到 JNDI 树一样,多数据源会绑定到 JNDI 树或本地应用程序上下文。应用程序会在 JNDI 树中或在本地应用程序上下文 (java:comp/env) 中查找多数据源(就像这些应用程序查找数据源时一样),然后会请求一个数据库连接。多数据源会根据在多数据源配置中选择的算法(负载平衡或故障转移)确定要使用哪一个数据源来满足该请求。

JDBC 配置文件  WebLogic JDBC 配置存储在符合 weblogic-jdbc.xsd Schema(可在 http://www.bea.com/ns/weblogic/91/weblogic-jdbc.xsd 上找到)的 XML 文档中。可以将 JDBC 资源作为系统模块或应用程序模块进行创建或管理。JDBC 应用程序模块是 J2EE 模块的 WebLogic 特定扩展,可在 J2EE 应用程序中进行配置,或作为独立模块进行配置。 无论是正在使用 JDBC 系统模块还是正在使用 JDBC 应用程序模块,每个 JDBC 数据源或多数据源都是通过一个 XML 文件(一个模块)来表示的。 JDBC 系统模块  使用管理控制台或使用 WebLogic 脚本工具 (WLST) 创建 JDBC 资源(数据源或多数据源)时,WebLogic Server 会在域目录的 config/jdbc 子目录中创建一个 JDBC 模块,并在该域的 config.xml 文件中添加一个对该模块的引用。JDBC 模块符合 weblogic-jdbc.xsd Schema(可在 http://www.bea.com/ns/weblogic/91/weblogic-jdbc.xsd 上找到)。 以此方式配置的 JDBC 资源被视为系统模块。系统模块由某个管理员拥有,该管理员可随时删除、修改或添加相似的资源。系统模块可全局定位到域中配置的服务器和群集,因此可用于部署在同一目标上的所有应用程序,也可用于客户端应用程序。还可通过 JMX,将系统模块作为 JDBCSystemResourceMBeans 来访问。 数据源系统模块作为 JDBCSystemResource 元素包括在域的 config.xml 文件中,该元素包括 JDBC 模块文件的名称和该模块部署在其上的目标服务器和群集的列表。下图显示了一个示例,该示例描述了在 config.xml 文件中列出的数据源和该数据源映射到的模块。

在此图示中,config.xml 文件将 examples-demo 数据源作为 jdbc-system-resource 元素列出,该数据源映射到 domain\config\jdbc 文件夹中的 examples-demo.xml模块。 同样,多数据源系统模块作为 jdbc-system-resource 元素包括在域的 config.xml 文件中。多数据源模块包括了一个 data-source-list 参数,该参数可映射到该多数据源使用的数据源模块。config.xml 中还包括单独的数据源模块。下图显示了 config.xml 文件中的元素和 config/jdbc 目录中的系统模块之间的关系。

在此图示中,config.xml 文件列出了三个 JDBC 模块 - 一个多数据源和该多数据源使用的两个数据源,这些模块也在多数据源模块中列出。您的应用程序可在 JNDI 树中查找这些模块中的任何模块,并请求一个数据库连接。在您查找多数据源时,该多数据源会根据 data-source-list 参数中的数据源、列出这些数据源的顺序和在 algorithm-type 参数中指定的算法,确定要使用其他数据源中的哪一个数据源来提供数据库连接。

故障转移和 JDBC 连接  JDBC 是一个高度有状态客户端 DBMS 协议,在此协议中,DBMS 连接和事务状态直接与 DBMS 过程和客户端(驱动程序)之间的套接口相连。因此,连接的故障转移不受支持。如果 WebLogic Server 实例异常中止,它所管理的任何 JDBC 连接也都将异常中止,并且 DBMS 将回滚已经完成的任何事务。受影响的任何应用程序都必须完全重新启动其当前事务。与异常中止的连接相关联的所有 JDBC 对象也会被废除。群集的 JDBC 简化了重新连接过程:如果承载以前连接的服务器实例失败,外部客户端应用程序中 WebLogic 数据源可以识别群集的特性则使得客户端能够从中请求另一个连接。 如果您进行了复制并同步了数据实例,则可以使用 JDBC 多数据源来支持数据库故障转移。在这种环境中,如果因为多数据源中的一个数据源不存在或因为从该数据源进行的数据库连接已经关闭,客户端无法从该数据源获取连接,WebLogic Server 则会尝试从数据源列表中的下一个数据源获取连接。 有关群集 JDBC 对象的说明,请参阅配置群集的 JDBC。 注意:分配到多数据源的任何数据源都必须配置为在保留时间测试其连接。这是缓冲池可以验证它具有正常连接的唯一方式,也是多数据源可以了解何时故障转移到列表中下一个缓冲池的唯一方式。

与Oracle性能相关的连接属性  BatchPerformanceWorkaround  驱动程序可使用符合 JDBC 3.0 标准的批处理机制或本地 Oracle 批处理机制执行批处理操作。如果应用程序不使用更新计数信息,则使用本地 Oracle 批处理环境可提高性能。符合 JDBC 3.0 标准的机制根据 JDBC 3.0 规范的要求,为批处理中的每个语句或参数集返回单个更新计数。本地 Oracle 批处理机制不为设置在批处理中的每个语句或参数返回单个更新计数。因此,当使用本地 Oracle 批处理机制时,驱动程序返回在返回更新计数数组中的 SUCCESS_NO_INFO (-2) 值。 CatalogOptions  Oracle 检索同义词和备注信息是十分昂贵的。如果应用程序不需要返回此信息,则驱动程序可提高性能。标准 JDBC 行为是将同义词包含在调用下列 DatabaseMetaData 方法的结果集中:getColumns()、getProcedures()、getProcedureColumns() 和 getIndexInfo()。除此之外,驱动程序可将备注信息包含在调用下列 DatabaseMetaData 方法的结果集中:getTables() 和 getColumns()。 InsensitiveResultSetBufferSize  要想在使用滚动不敏感结果集时提高性能,驱动程序可将结果集数据缓存到内存而不是写入磁盘。默认情况下,驱动程序会将 2 MB 的不敏感结果集数据缓存到内存,而把剩余的结果集数据写入磁盘。在将数据写入磁盘前增加驱动程序使用的内存量,或强制驱动程序始终不将不敏感结果集数据写入磁盘,可提高性能。最大缓存大小的设置是 2 GB。 MaxPooledStatements  为了提高性能,在驱动程序不在应用服务器或不提供其自己的预处理语句缓冲池的其他应用程序中运行时,应启用驱动程序自己内部的预处理语句缓冲池。当启用驱动程序内部的预处理语句缓冲池时,驱动程序会缓存一定数量的由应用程序创建的预处理语句。例如,如果将 MaxPooledStatements 属性设置为 20,则驱动程序会缓存应用程序创建的最新的 20 预处理语句。如果此属性的设置值大于应用程序使用的预处理语句个数,则会缓存所有预处理语句。 ResultSetMetaDataOptions  默认情况下,调用 ResultSetMetaData.getTableName() 方法时,Oracle 驱动程序会忽略为结果集中的每列返回正确表名所需的其他处理。因此,getTableName() 方法可能为结果集中的每列返回一个空字符串。如果知道应用程序不需要表名信息,则此设置会提供最佳性能。 ServerType  使用专用服务器连接时,创建的 UNIX 上的服务器进程(Windows 上的线程)仅服务于该应用程序连接。断开连接时,进程就消失了。在应用程序和专用服务器进程间直接建立套接口连接。这将大大提高性能,但却使用的 UNIX 服务器资源却显著增加。因为是运行在 Windows 平台上的 Oracle 服务器线程,所以服务器上其他资源的使用会大大减少。当有批处理环境但却有很少的连接,Oracle 服务器在最大负载的情况下仍有额外的处理容量和可使用的内存时,或者如果有一个对平台比较敏感的应用程序,与其他应用程序共享 Oracle 资源会降低其性能时,应该将 ServerType 属性设置为专用。 WireProtocolMode  如果通常返回的数据在连续行中有重复,比如,列1/行1 中的数据与列1/行2 中的数据相同,则驱动程序可以提高性能。 关于Oracle连接的其他属性可参见 http://edocs.weblogicfans.net/wls/docs92/jdbc_drivers/oracle.html

关于如何创建JDBC连接可参见 http://edocs.weblogicfans.net/wls/docs92/ConsoleHelp/taskhelp/jdbc/jdbc_datasources/CreateDataSources.html

参考至:http://edocs.weblogicfans.net/wls/docs92/jdbc_drivers/oracle.html              http://edocs.weblogicfans.net/wls/docs92/cluster/failover.html#wp1030488              http://edocs.weblogicfans.net/wls/docs92/ConsoleHelp/taskhelp/jdbc/jdbc_datasources/CreateDataSources.html

http://edocs.weblogicfans.net/wls/docs92/jdbc_admin/config.html

本文原创,转载请注明出处、作者 如有错误,欢迎指正 邮箱:czmcj@163.com

Weblogic的JDBC详解的更多相关文章

  1. Spring4 JDBC详解

    Spring4 JDBC详解 在之前的Spring4 IOC详解 的文章中,并没有介绍使用外部属性的知识点.现在利用配置c3p0连接池的契机来一起学习.本章内容主要有两个部分:配置c3p0(重点)和 ...

  2. JDBC详解系列(二)之加载驱动

    ---[来自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)---   在JDBC详解系列(一)之流程中 ...

  3. JDBC详解系列(三)之建立连接(DriverManager.getConnection)

      在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤. JDBC流程: 第一步:加载Driver类,注册数据库驱动: 第二步:通过DriverManager,使用url,用户名和密码 ...

  4. JDBC详解(一)

    一.相关概念介绍 1.1.数据库驱动 这里驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理 ...

  5. Java基础-面向接口编程-JDBC详解

    Java基础-面向接口编程-JDBC详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.JDBC概念和数据库驱动程序 JDBC(Java Data Base Connectiv ...

  6. JDBC详解1

    JDBC详解1 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中u ...

  7. JDBC详解系列(一)之流程

    ---[来自我的CSDN博客](http://blog.csdn.net/weixin_37139197/article/details/78838091)--- JDBC概述   使用JDBC也挺长 ...

  8. jdbc详解(一)

    JDBC简介 l 数据库驱动 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC l JDBC 全称为: Java Data Base Connectivity ...

  9. JDBC 详解

    工作原理流程:装载驱动程序---->获得数据库连接---->使用Statement或PreparedStatement执行SQL语句----> 返回执行的结果---->关闭相关 ...

随机推荐

  1. Python强化训练笔记(六)——让字典保持有序性

    python的字典是一个非常方便的数据结构,使用它我们可以轻易的根据姓名(键)来找到他的成绩,排名等(值),而不用去遍历整个数据集. 例如:{'Lee': [1, 100], 'Jane': [2, ...

  2. springboot+dubbo

    使用springboot搭建dubbo服务,首先封装出springboot-dubbo的项目,引入在服务上加直接@Service直接使用,方便于拆封统一管理. package hello.dubbo. ...

  3. Xamarin Android 绑定jar库同时将so库打包进去

    1.在创建的Bindings Library项目中,新建Assets目录: 2.Assets目录下再分别创建armeabi,armeabi-v7a,x86三个目录: 3.将so文件分布copy到三个目 ...

  4. Swift 必备开发库10个

    1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...

  5. spring 另开线程时的注入问题

    spring web项目在启动的时候,就会完成各种组件的注入.在工作的过程中,遇到了这样一个问题: 一个serviceA中要新开一个线程来执行一项任务(假定这个任务是ClassA).ClassA中要用 ...

  6. docker好文收藏

    深入浅出Docker(一):Docker核心技术预览 2. 核心技术预览 Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观.我们从虚拟化方法的四个方面:隔离性.可配额/可度 ...

  7. Cent0S 升级Python会带来的问题

    CentOS是linux的几个Distrubution中比较容易让初学者拿来学习的一个版本,以下记录一下在学习过程中遇到的一些问题以及解决方法: 1.在WIN7下,我最初尝试安装7.0版本的,后来一直 ...

  8. 使用git版本控制器C#工程,git托管到GitHub和visual studio on line

    类比TFS, 托管到了VS online,为私有.GitHub上托管的代码为开源. 新建工程选择版本控制器"Git" VS online: 本地: GitHub,下载github ...

  9. python成长之路-----day1-----作业(登录程序和三级菜单)

    作业: 作业1:用户登录 1)程序说明: a.用户输入密码验证成功然后打印欢迎信息 b.如果密码错误,用户登录失败,提示用户,密码错误 c.用户输入密码错误3次,则用户锁定 d.当用户多次输入不存在的 ...

  10. xcode调整debug,release模式

    今天调试的时候发现变量都不能查看了.在「lldb」中通过「po」命令来查看总是提示变量未找到. 环境 xcode 7, Swift 2 错误提示 ‘XXXX’ was compiled with op ...