本节内容,非应用程序员可以跳过,不影响正常阅读。
集算器可以JDBC方式被JAVA程序调用,在这里我们将了解一下集算器JDBC的部署步骤,以及配置文件中的具体信息。
在部署集算器JDBC时,需要按照如下步骤:
1. 加载需要用到的jar包
在启动JAVA应用程序时需要加载集算器所需的jar包,如果在web应用下,可以把这些jar包放在WEB-INF/lib目录下。集算器JDBC需要两个基础jar包,都可以在[安装目录]\esProc\lib目录下找到:
esproc-bin-xxxx.jar 集算器计算引擎及JDBC驱动包
icu4j_60.3.jar 处理国际化
除了基础包外,还有一些为完成特定功能的jar包,都在esProc\lib目录下:
如果要在集算器JDBC用其它数据库作为集算器的数据源,那么还需要相应数据库的驱动jar包,特别的,使用demo数据库需要hsqldb-2.7.3-jdk8.jar。
如果要在集算器JDBC中读写Microsoft Office文件,则需要加入poi*.jar和xmlbeans-5.2.0.jar。
如果要在集算器JDBC中使用绘制图形功能,则需要加入SVG图形处理相关的jar包,包括batik-all-1.16.jar、xml-apis-1.4.01.jar、xmlgraphics-commons-2.8.jar、xml-apis-ext-1.3.04.jar。
需要注意的是,集算器JDBC需要JDK1.8或更高版本。
2. 部署raqsoftConfig.xml文件
配置文件raqsoftConfig.xml可以在[安装目录]\esProc\config下找到,需复制后放置在应用项目的类路径下,配置文件的名称都不能改变。关于配置文件的具体信息,将在配置raqsoftConfig.xml中讲述。
3. 部署脚本文件
将所需使用的脚本文件放置在应用项目的类路径下,也可以放到raqsoftConfig.xml文件的<splPathList/>节点指定的寻址路径,或者<mainPath/>指定的主路径中。
4. 在JAVA中调用集算器JDBC
关于在JAVA中调用脚本文件,或者直接执行代码的方法,请参考被Java调用。
在raqsoftConfig.xml文件中,配置了集算器主路径、脚本文件寻址路径等各类信息。如下所示:
<?xml version="1.0" encoding=" UTF-8"?>
< Config Version="2">
<Runtime>
<!-- 数据源配置方法一:在应用服务器中配置连接池,在此指定数据源名称 -->
<!-- encryptLevel表示数据源中用户密码的加密级别:0表示明文,1表示密码加密,2表示URL、用户名和密码加密 -->
<DBList encryptLevel="0">
<!-- 数据源名称,必须与脚本文件中的数据源名称一致 -->
<DB name="demo">
<property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<!-- type表示数据库类型编号: UNKNOWN:0; ORACLE:1; SQLSVR:2; SYBASE:3; SQLANY:4; INFMIX:5; FOXPRO:6; ACCESS:7; FOXBAS:8; DB2:9; MYSQL:10; KINGBASE:11; DERBY:12; HSQL:13; TERADATA:14; POSTGRES:15; DATALOGIC:16; IMPALA:17; DBOne:20; ESSBASE:101;-->
<property name="type" value="13"/>
<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"/>
<!--数据库是否用模式名,例如:如果设置为true ,则在自动生成的sql语句中,会是select tbl.col1,tbl.col2 from tbl这样的语法,否则就是select col1,col2 from tbl -->
<property name="useSchema" value="false"/>
<!--对象名是否带限定符 -->
<property name="addTilde" value="false"/>
<!--数据库取出来的内容是否需要转码,设置为true时,当数据库编码与前端不一致的,需要将数据库中的数据转码后呈现-->
<property name="needTransContent" value="false" />
<!-- SQL语句是否需要转码,指从前端到数据库执行sql时,有可能需要转码把字符转成数据库的编码来查询-->
<property name="needTransSentence" value="false" />
<!-- SQL语句大小写是否敏感-->
<property name="caseSentence" value="false" />
</DB>
<DB name="hsql">
<property name="url" value="jdbc:hsqldb:hsql://localhost/hsql"/>
<property name="driver" value="org.hsqldb.jdbcDriver"/>
<property name="type" value="13"/>
<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"/>
</DB>
</DBList >
<Esproc>
<!-- 集算器字符编码-->
<charSet>ISO-8859-1</charSet>
<!--
配置脚本文件寻址路径,可以设置多个路径,以“;”隔开。
脚本文件的路径也可以放在应用项目的类路径中,加载文件的顺序高于寻址路径
-->
<splPathList>
<splPath>D:\files\spl;D:\files\txt;D:\files</splPath>
</splPathList>
<!-- 日期、时间等类型的数据格式 -->
<dateFormat>yyyy-MM-dd</dateFormat>
<timeFormat>HH:mm:ss</timeFormat>
<dateTimeFormat> yyyy-MM-dd HH:mm:ss</dateTimeFormat>
<!-- 集算器主路径,该路径为单一的绝对路径 -->
<mainPath> D:\files</mainPath>
<!-- 临时文件存储路径,可以使用绝对路径,当设置路径为相对路径时,将设置在主路径下,相对路径不能以“/”或“\”开头-->
<tempPath>temp</tempPath>
<!-- 文件缓存区,单位为字节 -->
<bufSize>65536</bufSize>
<!-- 最大并行数 -->
<parallelNum>4</parallelNum>
<!-- 组表文件区块大小 -->
< blockSize>1048576</ blockSize>
<!-- 多路游标缺省路数 -->
<cursorParallelNum>1</cursorParallelNum>
<!--文本类型数据中,代表空值的字符串 -->
<nullStrings>nan,null,n/a</nullStrings>
<!--每次从游标取的记录数 -->
<fetchCount>9999</fetchCount>
<!--外部库目录配置-->
<extLibsPath/>
</Esproc>
<Logger>
<!--日志级别,可以设为OFF,SEVERE,WARNING,INFO,DEBUG,优先级依次降低,若为OFF则不输出任何日志信息;若为INFO,则只输出WARNING,INFO等级别的信息,依次类推-->
<Level>DEBUG</Level>
</Logger>
</Runtime>
<Server>
<!-- 默认数据连接,可以是DBList或下面JNDIList中的某一个 -->
<defDataSource>demo</defDataSource>
<!-- 设置JNDI数据源 –>
<JNDIList>
<JNDI name="jdbc/test">
//数据库类型编号,0-14依次代表的数据库类型为:[UNKNOWN:0; ORACLE:1; SQLSVR:2; SYBASE:3; SQLANY:4; INFMIX:5; FOXPRO:6; ACCESS:7; FOXBAS:8; DB2:9; MYSQL:10; KINGBASE:11; DERBY:12; HSQL:13; TERADATA:14;]
<property name="type" value="1"/>
<property name="batchSize" value="1000"/>
//引用数据库的JNDI数据源,格式为:java:comp/env/DataSource名称。通过JNDI名称找到DataSource,查找数据源时的环境串前缀,在不同的web服务器中不同,如Tomcat中是java:/comp/env,而Weblogic和Websphere中均不需要,可以不填。
服务器 |
Tomcat |
Weblogic |
Webshpere |
Resin |
Jboss |
JNDIPrefix |
java:comp/env |
无 |
无 |
java:comp/env |
Java:
|
<property name="lookup" value="java:comp/env/jdbc/test"/>
</JNDI>
</JNDIList >
<!-- 日志记录配置属性文件。日志属性文件的配置说明请参照raqsoftLog.properties文件中的说明 -->
<property name="logConfig" value="raqsoftLog.properties"/>
</Server>
<JDBC>
<!-- 是否读Runtime下配置和Server下JNDIList,不需要读哪一个则删除哪一个 -->
<load>Runtime,Server</load>
<!-- 配置了JDBC网关后所有语句均由脚本文件解析并返回序表或游标,脚本文件只有参数sql和args(sql参数值序列) -->
<gateway>executeSQL.splx</gateway>
<!-- JDBC使用的远程服务器列表,配置各个分机的ip及端口 -->
<Units>
<Unit>192.168.0.197:8281</Unit>
</Units>
</JDBC>
<Init>
<!-- 初始化使用的脚本文件,在系统初始化时先执行指定文件 -->
<SPL>initial.spl</SPL>
</Init >
</Config>
集算器JDBC使用的raqsoftConfig.xml文件与IDE下使用的配置是同一文件。因此,可以在IDE下配置所需信息。
在菜单栏中选择Tool>Options,即可在Option窗口中编辑各种主要的配置信息。和JDBC相关的最主要信息都在Environment页面中,如路径设定,日期时间格式等:
General页面中,也有一些与JDBC相关的设定,如日志等级、并行设定等:
除了上面的设定,raqsoftConfig.xml文件中的数据源信息可以在数据源管理器中配置。在菜单栏中点击Tool>Datasource connection可以打开数据源管理器窗口:
在数据源管理器中,可以增删或者修改数据源配置。点击Edit可以编辑数据源的连接参数:
其中可以设定数据源使用的驱动类、连接URL,用户名、密码、批处理大小等。注意demo数据源是系统数据源,是不能修改连接参数的。另外,在配置数据源连接信息时需注意,不能把集算器JDBC本身作为数据源使用。
在<Server/>节点中,配置了连接池设定、日志配置文件等信息。如果在集算器JDBC调用的脚本文件中,需要连接数据源,那么必须在raqsoftConfig.xml的数据源配置或者连接池配置中设定。特别的,如果用db.query() 函数或者$(db) sql直接访问数据库,对应数据库的autoConnect属性必须为true。关于集算器JDBC的具体使用,请参阅被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
//是否固定日志名,否则会根据指定日志的文件名,按日期每天生成一个独立的日志文件
LOG2.isFixedFileName=false
在使用集算器JDBC时,会自动在JAVA应用的类路径中加载raqsoftConfig.xml,此时配置文件是不能改名的。但是,如果集算器 JDBC的连接串中使用了...?config=...的格式,即会加载连接串中raqsoftConfig所指定的.xml文件作为配置,而忽略默认配置raqsoftConfig.xml中的定义。
例如:con= DriverManager.getConnection("jdbc:esproc:local:/?config=myconfig.xml"); 则使用myconfig.xml中的配置。