如何使用连接管理器(cman)

xuxin96416067 2004-07-14 03:10:47
如何使用cman要求例子!!!
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuxin96416067 2004-07-15
  • 打赏
  • 举报
回复
如何在服务器端和客户端配置?
zwj0712 2004-07-14
  • 打赏
  • 举报
回复
何为连接管理器?
在 WebSphere Application Server 版本 3.0 中,JDBC 2.0 标准扩展 API 提供了连接缓冲池功能,以更有效地使用数据服务器连接。但在 Application Server 版本 3.0 之前的版本中,不能使用 JDBC 2.0 标准扩展 API。因此,连接缓冲池功能是由连接管理器提供的,而连接管理器在 3.0 之前的环境中就已提供。

如果所提供的小服务程序使用的是 Application Server 版本 3.0 环境中所支持的连接管理器 API 的子集,则使用连接管理器(Application Server 3.0 以前的版本)编写的小服务程序仍可在 Application Server 版本 3.0 环境中使用。在 3.0 环境中支持的连接管理器 API 一节中将讨论 API 子集,并且该子集将覆盖大多数现有小服务程序。

Application Server 版本 3.0 环境中不支持连接管理器 API,并且也不可能使用在版本 3.0 以后的发行版中。因此,您不应该再用连接管理器来编写新的小服务程序。现在您应使用 Application Server 版本 3.0 中的连接缓冲池实现来编写新的小服务程序。另外,您应该考虑把使用连接管理器的现有小服务程序移植成使用连接缓冲池的小服务程序。 对于大多数小服务程序,移植实际上只是一些简单的编码更改。因为您不能使用连接管理器来编写新的小服务程序,所以在此就不再讨论连接管理器编码的详细信息(除了那些在移植时所需的信息)。

从连接管理器移植到连接缓冲池
本节将通过代码段显示了为移植一个小服务程序,连接缓冲池代码(“新”方法)是如何替代连接管理器代码(“旧”方法)的。大多数使用连接管理器编写的小服务程序代码段应与下列代码段相似,并且您可按指示更改代码。您可能希望回顾连接缓冲池实现和小服务程序如何使用连接缓冲池,以更好地理解下面的“新”代码段。

请确认您有必需的导入(import)语句。考虑除去所有非必需的导入。
旧方法

import java.sql.*; // 用于数据服务器访问 (保留)
import com.ibm.servlet.connmgr.*; // 连接管理器类 (除去)

新方法

import java.sql.*; // 用于数据服务器访问 (保留)
import com.ibm.db2.jdbc.app.stdext.javax.sql.*; // IBM 实现... (新增)
import com.ibm.ejs.dbm.jdbcext.*; // ..扩展 (新增)
import javax.naming.*; // 获取命名服务   (新增)

在小服务程序 init() 方法中,执行一次初始化就可建立所有客户机请求所需使用的变量。注意以下所示的 spec、connMgr 和 ds 变量实际上是实例变量,而不是 init() 方法中的局部变量。因此,在实际的小服务程序中,这些变量首先是在所有方法之外进行说明的,并且在 init() 中不能在类名 IBMConnSpec、IBMConnMgr 和 DataSource 之前设置其值。下列所示的类名可帮助您更方便地标识这些变量。在“新”方法中,Web 管理员将会提供有关 put() 和 lookup() 方法中变量的信息。
旧方法

// 创建所需连接的规范
IBMConnSpec spec = new IBMJdbcConnSpec("poolname",
true,
"COM.ibm.db2.jdbc.app.DB2Driver",
"jdbc:subprotocol:database",
"userid",
"password");
// 建立连接管理器访问以使用其功能
IBMConnMgr connMgr = IBMConnMgrUtil.getIBMConnMgr();

新方法

// 创建参数列表以访问命名系统
Hashtable parms = new Hashtable();
parms.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.ejs.ns.jndi.CNInitialContextFactory");
// 访问命名系统
Context ctx = new InitialContext(parms);
// 从命名系统中获取 DataSource 工厂对象
DataSource ds = (DataSource)ctx.lookup("jdbc/sample");

对于每个客户机请求,doGet() 或 doPost() 方法将由建立连接开始。注意,通过 spec 变量可明确告知连接管理器将使用哪个连接缓冲池(“旧”方法)。 使用 ds DataSource 变量时,编写此小服务程序的程序员就无需了解所有的连接缓冲池(“新”方法)。
旧方法

// 使用 spec 来获取连接管理器连接
IBMJdbcConn cmConn = (IBMJdbcConn)connMgr.getIBMConnection(spec);
// 使用连接管理器连接获取数据服务器连接
Connection conn = cmConn.getJdbcConnection();
新方法

