JDBC 部署

阅读(9196) 标签: jdbc部署,

本节内容,非应用程序员可以跳过,不影响正常阅读。

集算器可以JDBC方式被JAVA程序调用,在这里我们将了解一下集算器JDBC的部署步骤,以及配置文件中的具体信息。

集算器 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*.jarxmlbeans-5.2.0.jar

如果要在集算器JDBC中使用绘制图形功能,则需要加入SVG图形处理相关的jar包,包括batik-all-1.16.jarxml-apis-1.4.01.jarxmlgraphics-commons-2.8.jarxml-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

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; DBOne20; 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,而WeblogicWebsphere中均不需要,可以不填。

服务器

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下配置和ServerJNDIList,不需要读哪一个则删除哪一个 -->

<load>Runtime,Server</load>

<!-- 配置了JDBC网关后所有语句均由脚本文件解析并返回序表或游标,脚本文件只有参数sqlargs(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中的配置。