文档章节

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

会哭的鳄鱼
 会哭的鳄鱼
发布于 2017/06/05 00:17
字数 1166
阅读 18
收藏 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将会从连接缓存池中拿出一个数据库连接给当前组件使用,而不是真的执行连接数据库操作。

© 著作权归作者所有

共有 人打赏支持
会哭的鳄鱼
粉丝 7
博文 56
码字总数 59004
作品 0
郑州
技术主管
第1章Oracle RAC介绍----RAC结构和进程概览

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

SANSOM
2013/11/28
0
0
开源 ORM 盛宴中的另道佳肴 -- Cayenne 的高级特性

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

红薯
2009/11/16
1K
0
[springboot](五)整合redis

版权声明:本文为博主原创文章,未经博主允许不得转载。有任何问题请邮件联系ashuo.com@qq.com https://blog.csdn.net/drdongshiye/article/details/82717608 spring boot对常用的数据库支持...

菜鸟腾飞
09/15
0
0
apigateway-kong(五)集群搭建部署

  kong 集群将使得系统通过增加更多机器,从而实现水平扩展,承接更多的请求流量。它们将共享同样的配置且使用同一个数据库。kong 集群中的的所有节点都连接同一个数据库。 你需要在 kong...

zhoujie0111
06/04
0
0
Spring Cloud 2.x系列之springcloud如何使用spring-cache

学了springcloud如何操作数据库进行增删改查,又学了springcloud如何操作reids把数据存储到redis。今天结合数据库操作和reids操作,来看看如何使用SpringCache。SpringCache提供了基于注解的...

技术小能手
09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一切都靠大数据:滴滴已封禁4.3万人员、车辆

这段时间以来,滴滴出行相继出炉了各种整改措施,包括自身安全建设和外部社会共建,昨日就刚刚宣布正在筹备建立安全监督顾问委员会。 据媒体最新报道,9月30日,上海市交通委员会执法总队、上...

linuxCool
31分钟前
2
0
awk命令用法介绍

10月18日任务 9.6/9.7 awk 1.awk(上)(下) 1.awk 分段操作功能 指定分隔符,并把第一段打印出来,不会改动文件内容 将所有内容打印出来 awk 没有指定分隔符号,则会默认用空格或者空白字符...

hhpuppy
今天
3
0
Spring Cloud Eureka Server高可用之:在线扩容

本文共 1591字,阅读大约需要 6分钟 ! 概述 业务微服务化以后,我们要求服务高可用,于是我们可以部署多个相同的服务实例,并引入负载均衡机制。而微服务注册中心作为微服务化系统的重要单元...

CodeSheep
今天
2
0
内网esxi主机上安装CoreOS虚拟机

CoreOS是一个为专门运行容器而设计的轻量级linux发行版,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。它没有包管理工具,运行容器化应用以提供服务;默...

hiwill
今天
1
0
20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部