报表 DQL Server 部署

阅读(4422) 标签: 报表dqlserver部署,

安装了润乾报表后,产品里自带一全套基于HSQL数据库的元数据文件和与之关联的报表DQL Server服务。用户可以参考本章节介绍在产品里部署自己的报表DQL Server服务,或者部署自己独立的报表DQL Server

一个报表DQL Server服务可从一个或多个物理数据库中获取数据。通常部署报表DQL Server服务都是从一个物理数据库中获取数据。但是,当遇到一个报表DQL Server服务需要将来自不同物理库里的订单表进行汇总查询时,如果使用一个物理数据库则无法实现该需求。因此,在处理该情况时则需要使用多个物理数据库实现。多物理库的实现是通过同时对每个数据库做查询,计算完成后,将所有查询结果汇总返回。

所谓多物理库则是在一个报表DQL Server服务中配置多个物理数据源,该数据源需要先在WEB应用中的raqsoftConfig.xml配置文件中定义,并且每个数据源对应的元数据层文件要保持语义结构一致。程序会自动根据元数据层的语义结构进行合并,从而实现多物理库间的合并汇总。ODBC方式不支持jre1.8及以上版本。

接下来我们详细了解下关于报表DQL Server的部署以及相关配置说明。

基本部署

部署报表DQL Server时,需要按照如下步骤:

(一) 启动文件

[raqsoft安装根目录]/report/bin下,我们可以直接通过startDQLSERVER.bat启动报表DQL Server,如果是单独部署报表DQL Server,那么可以通过如下命令启动服务:

启动报表DQL Server时,需要指定参数start.home,指明服务器的主路径,并保证在该路径下存在services目录。报表DQL Server服务的启动类为:com.datalogic.server.ServerConsole

如下图:

在运行命令中设定了java.ext.dirs参数指定javajar加载路径,同时设定了start.home参数,指定报表DQL Server的主路径。

当然也可以做成启动文件,譬如我们产品已提供的[润乾报表安装根目录]/report/bin/startDQLSERVER.bat文件。

linux系统下,还可以使用非图形控制台,操作步骤如下:进入到润乾报表的[润乾报表安装根目录]\report\bin下,执行命令:./startDQLSERVER.sh  -d,即可启动报表DQL Server服务;执行命令:./startDQLSERVER.sh  -x,即可关闭报表DQL Server服务。

 

(二) 加载需要用到的jar

报表DQL Server需要的jar要放在启动报表DQL Server时能加载到的目录下。相关的 jar包为:

datalogic.jar        报表DQL Server计算引擎及JDBC驱动包

esproc-bin-***.jar      报表DQL Server基础包

json-20070829.jar      解析json格式串

上述jar包可在[raqsoft安装根目录]/report/web/webapps/demo/WEB-INF/lib目录下获取。

如果在报表DQL Server中连接了其他物理数据源,那么还需要引用相应数据库的驱动jar包,比如,报表DQL Server自带的一套逻辑数据库连接的物理数据源是HSQL数据库,所以启动报表DQL Server时需要引用HSQL数据库的驱动包hsqldb-2.2.8.jar

 

(三)  部署service目录

该目录为报表DQL Server的主文件目录,目录下可包含多个逻辑数据库,每个逻辑数据库都是一个独立的目录,如上图中的datalogic目录。 server.xml用于添加应用所使用的报表DQL Server逻辑数据库,并且配置该报表DQL Server服务是否使用多物理数据库。逻辑数据库目录介绍如下:

1) service.xml用于为报表DQL Server配置元数据文件(*.lmd)和报表DQL Server的物理数据库连接信息。元数据文件应部署在报表DQL Server的【servicesà服务目录àconf】下。

2) service.xml默认位于:[raqsoft安装目录]/ report/services/服务目录下。元数据文件是通过DQL元数据层设计器生成。

注意:

1同一进程内支持多个报表DQL Server服务的存在,支持BlobClob等流式数据类型,server.xmlservice.xml配置文件名不能改变,查询语句带$表示物理SQL,不带$则表示DQL

2当用户制作了一套自己的元数据文件,想通过WEB端界面拖拽实现查询和分析,除了按照上述介绍部署报表DQL Server服务,还需要部署WEB应用。

(四) 连接报表DQL Server

报表DQL Server启动成功后可通过JDBCODBC两种连接方式进行连接。

具体连接方式使用如下:

JDBC

使用JDBC连接时需在程序中引用报表DQL Server JDBC的驱动包datalogic.jar

驱动—com.datalogic.jdbc.LogicDriver

