文档章节

EAServer 数据库连接缓存概念和如何配置连接缓存

会哭的鳄鱼
 会哭的鳄鱼
发布于 2017/06/05 00:17
字数 1166
阅读 18
收藏 0
点赞 0
评论 0

EAS为了提高系统的运行效率,提供了连接缓存。那什么是连接缓存,它有什么用好处,如何创建配置连接缓存以及如何在组件中使用连接缓存呢?下面将一一为你解答。

我们在开发两层应用的的时候,总是使用sqlca这个对象来控制,访问数据库连接。当我们不用的时候,就会断开这个连接。另外在两层应用中,我们总是在程序启动的时候连接数据库,而在退出程序的时候才断开数据库连接。到了三层开发,你就不能再这样做了,(当然,如果你不用连接缓存,也是可以的)。

所谓连接缓存,就是数据库连接在组件不需要的时候并不是做物理断开,而是把这个连接缓存到缓存池中,等下一次某个组件再请求连接的时候再次使用。这要做的好处,就是可以提高系统的效率。要知道,连接数据库是很浪费时间的操作。

这样一来,就很明显地看到,使用连接缓存的好处了,那就是提高效率!

在EAS中,要想使用连接缓存,你只能使用如下的几个数据库连接接口:

1,openclient

2,Oracle专用接口

3,JDBC

4,ODBC

除了这几种,其他的都不能使用,例如我们经常使用的MS SQL Server数据库专用接口,是不能创建连接缓存的。如果要连接MS SQL Server,你只能使用ODBC的方式。

创建连接缓存的方式有多种,我们常见的就是用管理器和使用jagtool命令行

先说命令行方式:

%JAGTOOL% create ConnCache:SYB_PBWF_Odbc
%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc "com.sybase.jaguar.conncache.conlibdll" "odbc32.dll"
%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc "com.sybase.jaguar.conncache.conlibname" "ODBC"
%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc "com.sybase.jaguar.conncache.db_type" "Unknown"
%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc "com.sybase.jaguar.conncache.password.e" "sql"
%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc "com.sybase.jaguar.conncache.remotesvrname" "pbwf"
%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc "com.sybase.jaguar.conncache.username" "dba"
这就可以创建一个连接缓存了。

但这样确实挺麻烦的,但你可以写成一个bat文件,实现自动创建工作。

第二个方法就是用管理器了,手动创建。

用管理器连接到easerver,点左面的connection caches,会在右面列出来当前easerver上所有的缓存, 在右面空白处点右键,选新建,根据向导,就可以完成缓存的创建,需要注意的是,如果你使用ODBC,那server name中填写odbc数据源的名字,并且这个odbc你必须要创建到系统数据源里面,否则eas服务就会找不到指定的数据源。

创建完成后,你在缓存列表中那个新建缓存上点右键,选择ping,可以测试缓存是否正常。

一旦创建完缓存,你就可以在组件中使用了。

那组件中如何使用连接缓存呢?

很简单,假设,你在组件中同样使用sqlca这个数据库连接事务对象,则你只要做如下操作:

SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "CacheName='myCache'"

对,就是这么简单,你还可以使用如下的方式:

SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=xb_db;UID=db_user;PWD=',CacheName='myCache'"

这个方式和上一个方式的区别就是,如果你的缓存mycache的连接参数和前面的参数不一致,就会出现无法连接数据库的问题。

有很多人会问,pb组件如何使用JDBC连接数据库呢?

你只要创建一个JDBC的连接缓存,然后在组件中这样写:

SQLCA.DBMS = "JDBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "CacheName='myJdbcCache'"

很简单吧!

不过,不要高兴得太早了,虽然pb的代码是不区分大小写的,但连接缓存是区分大小写的。比如,你创建的缓存名字叫myJdbcCache,但你在组件应用的时候写成了

SQLCA.DBParm = "CacheName='MyJdbcCache'"

你将无法连接到数据库。切记!

需要你了解的还有一个,就是,组件连接数据库一般都是在activate事件中,而断开数据库连接则写在deactivate事件中。

另外,你可以象写两层应用一样,执行connect using sqlca;和disconnect using sqlca;来连接数据库和断开数据库。easerver将会在你执行disconnect的时候,仅仅是把该数据库连接放到缓存池中,而不是真的从数据库上断开。当你执行connect的时候,easerver将会从连接缓存池中拿出一个数据库连接给当前组件使用,而不是真的执行连接数据库操作。

© 著作权归作者所有

共有 人打赏支持
会哭的鳄鱼
粉丝 6
博文 52
码字总数 51678
作品 0
郑州
技术主管
开源 ORM 盛宴中的另道佳肴 -- Cayenne 的高级特性

使用 Cayenne Remote Object Persistence(Cayenne ROP) ROP(Remote Object Persistence)远程对象持久化是 Cayenne 的一个独有特性,它通过使用 Web Service 技术提供了一种轻量级的远程对象...

红薯 ⋅ 2009/11/16 ⋅ 0

第1章Oracle RAC介绍----RAC结构和进程概览

至少,Oracle RAC要求Oracle Clusterware软件环境提供一个集群中所有结点对同一份存储和同一套数据文件的并发访问,能实现集群中跨结点进程间通信,实现多个数据库实例处理数据如同数据在本地...

SANSOM ⋅ 2013/11/28 ⋅ 0

mybatis缓存机制与hibernate缓存机制

mybatis缓存分为1级缓存和2级缓存,2级缓存在sessionfactory中,1级缓存在session中。 session中的缓存在session连接关闭并被连接池回收时清理,或者手动清理 sessionfactory中的缓存需要在m...

HTCKF ⋅ 2015/05/18 ⋅ 0

Spring Boot + Mybatis + Redis二级缓存(Java Web现代化开发)

背景 SpringBoot 因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在...

小红牛 ⋅ 2017/12/13 ⋅ 0

Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在...

wooyoo ⋅ 2017/05/29 ⋅ 0

使用ZooKeeper实现数据发布/订阅。

发布/订阅模式简述。 这是属于一种设计模式,在此不做过多的介绍,只是给出大概的概念。 发布订阅模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在...

Leafage_M ⋅ 2017/12/10 ⋅ 0

Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在...

wooyoo ⋅ 2017/05/29 ⋅ 0

缓存与连接池

一.初识高速缓存和连接池 设想这样一种情形:你突然口渴,需要一杯水来缓解,从心情上来讲,当然是越快越好 了。通常,一杯水的产生包括从水源(井水、河水或江水、甚至海水等)抽取,通过管...

储明城 ⋅ 2016/03/08 ⋅ 0

究竟啥才是互联网架构“高可用”

原创 2016-12-05 58沈剑 架构师之路 一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系...

毛爷爷夸我帅 ⋅ 2016/12/06 ⋅ 0

互联网高可用架构技术实践

一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可...

LionelShen ⋅ 2016/12/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 13分钟前 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部