|
1 连接缓冲池
MapXtreme使用连接缓冲池,可以创建一组数据库的连接, 这些连接可以被有效的重用,这要就不必费时费力为每个客户端的请求创建一个连接。 那么,MapXtreme中的连接缓冲池是如何工作的呢?不论是MapXtremeServlet还是MapJ使用连接缓冲池的方式都是一样的,JDBC从RDBMS取数据时都首先从连接缓冲池中查找连接,如果找到了一个可用的连接就直接用,否则创建一个新的连接。连接使用后再放回连接缓冲池。如果此时连接缓冲池已满,则关掉连接并释放资源。 对于MapXtremeServlet使用连接缓冲池的情况,如果在classpath中找到了miconnections.properties文件,就会使用连接缓冲池。该文件描述的连接在MapXtreme初始化时会被预启动,MapXtremeServlet实例销毁时连接自动关闭。 对于MapJ的应用,如果在Classpath中能找到miconnections.properties文件也会自动自动预先产生一个连接缓冲池。这种情况只能创建一个连接缓冲池,该连接缓冲池被应用中的各个MapJ使用。MapXtreme需要从远程数据库取数据,如执行查询,获取图层上的数据,数据地图等等,如果连接缓冲池存在,这个过程就会使用连接缓冲池。另外,MapJ也可以使用MIConnectionPoolManager在运行时创建另外一个连接缓冲池。程序退出,调用MIConnectionPoolManager的dispose方法可以关闭连接。 2 配置 JDBC 连接 通过miconnections.properties可以管理连接缓冲池,可以在文件中设置多个连接缓冲池。每个连接缓冲池需要设置以下几项,如:预启动连接的个数,连接缓冲池的最大连接数,连接超时时间等。下面是一个例子: Connection1_name=ProjectMaps Connection1_driver=oracle.jdbc.driver.OracleDriver Connection1_url=jdbc:oracle:thin:@hostmachine:port:sid Connection1_user=mapxtreme Connection1_password=secret Connection1_is_xy=false Connection1_prestart=4 Connection1_max=15 Connection1_timeout=300 Connection1_prefetch=75 其中,第六句描述连接是否有空间数据(注,必须用两个连接缓冲池连接x/y坐标和空间数据),最后一句描述了数据库prefetch的值。 3 使用Pool连接 可以使用如下信息构造DataProviderHelpers: • URL • 用户名,密码等 • 驱动类 其中URL必须按如下命名方式给出:jdbc:mipool:resourece_name 如果使用了这种方式,有些参数可以省略,如下示例了连接Oracle8i的情况: OraSoDataProviderHelper oraDpHelper = new OraSoDataProviderHelper("jdbc:mipool:ProjectMaps",null, null); 使用这种方式(命名空间),可以仅仅给出一个URL,连接在服务器端管理,敏感信息不在网上传输,这样也保证了安全性。 4 连接管理器 首先保证JDBC驱动在classpath中,使用命令行方式打开连接管理器: java com.mapinfo.dp.util.ConnectionsManager 如果使用菜单执行exe,需要设置Connections Manager.lax文件中lax.class.path部分使之能够找到JDBC驱动。 如图: 可以添加、修改、删除miconnections.properties文件中定义的连接,下面是添加或修改连接的的界面, 在Custom页可以设置自定义的属性,如pre-fetch。
|