URLjdbc:datalogic://[host]:[port],[host]:[port],…/[serviceName]?[&connect={连接名}]&[dqllog={true|false}] 

//参数说明:

[host]:[port] -> 报表DQL ServerIP和端口号,可指定多个,但多个时除ip和端口号外,其他内容须保持一致。连接时如果第一个连不上则会依次连接下一个,直到连接成功为止

[serviceName] -> 需要连接的报表DQL Server名称

[connect] -> 设置connect参数时,只连接connect指定的数据源,connect缺省时则连接报表DQL Server配置的用户数据源

[dqllog] -> 执行DQL时,是否打印DQL语句日志信息

ODBC

驱动—sun.jdbc.odbc.JdbcOdbcDriver

URLjdbc:odbc:[ODBC数据源名称]

具体连接方法可参见使用ODBC连接报表DQL Server小节。

单物理库配置

单物理库的配置包含server.xmlservice.xml,具体文件说明如下所示:

Ø server.xml

server.xml文件部署在[应用根目录]/report/services根目录下,其内容如下:

server.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!--该文件server.xml放在 [应用根目录]\services  -->

<!-- host:报表DQL Server的主机IP地址  -->

<!-- port: 报表DQL Server的侦听端口号  -->

<!-- timeout: 报表DQL Server的最长等待客户端时间,超时后重新等待。该参数影响关闭报表DQL Server的响应时间,时间越长,CPU性能浪费越少,关闭服务器等待时间越长,单位为毫秒-->

<!-- log:是否记录运行日志-->

<!--raqsoftConfig: 报表配置文件raqsoftConfig.xml路径。使用ODBC连接时必须配置该属性  -->

<!--license:润乾报表授权。按绝对路径和类路径次序查找授权文件-->

<SERVER host="127.0.0.1" port="3366" timeout="30000" log="true" license="">

<!-- SERVICE:要启动的报表DQL Server列表,可以配置多个,多个时则需要添加多条<service/>,每个<service/>name属性所指定的服务都必须位于[应用根目录]\services下,services目录下可以有多个报表DQL Server服务目录,但只有下面列出的服务才会被启动 -->

<!-- name: 报表DQL Server的名称,且名称必须与文件夹名称一致 -->

<SERVICE name="datalogic"/>

</SERVER>

Ø service.xml

service.xml文件部署在[应用根目录]/report/services/服务目录的根目录下,其内容如下:

service.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- services下各种文件存放路径:

1、元数据[logicmetadata]文件存于[应用根目录]\services\服务目录\conf

2DQL日志文件存于 [应用根目录]\services\服务目录\data

3、服务器常规日志存于 [应用根目录]\services\服务目录\log

-->

<!-- logicmetadata: 报表DQL Server的元数据文件-->

<SERVICE logicmetadata="demo.lmd">

<!-- dbtype:数据库类型,取值范围ORACLE,SQLSVR,SYBASE,SQLANY,INFMIX,FOXPRO,ACCESS,FOXBAS,DB2,MYSQL,KINGBASE,DERBY,HSQL,TERADATA,POSTGRES,UNKNOWN -->

 

<DB type="SQLSVR">

<!--报表DQL Server所使用的物理数据源配置-- >

<!-- type:数据库的连接类型;jndi,通过web服务环境Context连接;jdbc,直接加载数据库驱动 -->

<CONNECTION name="db1" type="jndi" jndi="java:comp/env/report" user="" password=""/>

<!--由于xml文件中不允许出现&等特殊字符,因此如果url中需包含&等特殊字符时,则需先将特殊符号进行转义,如先将&写成"&amp;",再写入文件中-->

<CONNECTION name="db2" type="jdbc" url="jdbc:sqlserver:// 127.0.0.1:1433;DatabaseName=demo" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" user="sa" password="root"/>

</DB>

<!-- USERS: 报表DQL Server的用户权限配置-->

<!--name:用户的名称,可以配置多个用户-->

<!--password:用户的密码-->

<!-- admin:当前用户是否为管理员,可选-->

<USERS>

<USER name="sa" password="sa" admin="true">

    <!--此用户按以下连接次序进行尝试连接,DB节点下没被配的name不尝试连接,用户下没有配置自己数据库时则会按DB节点下的数据源配置的次序尝试连接 -->

<!--用户可以设置自己的数据库用户名和密码,连接name必须在上面DB中配置-->

<CONNECTION name="db1"/>

<CONNECTION name="db2" user="wn" password="wn"/>

</USER>

<USER name="ww" password="ww"/>

