包含在初始化文件中的信息是使用三类配置语句指定的,如以下章节所述:
图 5中所示的示例初始化文件包含这些语句的示例,且 对于 OS/2 和 Windows NT 是有效的。
每个独立配置语句的文本都必须在同一行中。请确保对于您从宏中调用的每个语言环境, 初始化文件中都包含了一个 ENVIRONMENT 语句。如果全限定了宏中所有对文件的引用, 就不需要指定任何路径配置语句了。
图 5. Net.Data 初始化文件. 有关“DLL 路径”和“参数列表”的完整描述,请参考 db2www.ini 文件本身和环境配置语句。
|
以下章节将描述如何在初始化文件中定制配置语句。
需要进行以下 ENVIRONMENT 语句的更改:Net.Data 配置变量语句设置配置变量的值。配置变量用于各种不同的目的。有些变量是语言环境所必需的, 以便使它们能够正确地工作,或者以可以替代的方式操作。其他变量控制要构造的 Web 页面的字符编码或内容。另外,您可以使用配置变量语句来定义特定于应用程序的变量。
您所使用的配置变量取决于您所使用的语言环境和数据库,以及其他特定于应用程序的因素。
要更新配置变量语句:
使用您的应用程序所需的配置变量来定制初始化文件。配置变量具有以下语法:
NAME[=]value-string
等号是可选的,由方括号指示。
以下细目描述了您可以在初始化文件中指定的配置变量语句:
如果高速缓存管理器不是在 Net.Data 宏所运行的机器上运行,则将使用两个可选的配置变量:
如果高速缓存管理器在本地机上运行,那么 UNIX 域套接字或已命名管道将用于通信,并且不需要进行配置。
高速缓存管理器只在 AIX 和 Windows NT 机器上运行。参见 Net.Data 高速缓存,以了解 Net.Data 高速缓存。
语法:
DTW_CACHE_PORT [=] port_number
参数:
表 3描述了为这些变量指定机器标识和端口号的选项。
缺省连接管理器值 | 如果指定了高速缓存机器 ... | 如果没有指定高速缓存机器 ... |
如果指定了高速缓存端口... | Net.Data 使用指定的端口在指定的机器上连接至高速缓存管理器。 | Net.Data 使用指定的端口在本地机上连接至高速缓存管理器。 |
如果没有指定高速缓存端口 ... | Net.Data 使用缺省的端口 7175 在指定的机器上连接至高速缓存管理器。 | Net.Data 使用缺省的端口 7175 在本地机上连接至高速缓存管理器。 |
语法:
DTW_CACHE_HOST [=] host_name
参数:
指定 SQL 语言环境所使用的 DB2 实例。当 Net.Data 连接到在 Windows NT、OS/2 和 UNIX 操作系统上运行的 DB2 时需要这个变量值。
OS/2、Windows NT 和 UNIX 操作系统上的 DB2 需要将 DB2INSTANCE 定义为一个环境变量。如果 Net.Data 检测到 DB2INSTANCE 没有定义为环境变量,那么它将把 DB2INSTANCE 环境变量设置为试图连接到 DB2 之前在初始化文件中找到的 DB2INSTANCE 的值。
语法:
DB2INSTANCE [=] instance_name
指定 Net.Data 用于“现场连接”的唯一的端口号。
语法:
DTW_CM_PORT [=] port_number
其中 port_number 指定了用于“现场连接” 的唯一的端口号。
使用 DTW_DEFAULT_ERROR_MESSAGE 配置变量来为处于生产状态的应用程序指定类属出错信息。此变量为任何 MESSAGE 块中未捕捉的错误状态提供了一个类属消息。
如果您仍希望查看 Net.Data 生成的实际出错信息, 可使用出错信息日志来捕捉这些消息。参见 Net.Data 记录,以了解如何使用错误日志。
如果未指定配置变量,则 Net.Data 会对错误状态显示它自己提供的消息。
语法:
DTW_DEFAULT_ERROR_MESSAGE [=] "message"
示例: 指定类属消息
DTW_DEFAULT_ERROR_MESSAGE "This site is temporarily unavailable."
启用或禁用 Net.Data 直接请求调用。在缺省情况下,直接请求被禁用。
调用 Net.Data 的直接请求方式允许用户指定 SQL 语句的执行,或直接在 URL 中指定 Perl、REXX 或 C 程序。禁用直接请求的时侯,用户必须使用宏请求方式来调用 Net.Data, 允许用户只执行那些 SQL 语句和已经定义的或在宏中调用的函数。参见使用 Net.Data 机制,以获取使用 DTW_DIRECT_REQUEST 时与安全性相关的建议。
语法:
DTW_DIRECT_REQUEST [=] YES|NO
其中:
在 Net.Data 执行过程中定位某些文件。您可以在安装时设置这个变量来指定主目录 <inst_dir> (Net.Data 安装在这个目录中)。安装之后不要更改这个值。
指定 Net.Data 将大对象 (LOB) 写入哪个目录。
安装期间,Net.Data 将创建一个名为 tmplobs 的目录, 该目录在 HTML_PATH 路径配置变量指定的目录下。Net.Data 将所有 LOB 文件存储在这个目录中。如果更改 了 HTML_PATH 的值,则将在新的目录下创建一个新的子目录。
语法:
HTML_PATH [=] path
示例: 以下示例显示了初始化文件中的 HTML_PATH 配置变量。
HTML_PATH /db2/lobs
当查询返回一个 LOB 时,Net.Data 将把它保存在 HTML_PATH 配置变量中指定的目录中。
提示: 当使用 LOB 时应考虑系统限制,因为它们会很快地消耗资源。 参见使用大对象以获取详情。
DTW_LOG_DIR 指定存储错误日志的目录。除非同时设置了此变量和 DTW_LOG_LEVEL 变量,否则将不记日志。
参见记录 Net.Data 出错信息,以了解关于这些变量和记录 Net.Data 的出错信息日志的详情。
语法:
DTW_LOG_DIR [=] \inst_dir\path
示例:初始化文件配置
DTW_LOG_DIR \inst_dir\mylogfiles\
DTW_LOG_LEVEL 指定要记录在错误日志中的错误的级别。除非同时设置了此变量和 DTW_LOG_DIR 变量,否则将不记日志。
参见记录 Net.Data 出错信息,以了解关于这些变量和记 Net.Data 的出错信息日志的详情。
语法:
DTW_LOG_LEVEL [=] off|warning|error
示例:初始化文件配置
DTW_LOG_LEVEL error
对字处理和字符串函数激活国家语言支持。当这个变量的值为 YES 时,所有的字符串函数和字处理函数都将通过把字符串作为混合数据(即, 作为可能同时包含来自单字节字符集和双字节字符集的字符的字符串)来正确地处理 MBCS 字符。缺省值为 NO。您可以通过在 Net.Data 宏中设置 DTW_MBMODE 变量来覆盖初始化文件中值的设置。
此配置变量与 DTW_UNICODE 配置变量一起使用。如果 DTW_UNICODE
使用缺省值 NO,则将使用 DTW_MBMODE 的值。如果对 DTW_UNICODE 所设置的值不是 NO,则使用它自己的值。表 4说明了这两个变量的设置如何确定内置函数处理字符串的方式:
表 4. DTW_UNICODE 和 DTW_MBMODE 设置之间的关系
如果 DTW_UNICODE 设置为 | 如果 DTW_MBMODE=YES | 如果 DTW_MBMODE=NO |
---|---|---|
NO | 支持 MBCS 与 SBCS 混合使用 | 仅支持 SBCS |
UTF8 | 支持 UTF-8 | 支持 UTF-8 |
语法:
DTW_MBMODE [=] NO|YES
如果此变量设置为 YES,则 Net.Data 会除去 HTML 输出中的多余空白。通过压缩空白,这个变量压缩了要发送给 Web 浏览器的数据量, 从而改进了性能。缺省值为 NO。
可以在宏中使用 DEFINE 语句来覆盖这个变量。
语法:
DTW_REMOVE_WS [=] YES|NO
覆盖 Net.Data. 宏中 SHOWSQL 设置的效果。
语法:
DTW_SHOWSQL [=] YES|NO
其中:
表 5描述 Net.Data 初始化文件和宏中的设置如何确定对于特定的宏是否要启用或禁用 SHOWSQL 变量。
表 5. Net.Data 初始化文件和宏中对 SHOWSQL 的设置之间的关系
DTW_SHOWSQL 的设置 | 设置 SHOWSQL | 显示 SQL 语句 |
---|---|---|
NO | NO | NO |
NO | YES | NO |
YES | NO | NO |
YES | YES | YES |
指定使用 DTW_SENDMAIL 内置函数用于发送电子邮件消息的 SMTP 服务器。这个变量的值可以是一个主机名,或是一个 IP 地址。 如果没有设置这个变量,则 Net.Data 把本地主机用作 SMTP 服务器。
语法:
DTW_SMTP_SERVER [=] server_name
其中 server_name 是要用于发送电子邮件消息的 SMTP 服务器的主机名或 IP 地址。
性能提示:对此值指定一个 IP 地址以防止 Net.Data 在检索指定的 SMTP 服务器的 IP 地址时连接到一个域名服务器。
示例:
DTW_SMTP_SERVER us.ibm.com
指定 Net.Data 在以下事物中是否支持 Unicode:
Net.Data 在宏、表数据以及内置函数中支持 UTF-8 Unicode 格式, 并且输出通常是 UTF-8。Net.Data 可以访问包含 UCS-2 数据的数据库,并将这些数据转换为 UTF-8 格式。
当设置为 UTF8 时,DTW_UNICODE 会告诉 Net.Data 在 Unicode 环境中运行。然后 Net.Data 生成 UTF-8 格式的页面,并期望任何输入数据都是 UTF-8 格式的(或者,如果是 DB2 数据库数据的话,UCS-2 也可以)。输入数据包括宏文件的内容、 从浏览器发送的表单数据,以及所有其他来自外部数据源的数据。
DB2 Unicode 数据库需求:除了设置 DTW_UNICODE 变量之外,还需在 Net.Data 的运行环境中将 DB2 特定环境变量 DB2CODEPAGE 设置为 1208。例如,对于 Apache Web 服务器,向 HTTPD.CONF 文件添加下面这一行:
SetEnv DB2CODEPAGE 1208
参见 Web 服务器文档,以确定如何为 CGI 脚本、Web 服务器 API、Fast-CGI 程序或小服务程序设置环境变量。
当在 Unicode 环境中运行时,Net.Data 使用的是英文信息目录。
DTW_UNICODE 配置变量与 DTW_MBMODE 配置变量一起使用。在处理单词或字符串内置函数时,DTW_UNICODE 配置变量的值将覆盖 DTW_MBMODE 变量的设置。但是,如果 DTW_UNICODE 被设置为 NO 或未设置,则使用 DTW_MBMODE 的值。表 4说明了这两个变量的设置如何确定内置函数处理字符串的方式:
语法:
DTW_UNICODE [=] NO|UTF8
其中:
指定 Net.Data 将客户机上载的文件存储在哪个目录中。未设置此变量时,Net.Data 将不接受文件上载。
语法:
DTW_UPLOAD_DIR [=] path
示例:
DTW_UPLOAD_DIR /tmp/uploads
指定 Net.Data 应该利用 DB2 准备高速缓存,而不应在宏文件的 SQL 语句中显式地使用参数标记。当您想要所有宏都利用此功能部件时,在 Net.Data 初始化文件中将 DTW_USE_DB2_PREPARE_CACHE 配置变量设置为“是”。要只为特定宏中的语句激活此功能部件,可以使用 DTW_USE_DB2_PREPARE_CACHE 宏变量。有关详情,参见 Net.Data Reference。
语法:
DTW_USE_DB2_PREPARE_CACHE [=] YES|NO
其中:
指定 Net.Data 如何对待局部变量的作用域:局部变量是否仍为局部变量,或者局部变量是否可在创建它们的函数块外部使用。 此变量的作用是提供与 Net.Data 先前版本的向后兼容性,但不可用于 Net.Data 的 OS/390 或 OS/400 版本。
语法:
DTW_VARIABLE_SCOPE [=] LOCAL|GLOBAL
其中:
Net.Data 从路径配置语句的设置中确定 Net.Data 宏所使用的文件和可执行程序的位置。路径语句有:
这些路径语句标识了一个或多个 Net.Data 在试图找到宏、文本文件LOB 文件 和包含文件时搜索的目录。您所需的路径语句取决于宏所使用的 Net.Data 的功能。
更新准则:
有些一般准则适用于路径语句。每个路径语句的描述中都注明了例外情况。
以下章节将描述每个路径语句的目的和语法,并提供有效路径语句的示例。 这些示例可能和您的应用程序不同,这取决于操作系统和配置。
此路径配置语句指定用来定位要使用 DTW_SENDMAIL 来发送的附件的路径。
语法:
DTW_ATTACHMENT_PATH [=] path
示例:
DTW_ATTACHMENT_PATH /usr/lpp/internet/server_root/pub/upload
此路径配置语句标识了一个或多个目录,Net.Data 在其中搜索 EXEC 语句调用的外部程序或可执行变量。目录在路径语句中的顺序确定了 Net.Data 搜索目录的顺序。如果找到程序,则将外部程序名附加到路径规范后,形成一个传送到语言环境执行的 全限定文件名。
语法:
EXEC_PATH [=] path1;path2;...;pathn
示例:以下示例显示了初始化文件中的 EXEC PATH 语句以及调用外部程序的宏中的 EXEC 语句。
Net.Data 初始化文件:
EXEC_PATH /u/user1/prgms;/usr/lpp/netdata/prgms;
Net.Data 宏:
%FUNCTION(DTW_REXX) myFunction() { %EXEC{ myFunction.cmd %} %}
如果在 /usr/lpp/netdata/prgms 目录中找到文件 myFunction.cmd,则程序的限定名为 /usr/lpp/netdata/prgms/myFunction.cmd。
如果在 EXEC_PATH 语句指定的目录中没有找到文件:
http://myserver/cgi-bin/db2www/usr/user1/prgms/myFunction.cmd
Net.Data 将在 /u/user1/prgms/myFunction.cmd 目录路径中搜索文件。
http://myserver/cgi-bin/db2www/myFunction.cmd/report
并且在 EXEC_PATH 指定的所有目录 中都没有找到文件 myFunction.cmd,那么 Net.Data 将试图在当前工作目录中查找该文件。
此路径配置语句标识了一个或多个 Net.Data 搜索的目录, 以它们指定的顺序进行搜索,从中搜索一个平面文件接口 (FFI) 函数引用 的平面文件。
语法:
FFI_PATH [=] path1;path2;...;pathn
示例:以下示例显示了初始化文件中的 FFI_PATH 语句。
Net.Data 初始化文件:
FFI_PATH /u/user1/ffi;/usr/lpp/netdata/ffi;
当调用 FFI 语言环境时,Net.Data 将查看 FFI_PATH 语句中指定的路径。
因为 FFI_PATH 语句用于为那些不在路径语句所含目录中的文件提供安全性, 因此对于没有找到的 FFI 文件提供了特殊措施。参见 Net.Data 参考中 有关 FFI 内置函数一节。
此路径配置语句标识了一个或多个 Net.Data 搜索的目录, 以它们指定的顺序进行搜索,从而找到一个 Net.Data 宏中的 INCLUDE 语句 所指定的文件。在找到这个文件之后,Net.Data 将把包含文件的名称附加到路径规范后面,以便产生限定的包含文件名。
语法:
INCLUDE_PATH [=] path1;path2;...;pathn
例 1:以下示例显示了初始化文件中的 INCLUDE_PATH 语句和指定 包含文件的 INCLUDE 语句。
Net.Data 初始化文件:
INCLUDE_PATH /u/user1/includes;/usr/lpp/netdata/includes
Net.Data 宏:
%INCLUDE "myInclude.txt"
如果在 /u/user1/includes 目录中找到文件 myInclude.txt, 则包含文件的全限定名称是 /u/user1/includes/myInclude.txt。
例 2:以下示例显示了 INCLUDE_PATH 语句和带有子目录名称的 INCLUDE 文件。
Net.Data 初始化文件:
INCLUDE_PATH /u/user1/includes;/usr/lpp/netdata/includes
Net.Data 宏:
%INCLUDE "OE/oeheader.inc"
包含文件是在目录 /u/user1/includes/OE 和 /usr/lpp/netdata/includes/OE 中搜索的。如果文件在 /usr/lpp/netdata/includes/OE 中找到,则包含文件的全限定名称 就是 /usr/lpp/netdata/includes/OE/oeheader.inc。
如果在 INCLUDE_PATH 语句指定的目录中没有找到文件:
http://myserver/cgi-bin/db2www/u/user1/includes/oeheader.inc
Net.Data 将在 /u/user1/includes/oeheader.inc 目录路径中搜索文件。
http://myserver/cgi-bin/db2www/my.cmd/report
并且在 INCLUDE_PATH 指定的所有目录 中都没有找到文件 myFunction.cmd,那么 Net.Data 将试图在当前工作目录中查找该文件。
此路径配置语句标识了 Net.Data 搜索 Net.Data 宏的目录。例如,指定以下 URL 将请求带有路径和文件名 /macro/sqlm.dtw 的 Net.Data 宏:
http://server/cgi-bin/db2www/macro/sqlm.dtw/report
语法:
MACRO_PATH [=] path1;path2;...;pathn
等号 (=) 是可选的,由方括号指出。
Net.Data 将路径 /macro/sqlm.d2w/report 追加至 MACRO_PATH 配置语句中的路径中,从左至右,直至 Net.Data 找到宏为止。如果找不到宏,则 Net.Data 将执行为 DTW_DEFAULT_MACRO 配置变量定义的宏,否则它将打印错误。参见调用 Net.Data以获取有关 调用 Net.Data 宏的信息。
示例:以下示例显示了初始化文件中的 MACRO_PATH 语句以及 调用 Net.Data 的相关链接。
Net.Data 初始化文件:
MACRO_PATH /u/user1/macros;/usr/lpp/netdata/macros
HTML 链接:
<a href="http://server/cgi-bin/db2www/query.dtw/input">Submit another query.</a>
如果在目录 /u/user1/macros 中找到文件 query.dtw,则全限定路径为 /u/user1/macros/query.dtw。
如果在 MACRO_PATH 语句指定的目录中没有找到文件:
http://server/cgi-bin/db2www/u/user1/macros/myfile.txt/report
Net.Data 将在 /u/user1/macros/myfile.txt 目录路径中搜索文件。
http://server/cgi-bin/db2www/myfile.txt/report
并且 在 MACRO_PATH 指定的所有目录中都没有找到文件 myfile.txt,则 Net.Data 将试图 在根 (/) 目录中查找文件:/myfile.txt
ENVIRONMENT 语句配置一个语言环境。语言环境是 Net.Data 的一个组件,Net.Data 用 它来访问诸如 DB2 数据库等数据源,或者执行诸如 REXX 等语言编写的程序。Net.Data 提供了 一系列语言环境,还提供了允许您创建自己的语言环境的接口。使用语言环境中描述了这些语言环境,Net.Data 语言环境接口参考中描述了语言环境接口。
在调用某个特定的语言环境之前,Net.Data 要求用于该语言环境的 ENVIRONMENT 语句必须存在。
可以通过将变量指定为 ENVIRONMENT 语句中的参数来将变量与语言环境相关联。Net.Data 将 ENVIRONMENT 语句中指定的参数作为宏变量隐式地传送到语言环境。要更改宏中 ENVIRONMENT 语句内指定 的参数值,可以使用 DTW_ASSIGN() 函数为该变量赋一个值,也可以在 DEFINE 部分定义该变量。
要点: 如果在宏中定义了一个变量, 但未在 ENVIRONMENT 语句中加以指定,则该宏变量不会被传送至语言环境。
例如,宏可以定义一个 DATABASE 变量来指定一个数据库的名称,DTW_SQL 函数 中的 SQL 语句将在此执行。DATABASE 的 值必须传送到 SQL 语言环境 (DTW_SQL),这样,SQL 语言环境就可以连接到指定 的数据库。要将变量传送到 语言环境,您必须向 DTW_SQL 的语言环境的参数列表中 添加 DATABASE 变量。
示例 Net.Data 初始化文件对定制 Net.Data 语言环境配置语句的设置做了几个假设。这些 假设对于您的环境来说可能是不正确的。请针对您的环境适当地修改这些语句。
要添加或更新 ENVIRONMENT 语句:
ENVIRONMENT 语句具有以下语法:
ENVIRONMENT(type) library_name (parameter_list, ...) [CLIETTE "cliette_name"]
参数:
Net.Data 将此语言环境和 Net.Data 宏中定义的 FUNCTION 块相 关联的名称。您必须在 FUNCTION 块定义中指定语言环境的类型,从而标识 Net.Data 要执行函数 所应使用的语言环境。
DLL 或共享程序库的名称中包含 Net.Data 调用 的语言环境接口。
在每个函数调用中传送给语言环境的参数列表(除了 在 FUNCTION 块定义中指定的参数)。
要在参数列表中设置和传送变量,可以在宏中定义变量。
在执行将由语言环境处理的函数之前,您必须将这些参数定义为配置变量或宏中的变量。以下示例指定 ENVIRONMENT 语句中的变量:
ENVIRONMENT(DTW_SQL) C:\WINNT\System32\nddb2.dll(IN DATABASE,TRANSACTION_SCOPE,USERID,PASSWORD)
cliette 的名称。cliette_ name 可以指 Java 应用程序语言环境 cliette,也可以是数据库 cliette。 cliette_name 参数是和 CLIETTE 关键字一起使用的,它们都只和“现场连接”一起使用。CLIETTE 和 cliette_name 是可选的, 只能对数据库和 Java 应用程序语言环境指定。
语法:
CLIETTE "DTW_JAVAPPS"
语法:
CLIETTE "type:db_name"
参数:
Net.Data 处理初始化文件时,它不会装入 语言环境 DLL或 共享程序库。Net.Data 在它首次执行标识某个语言环境 的函数时装入该语言环境的 DLL或 共享程序库。然后,只要 Net.Data 是装入的, DLL或共享程序库 将保持装入状态。
示例:用于 Net.Data 提供的语言环境的 ENVIRONMENT 语句
在为您的应用程序定制 ENVIRONMENT 语句时,请向 ENVIRONMENT 语句中添加需要从初始化文件传送到语言环境的变量或 Net.Data 宏编写者需要在他们的宏中设置或覆盖的变量。
ENVIRONMENT (DTW_SQL) /net.data/lib/dtwsql.so ( IN DATABASE, LOGIN, PASSWORD, TRANSACTION_SCOPE, ALIGN, START_ROW_NUM, DTW_SET_TOTAL_ROWS) CLIETTE "DTW_SQL:MYDBASE" ENVIRONMENT (DTW_ORA) /net.data/lib/dtwora.so ( IN DATABASE, LOGIN, PASSWORD, TRANSACTION_SCOPE, ALIGN, START_ROW_NUM, DTW_SET_TOTAL_ROWS) ENVIRONMENT (DTW_ODBC) /net.data/lib/dtwodbc.so ( IN DATABASE, LOGIN, PASSWORD, TRANSACTION_SCOPE, ALIGN, DTW_SET_TOTAL_ROWS) ENVIRONMENT (DTW_APPLET) /net.data/lib/dtwjava.so ( ) ENVIRONMENT (DTW_JAVAPPS) /net.data/lib/dtwjavapps.so ( OUT RETURN_CODE ) CLIETTE "DTW_JAVAPPS" ENVIRONMENT (DTW_PERL) /net.data/lib/dtwperl.so ( OUT RETURN_CODE ) ENVIRONMENT (DTW_REXX) /net.data/lib/dtwrexx.so ( OUT RETURN_CODE ) ENVIRONMENT (DTW_SYSTEM) dtwsys.so ( OUT RETURN_CODE ) ENVIRONMENT (HWS_LE) dtwhws.so ( OUT RETURN_CODE )
必需:每个 ENVIRONMENT 语句必须在单独一行上。