集算器可以JDBC方式被JAVA程序调用,在这里我们将了解一下集算器JDBC的部署步骤,以及配置文件中的具体信息。
在部署集算器JDBC时,需要按照如下步骤:
1. 加载需要用到的jar包
在启动JAVA应用程序时需要加载集算器所需的jar包,如果在web应用下,可以把这些jar包放在WEB-INF/lib目录下。集算器JDBC需要三个基础jar包,都可以在[安装目录]\esProc\lib目录下找到:
dm.jar 集算器计算引擎及JDBC驱动包
icu4j_3_4_5.jar 处理国际化
jdom.jar 解析配置文件
除了基础包外,还有一些为完成特定功能的jar包,都在esProc\lib目录下:
如果要在集算器JDBC用其它数据库作为集算器的数据源,那么还需要相应数据库的驱动jar包,特别的,使用demo数据库需要hsqldb.jar。
如果要在集算器JDBC中读写Microsoft Office文件,则需要加入geronimo-stax-api_1.0_spec-1.0.jar、poi*.jar和xmlbeans-2.3.0.jar。
如果要在集算器JDBC中使用绘制图形功能,则需要加入SVG图形处理相关的jar包,包括batik*.jar、js.jar、pdf-transcoder.jar、xalan-2.6.0.jar、xercesImpl.jar、xml-apis.jar、xml-apis-ext.jar。
需要需要注意的是,集算器JDBC需要JDK1.6或更高版本。
2. 部署raqsoftConfig.xml文件
配置文件raqsoftConfig.xml可以在[安装目录]\esProc\config下找到,需复制后放置在应用项目的类路径下,配置文件的名称都不能改变。关于配置文件的具体信息,将在6.3.2配置raqsoftConfig.xml中讲述。
3. 部署dfx文件
将所需使用的dfx文件放置在应用项目的类路径下,也可以放到raqsoftConfig.xml文件的<dfxPathList/>节点指定的寻址路径,或者<mainPath/>指定的主路径中。
4. 在JAVA中调用集算器JDBC
关于在JAVA中调用dfx文件,或者直接执行代码的方法,请参考6.2被Java调用。
在raqsoftConfig.xml文件中,配置了授权信息、集算器主路径、dfx文件寻址路径等各类信息。如下所示:
<?xml version="1.0" encoding=" UTF-8"?>
< Config Version="2">
<Runtime>
<!-- 数据源配置方法一:在应用服务器中配置连接池,在此指定数据源名称 -->
<DBList>
<!-- 数据源名称,必须与dfx文件中的数据源名称一致 -->
<DB name="demo">
<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="type" value="HSQL"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
<property name="batchSize" value="1000"/>
<!--
是否自动连接。如果设定为true,则可以直接使用db.query()函数或者$开头的SQL语句来访问数据库;如果为false,则不会自动连接,使用前必须用connect(db)语句创建数据库连接。
-->
<property name="autoConnect" value="true"/>
<property name="useSchema" value="false"/>
<property name="addTilde" value="false"/>
<property name="dbCharset" value="GBK"/>
<property name="clientCharset" value="GBK"/>
<property name="needTransContent" value="false"/>
<property name="needTransSentence" value="false"/>
<property name="caseSentence" value="false"/>
</DB>
<DB name="hsql">
<property name="url" value="jdbc:hsqldb:hsql://localhost/demo"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="type" value="HSQL"/>
<property name="user" value="sa"/>
<property name="password"/>
<property name="batchSize" value="0"/>
<property name="autoConnect" value="false"/>
<property name="useSchema" value="false"/>
<property name="addTilde" value="false"/>
<property name="dbCharset" value="GBK"/>
<property name="clientCharset" value="GBK"/>
<property name="needTransContent" value="false"/>
<property name="needTransSentence" value="false"/>
<property name="caseSentence" value="false"/>
</DB>
</DBList >
<Esproc>
<license>E:\tools\raqsoft\esProc\esproc.xml</license>
<!-- 集算器字符编码-->
<charSet>ISO-8859-1</charSet>
<!--
配置dfx文件寻址路径,该路径为绝对路径,可以设置多个路径,以“;”隔开。
dfx文件的路径也可以放在应用项目的类路径中,加载文件的顺序高于寻址路径
-->
<dfxPathList>
< dfxPath>D:\files\dfx;D:\files\txt;D:\files</dfxPath>
</dfxPathList>
<!-- 日期、时间等类型的数据格式 -->
<dateFormat>MM/dd/yyyy</dateFormat>
<timeFormat>HH:mm:ss</timeFormat>
<dateTimeFormat>MM/dd/yyyy HH:mm:ss</dateTimeFormat>
<!-- 集算器主路径,该路径为单一的绝对路径 -->
<mainPath> D:\files</mainPath>
<!-- 临时文件存储路径,可以使用绝对路径,当设置路径为相对路径时,将设置在主路径下,相对路径不能以“/”或“\”开头-->
<tempPath>temp</tempPath>
<bufSize>65536</bufSize>
<localHost>192.168.0.86</localHost>
<localPort>8282</localPort>
<logLevel>DEBUG</logLevel>
<callxParallel>4</callxParallel>
<nodeParallel>4</nodeParallel>
<zoneLockTryTime>3600</zoneLockTryTime>
</Esproc>
<Logger>
<Level>DEBUG</Level>
</Logger>
</Runtime>
<Server>
<!—默认数据连接,可以是DBList或下面JNDIList中的某一个 -->
<defDataSource>demo</defDataSource>
<JNDIList>
<!-- 数据源名称,必须与dfx文件中的数据源名称一致 -->
< JNDI name="demo">
<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="type" value="HSQL"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
<property name="batchSize" value="1000"/>
<!--
是否自动连接。如果设定为true,则可以直接使用db.query()函数来访问数据库;如果为false,则不会自动连接,使用前必须用connect(db)语句连接。
-->
<property name="autoConnect" value="true"/>
<property name="useSchema" value="false"/>
<property name="addTilde" value="false"/>
<property name="dbCharset" value="GBK"/>
<property name="clientCharset" value="GBK"/>
<property name="needTransContent" value="false"/>
<property name="needTransSentence" value="false"/>
<property name="caseSentence" value="false"/>
</JNDI>
</JNDIList >
<!— 日志配置文件 -->
<logConfig>raqsoftLog.properties</logConfig>
</Server>
<JDBC>
<!—是否读Runtime下配置和Server下JNDIList,不需要读哪一个则删除哪一个 -->
<load>Runtime,Server</load>
<!—配置了JDBC网关后所有语句均由dfx解析并返回序表或游标,dfx只有参数sql和args(sql参数值序列) -->
<gateway>executeSQL.dfx</gateway>
</JDBC>
</Config>
集算器JDBC使用的raqsoftConfig.xml文件与IDE下使用的配置是同一文件。因此,可以在IDE下配置所需信息。
首先是授权文件的设定,在IDE中首次运行集算器,需要选择授权文件。在菜单栏中选择Help>About,可以查看授权信息。
在菜单栏中选择Tool>Options,即可在Option窗口中编辑各种主要的配置信息。和JDBC相关的最主要信息都在Environment页面中,如路径设定,日期时间格式等:
General页面中,也有一些与JDBC相关的设定,如日志等级、并行设定等:
除了上面的设定,raqsoftConfig.xml文件中的数据源信息可以在数据源管理器中配置。在菜单栏中点击Tool>Datasource connection可以打开数据源管理器窗口:
在数据源管理器中,可以增删或者修改数据源配置。点击Edit可以编辑数据源的连接参数:
其中可以设定数据源使用的驱动类、连接URL,用户名、密码、批处理大小等。注意demo数据源是系统数据源,是不能修改连接参数的。另外,在配置数据源连接信息时需注意,不能把集算器JDBC本身作为数据源使用。
在<Server/>节点中,配置了连接池设定、日志配置文件等信息。如果在集算器JDBC调用的dfx文件中,需要连接数据源,那么必须在raqsoftConfig.xml的数据源配置或者连接池配置中设定。特别的,如果用db.query() 函数或者$(db) sql直接访问数据库,对应数据库的autoConnect属性必须为true。关于集算器JDBC的具体使用,请参阅6.2被JAVA调用。
日志配置属性文件raqsoftLog.properties可以配置日志级别等信息,如下:
//日志级别可为OFF,ERROR,WARN,INFO,DEBUG,ALL, 优先级依次降低,若为OFF则不输出任何
//日志信息;若为INFO,则只输出ERROR,WARN,INFO等级别的信息,依次类推。
//指定Logger的级别,以及名称
//格式为:Level(Level可以省略,缺省为INFO), 日志名1,日志名2
Logger=LOG1
//输出日志到系统控制台。日志只有两种输出形式,控制台或者文件。
LOG1=Console
//日志记录级别,优先级低于该级别的信息将被忽略,该项可以省略,缺省级别为:INFO
LOG1.Level=DEBUG
//输出日志到指定文件
//可以指定LOG2的全路径, 若未指明,则为应用的当前工作路径
LOG2=C:/raqsoft.log
//日志采用追加模式,可以不指定,缺省为追加
LOG2.Append=true
//日志文件的最大字节数,可以不指定,缺省为无限大
LOG2.MaxFileSize=10MB
//日志文件的最多备份数,可以不指定,缺省为1份
LOG2.MaxBackupIndex=2
//LOG2.Level=DEBUG
在使用集算器JDBC时,会自动在JAVA应用的类路径中加载raqsoftConfig.xml,此时配置文件是不能改名的。但是,如果集算器 JDBC的连接串中使用了...?config=...的格式,即会加载连接串中raqsoftConfig所指定的.xml文件作为配置,而忽略默认配置raqsoftConfig.xml中的定义。
例如:con= DriverManager.getConnection("jdbc:esproc:local:/?config=myconfig.xml"); 则使用myconfig.xml中的配置。