<USER name="ee" password="ee"/>

</USERS>

</SERVICE>

注意:

进行报表DQL Server部署时,如果想修改产品自带的datalogic逻辑数据库目录下的元数据文件和数据源配置,除了按照上述所说的手动修改配置文件部署,还可以在DQL元数据层设计器启动报表DQL Server时通过菜单传递属性值直接进行部署修改。

首先,需要勾选选项菜单中的启动报表DQL服务时弹出部署窗口

然后,点击“服务”à“启动报表DQL服务器”,弹出如下窗口:

数据源:下拉列表中的数据源均来自“系统”à“数据源”中所添加的物理数据源

元数据文件:需要上传到datalogic逻辑数据库中的新元数据所在文件路径

点击“确定”后,程序会根据元数据文件路径获取元数据文件,并将文件上传至[安装根目录]/report/services/datalogic/conf目录下,数据源名称和元数据文件名称也会同步修改到[安装根目录]/report/services/datalogic/service.xml中。

 

多物理库配置

多物理库的配置包含server.xmlservice.xml,具体文件说明如下所示:

Ø server.xml

server.xml文件部署在[应用根目录]/report/services根目录下,其内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!--该文件server.xml放在 [应用根目录]\services  -->

<!-- host:报表DQL Server的主机IP地址  -->

<!-- port: 报表DQL Server的侦听端口号  -->

<!-- timeout: 报表DQL Server的最长等待客户端时间,超时后重新等待。该参数影响关闭报表DQL Server的响应时间,时间越长,CPU性能浪费越少,关闭服务器等待时间越长,单位为毫秒-->

<!-- log:是否记录运行日志-->

<!--license:润乾报表授权  -->

<!--raqsoftConfig: 报表配置文件raqsoftConfig.xml路径,使用ODBC连接时必须配置该属性,会通过该文件加载物理数据源  -->

<SERVER host="127.0.0.1" port="3366" timeout="30000" log="true" license="" raqsoftConfig="web/webapps/demo/WEB-INF/raqsoftConfig.xml" >

<!-- SERVICE:要启动的报表DQL Server列表,可以配置多个,多个时则需要添加多条<service/>,每个<service/>name属性所指定的服务都必须位于[应用根目录]\services下,services目录下可以有多个报表DQL Server服务目录,但只有下面列出的服务才会被启动 -->

<!-- name: 报表DQL Server的名称,且名称必须与文件夹名称一致 -->

<!-- mdb:是否使用多个物理库,缺省为false。为true时表示使用多个物理库,并且此时service.xml结构有变,具体可参考service.xml文件中MAP标签使用介绍 -->

<SERVICE name="datalogic" mdb="false"/>

</SERVER>

注意:

<service/>标签中的mdbtrue时,表示当前报表DQL Server服务使用多物理库。此时会从<SERVER/>标签中指定raqsoftConfig属性值中获取物理数据源名称,这样在service.xml文件中添加物理库时才可以在< ENTRY />标签中引用raqsoftConfig.xml文件中的物理数据源名称。

 

Ø service.xml

service.xml文件部署在[应用根目录]/report/services/服务目录的根目录下,其内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!-- services下各种文件存放路径:

1、元数据[logicmetadata]文件存于[应用根目录]\services\服务目录\conf

2DQL日志文件存于 [应用根目录]\services\服务目录\data

3、服务器常规日志存于 [应用根目录]\services\服务目录\log

-->

<!-- logicmetadata: 报表DQL Server的语义文件-->

<SERVICE logicmetadata="demo.lmd">

<!-- USERS: 报表DQL Server的用户权限配置-->

<!--name:用户的名称,可以配置多个用户-->

<!--password:用户的密码-->

  <USERS>

    <USER name="sa" password="sa"/>

    <USER name="ww" password="ww"/>

    <USER name="ee" password="ee"/>

  </USERS>

<!—报表DQL Server服务使用多物理库时的文件结构配置,ENTRY中未配置元数据层文件时则会采用<SERVICE/>标签中的同名属性值。

dbName:server.xml文件中所指定的raqsoftConfig.xml文件中的物理数据源名称,必填

logicmetadata: 报表DQL Server服务的元数据文件(.lmd) ,不是必填项,可选-->

<MAP>   

<ENTRY dbName="dqldemo1" logicmetadata="" />

<ENTRY dbName="dqldemo2" logicmetadata="" />

<ENTRY .../>

</MAP>

</SERVICE>

注意:

使用多物理库时元数据层文件中的逻辑表表结构必须保持一致。包含表名字段名字段数维(表主键)。