// 使用 DataSource 工厂获取数据服务器连接
Connection conn = ds.getConnection("userid", "password");

今后每个客户机请求都将使用此连接来访问数据服务器。再强调一次,这通常使用在 doGet() 或 doPost() 方法中。标准 JDBC API 用于数据访问,而不使用连接管理器 API,所以无需移植代码。但 JDBC 2.0 标准扩展 API 提供了一些新的可能性,即您可能要考虑数据服务器交互。
在每个客户机请求结束时(通常是在 doGet() 或 doPost() 方法中),应当释放与连接相关的资源。 在“旧”方法和“新”方法之间存在一些细微的差异。在“旧”方法中,您可释放连接管理器的连接,但您无需关闭实际的数据服务器连接,因为对实际数据服务器连接的管理必须由连接管理器执行。但是,在“旧”方法中,您实际调用的是在数据服务器连接上的 close() 方法。虽然在 Application Server 版本 3.0 中并没有真正地关闭连接,但连接已返回连接缓冲池以供再次使用。
旧方法

// 释放连接管理器的连接
cmConn.releaseIBMConnection();
// 不发出 conn.close() 命令;
新方法

// “关闭”连接并将其放回连接缓冲池
conn.close();

正如性能特点和小服务程序如何使用连接缓冲池中所提到的,很少情况下正在使用连接缓冲池的小服务程序会出现连接断开的情况。(这是一个“抢先”特性,缺省情况下是禁用的,但管理员可通过“WebSphere 管理控制台”来启用)。一旦启用“抢先”后,当单个请求在不同的扩展周期内分别多次使用连接时,可能会发生问题。此连接可能被视为“孤立”连接,即它所属的小服务程序已失效,或变得无法响应。连接缓冲池工具可能会将连接返回到连接缓冲池中以供再次使用。使用连接管理器的小服务程序也会有同样问题。 在连接管理器(“旧”方法)中,verifyIBMConnection() 方法可用于检查这种情况,并允许您对恢复方法进行编码。使用连接缓冲池(“新”方法)时,您可替代检查 ConnectionPreemptedException,并对恢复方法进行编码。因此,您应当移植所有使用 verifyIBMConnection() 方法来编码的小服务程序,以替代响应 ConnectionPreemptedException。

3.0 环境中支持的连接管理器 API
某些连接管理器 API 仅用于监控或作为外部连接管理器使用,而实际并未在产品小服务程序中使用。因此,这些 API 并未移植到 Application Server 版本 3.0 环境中,并且也无法在现有产品小服务程序中找到。如下列示的是继续支持(但仍反对使用)的连接管理器类(和关联方法)。 因为您不应再使用连接管理器来编写新的小服务程序,所以在此就不再讨论连接管理器编码的详细信息。

类:com.ibm.servlet.connmgr.IBMConnMgrUtil
方法:

public static IBMConnMgr getIBMConnMgr()
下面三个方法仅供在 WebSphere Studio 中使用。

public static IBMConnPoolSpec getPoolProperties(String poolName)
public static void addPoolProperties(IBMConnPoolSpec spec)
public static String urlToPoolName(String url)
类:com.ibm.servlet.connmgr.IBMConnMgr
方法:

public IBMConnection getIBMConnection(IBMConnSpec connSpec)
public IBMConnection getIBMConnection(IBMConnSpec connSpec, String ownerClass)
类:com.ibm.servlet.connmgr.IBMConnection
方法:

public boolean verifyIBMConnection()
public void removeIBMConnection()
public void releaseIBMConnection()
类:com.ibm.servlet.connmgr.IBMJdbcConn
此类是由上述 IBMConnection 类派生而来的,并且它实现了下列一些其它方法:

public Connection getJdbcConnection()
类:com.ibm.servlet.connmgr.IBMConnPoolSpec
此类和关联方法仅供在 WebSphere Studio 中使用。

方法(这两个都是构造器):

public IBMConnPoolSpec(String poolName,
String poolType,
int maxConnections,
int minConnections,
int connectionTimeOut,
int maxAge,
int maxIdleTime,
int reapTime)
public IBMConnPoolSpec(String poolName, String poolType)
类:com.ibm.servlet.connmgr.IBMJdbcConnSpec
方法(前三个方法都是构造器):

public IBMJdbcConnSpec(String poolName,
boolean waitRetry,
String dbDriver,
String url,
String loginUser,
String loginPasswd)
public IBMJdbcConnSpec(String poolName)
public IBMJdbcConnSpec()
public void verify()

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