Endeca-Deployment Template-应用部署

应用程序部署

该章节会描述应用部署项目
 

部署先决条件

在开始应用部署前,要确保Endeca的组件都已经在部署服务器上安装了。这些部署服务器包括部署环境和Endeca Software会用到的环境变量(包括,ENDECA_ROOT)
更多设置部署环境的细节,可以参看Endeca Getting Started Guide
 

EAC应用

为了开始开发,该模板必须被部署到部署环境中的主控制服务器。安装脚本提供了Windows和UNIX的,根据一个Perl写的安装文件去执行部署步骤。
在每个部署环境,有一个服务器作为主控制机开放服务,并承载着EAC Central Server,而其他的服务器作为主服务器的代理,并承载着EAC Agent进程。此进程用于接收Central Server的指令。EAC Central Server和EAC Agent在Endeca HTTP Service服务中都作为一个应用运行着。Deployment Template只需要装在被选中的主服务器上,这个主服务器往往就是承载EAC Centrall Server的那台机器。
 

在Windows中部署一个EAC应用

该节描述了在windows环境使用deploy.bat文件,部署EAC应用的步骤。
在部署前,首先在主服务器上解压Deployment Template包。在deploymentTemplate-[VERSION]目录中有5个文件夹,分别为:bin,conf,data,doc和lib。
Bin文件夹中的批处理脚本,会用在下面的部署步骤中,主要是用来配置和分发模板文件到部署目录结构中。
开始发布应用:
1、  在主服务器上,执行批处理脚本以发布应用:
deploymentTemplate-[VERSION]\bin\deploy.bat
该模板定义了基于ENDECA_ROOT环境变量的Endeca Platform Services的安装位置和版本。如果安装文件所呈现的信息和你想部署的程序的版本或者位置不符的话,请停止安装。然后,重新设置ENDECA_ROOT环境变量,并重新运行。注意:如果Platform Service被安装在一个非标准的目录结构中,安装文件是无法从ENDECA_ROOT路径中解析出Platform Services的版本的。对于安装文件来说解析出版本号并不是必须,所以如果你确定ENDECA_ROOT路径指向的是正确的位置,就可以执行此安装。
2、  指定你的应用采用Dgraph部署还是Agraph部署。
a)       如果选择Agraph部署,要指定应用是否使用Parallel Forge。
3、  为你的应用指定一个短名。这个名字要由小写、大写字母或0-9的数字组成。
4、  指定一个完整路径,指向你要部署的应用。
这个目录必须已经存在。安装会在名为你应用的名字的部署目录中创建一个文件夹 ,并且应用目录结构和文件将被部署在这里。例如,如果你的应用名为MyApp,指定的部署目录为C:\Endeca\apps,安装对应应用的模板目录为C:\Endeca\apps\MyApp。
5、  指定EAC Central Server端口号
一般,安装文件会假定当前运行的机器是Central Server host,并且所有的EAC Agent都运行在相同的端口上。一旦应用部署完,所有的这些设置都可以根据不同的环境进行重新配置。
6、  指定你的应用是否会使用Endeca Workbence进行配置管理。
整合可以再部署后启用或者禁用,但是启用它会部署一个默认的脚本集,用以通过Endeca Workbence进行整合管理配置。
7、  指定Endeca Workbench的端口号
一般,安装文件假定当前运行的机器就是Workbench host,但这些都是可以再应用部署后重新配置的。
8、  安装文件可以被配置,用来促进用户指定部署的自定义信息。
一般,Dgraph部署使用这个功能,去让用户指定Dgraph和Log Server的端口号。然后Agraph部署总是要求Agraph(和Forge Server,如果使用Parallel Forge)端口号。
 
如果应用文件夹已经存在,该安装脚本会将已存在的目录存档,以避免意外损失数据。例如,如果安装文件发现C:\Endeca\apps\MyApp已经存在,那么它就会将已存在的目录重名为C:\Endeca\apps\MyApp.[timestamp].bak。并且安装新的部署到一个新的MyApp目录中。注意:在一个使用大量磁盘空间的部署情况中,移除出档的部署文件夹以释放磁盘空间是很重要的。
 

配置一个自动化或基于的部署

安装脚本提供了一个基于文件配置的选项,以简化Deployment Template的部署和安装。当相同的部署过程会被执行多遍的时候,在开发过程中这个非常有用。
在conf文件夹下提供了一个样本配置文件。该安装配置文件需要指定部署类型,应用名称和部署路径。接下来例子中指定了Dgraph部署的安装,启用Workbench整合(integration):

<install app-name=”MyApp”>
  <deployment-path>C:\Endeca</deployment-path>
  <base-module type=”dgraph”/>
  <options>
    <option name=”eac-port”>8888</option>
    <option name=”workbench-enabled”>true</option>
    <option name=”workbench-prot”>8006</option>
    <option name=”dgraph1Port”>15000</option>
    <option name=”dgraph2Port”>15001</option>
    <option name=”logserverPort”>15010</option>
  </options>
</install>

 
接下来的例子指定了Agraph部署的安装,启用了Parallel Forge并且禁用了Workbench integration:

<install app-name=”MyApp”>
  <deployment-path>C:\Endeca</deployment-path>
  <base-module type-“agraph”/>
  <options>
     <option name-“eac-port”>8888</option>
     <option name-“workbench-enabled”>false</option>
     <option name-“paralled-forge”>true</option>
     <option name-“dgraph1Port”>15000</option>
     <option name-“dgraph2Port”>15001</option>
     <option name-“agraph1Port”>14000</option>
     <option name-“agraph2Port”>14001</option>
     <option name-“forgeServerPort”>14099</option>
     <option name-“logserverPort”>15010</option>
  </options>
</install>

 
如何指定一个安装配置文件
 
通过指定deploy.bat的—install-config标志,去指定一个安装配置文件。
下面的例子指定了Windows安装脚本的参数
deplymentTemplate-[VERSION]\bin\deploy.bat –install-config ..\conf\install_config.xml
 
当一个配置文件指定给一个安装程序后,部署尝试且从之前处理的文档中接收并验证所需信息。如果有任何信息丢失或者无效,安装程序会提示,就像之前章节中描述的那样。为了真正自动化安装过程,可以通过–no-prompt标志,指示如果有任何信息丢失导致失败(不带错误消息)并且绕过Endeca version的交互式确认。
 

自定义应用

该节提供了关于部署自定义应用的信息。

自定义应用描述符

Deployment Template安装程序是通过描述关于部署的目录结构的应用描述符XML文档和安装过程中要分发的文件,这两者驱动的。
一般,安装程序是同针对Agraph和Dgraph部署的应用描述符文件一起被预置的。这些描述符文件,是由EAC Development Toolkit支持的,位于conf文件夹下。
该文档描述了部署的目录结构和在安装过程中需要拷贝那些文件到新的目录中。此外,该文档说明了文件是否与windows部署或者unix部署相关联,是否文件副本需要被更新(通过替换标记,@@TOKEN_NAME@@形式的指定给安装程序的文本)。
下面的标记会默认被安装程序处理
 @@EAC_PORT@@ – EAC Central Server port
 @@Host@@ - 服务器的hostname,其上的部署脚本会被调用。
 @@PROJECT_DIR@@ - 目标部署目录的绝对路径。
 @@ESCAPED_PROJECT_DIR@@ - 目标部署目录的绝对路径只使用正斜线
 @@PROJECT_NAME@@ - 部署应用的名称
 @@ENDECA_ROOT@@ – ENDECA_ROOT环境变量的绝对路径
 @@SCRIPT_SUFFIX@@ – windows是“.bat”,Linux是”.sh”
 @@SLASH@@ – windows为“\”,linux为”/”
 @@PARALLEL_FORGE_ENABLED@@ – “true” or “false”,表示是否在Agraph部署中启用parallel forge。
 @@WORKBENCH_ENABLED@@ -  “true” or “false”,表示是否启用Workbench integration。
 @@WORKBENCH_PORT@@ – Endeca Workbench port。
 
除了这些标记,用户可以在这些文件中指定自定义的标记去代替。标记在应用描述符文件中指定,包括标记用户替代的名称,和用来提示用户的问题或者是用于接收标记可替代值的安装程序配置选项。默认应用描述符使用该功能去获取Dgraph,Agraph,Log Servers和Forge servers的端口号的。
 
从Deployment Template目录结构中脱离的工程将会发现创建一个自定义的应用描述符文档时非常有用的,可以使Deployment Template安装程序会继续用于应用部署。
自定义部署描述符也可以用于在一个基本安装上面定义add-on组件。例如,样例应用(如Sample Term Discovery and Clustering应用)就和一个自定义部署描述符文件一同被预装了,该文件说明了附加文件和目录,以可以安装在一个基本的Dgraph部署之上。通过使用deploy.bat,组件可以被安装。通过指定—app参数,配上应用描述符文档的地址。
例如:
Deploy.bat –app C:\Endeca\Solutions\sampleTermDiscovery – [VERSION]\data\deploy.xml
 
安装程序提示你去指定是否应该将该组件作为独立安装,或者是否需要安装在基本Dgraph部署之上。多个add-on组件可以被指定给安装脚本,尽管他们中只有一个是基础安装(除了这个外,其他都需要制定一个属性update=”true”)。
下面的摘录来自Dgraph部署应用描述符,其制定了文档的元素和属性:

<!--
  Deployment Template installer configuration file. This file defines the
directory structure to create and the copies to perform to distribute files
into the new directory structure.

  The update attribute of the root install element indicates whether this
is a core installation or an add-on module. When set to false or unspecified,
the installation requires the removal of an existing target install direc¬
tory (if present). When update is set to true, the installer preserves any
existing directories, adding directories as required and distributing files
based on the specified copy pattern.
-->

<app-descriptor update="false" id="Dgraph">

  <custom-tokens>
    <!-- Template custom token:
      <token name="MYTOKEN">
        <prompt-question>What is the value to substitute for token MYTOKEN?</prompt-question>
        <install-config-option>myToken</install-config-option>
        <default-value>My Value</default-value>
      </token>

    This will instruct the installer to look for the "myToken" option
    in a specified install config file (if one is specified) or to
    prompt the user with the specified question to submit a value. If a
    value is entered/retrieved, the installer will substitute instances
    of @@MYTOKEN@@ with the value.
    -->
  </custom-tokens>

  <dir-structure>
    <!-- Template directory:
      <dir platform="unix" primary="true"></dir>
      primary        builds directory only on primary server installs
      platform       builds directory only on specified platform.
                        Valid values: "win" and "unix"
    -->
  </dir-structure>
  <!—
  Copy source directory is specified relative to this file's directory
  - ->
  <copy-pattern src-root="../data ">
    <!-- Template copy pattern:
      <copy clear-dest-dir="true" recursive="true"
           preserve-subdirs="true" filter-files="true"
           primary="true" platform="win" endeca-version="480">
       <src-dir></src-dir>
       <src-file></src-file>
       <dest-dir></dest-dir>
  </copy>
  src-dir     source directory, relative to root of deployment
               template package.
  src-file     source filename or pattern (using '*' wildcard
               character) to copy from source dir
  dest-dir    destination directory, relative to root of target
               deployment directory.
  clear-dest-dir   removes all files in target dir before copying
  recursive   copies files matching pattern in subdirectories
               of the specified source dir
  preserve-subdirs   copies files, preserving dir structure. Only
                     applicable to recursive copies
  filter-files     filters file contents and file names by replacing
                tokens (format @@TOKEN@@) with specified strings.
  mode        applies the specified permissions to the files
                after the copy. Mode string should be 3 octal
                digits with an optional leading zero to
                indicate octal, e.g. 755, 0644. Not relevant
                for Windows deployments.
  platform      applies copy to specified platform. Valid
                  values: "win" "unix"
  endeca-version  applies copy to specified endeca version Valid
                   values: "460" "470" "480" "500"
    -->
  </copy-pattern>
</app-descriptor>

为自定义应用配置一个自动执行或基于文件的部署

在先前章节讨论过的安装配置文件可以用来指定自定义应用描述符文档的地址,该地址在—app处的作为命令行参数传给安装程序。
下面的例子说明了如何在基础Dgraph部署之上安装Sample Term Discovery and Clustering应用。

<install app-name=”MyApp”>
  <deployment-path>C:\Endeca</deployment-path>
  <base-module type=”dgraph”/>
  <additional-module type=”custom”>
     C:\Endeca\Solutions\SampleTermDiscovery-[VERSION]\data\deploy.xml
  </additional-module>
  <options>
    <option name=”eac-port”>8888</option>
    <option name=”workbench-enabled”>false</option>
    <option name=”dgraph1Port”>15000</option>
    <option name=”dgraph2Port”>15001</option>
    <option name=”logserverPort”>15010</option>
  </options>
</install>

 

使用和开发

一旦安装,Deployment Template就包括所有脚本和配置文件需要创建一个索引并且启动一个MDEX Engines的聚集。
该模板包括pipeline配置文件和从sample_winde_data参考项目(由Endeca Platform Services预装)获取的数据。模板也包括一个pipeline配置,该配置是针对文件系统和CMS抓取。下面的章节记述了配置一个已经运行着你的应用的已经安装完成的部署的过程。
 

显示Deployment Template版本

你可以通过命令行显示Deployment Template的版本号
runcommand脚本有一个—version标志,该标志用于显示Deployment Template的版本号(当存在时)。该命令实际上显示的是EAC Development Toolkit的版本号。
如果你不得不要向Endeca Support反映Deployment Template的问题,显示版本是很重要的。
如何显示Deployment Template的版本
1、  windows下,使用命令提示符,切换到[appdir]\control目录。
2、  运行runcommand脚本,使用—version标志,例如:C:\Endeca\Apps\control>runcommand –version
该命令显示了版本,形如:
EAC Toolkit:3.1.734 – 2009-05-18T08:11:11-0400
第三个数字(本例中是“734”)是build number,接下来是build的时间。
 

配置一个应用

该部分会通过以下步骤引导你配置运行你应用的部署。
1、  开启部署环境中每台服务器的EAC。
如果是windows部署,要保证Endeca HTTP Service运行,它是包含在EAC中的父服务。工作目录中的文件为EAC指定了设置,包括EAC Central Server的端口和EAC Agent server端口(所有服务器上的,包括主服务器)以及EAC的SSL设置。
如果该应用向整合Endeca Workbench,要保证Workbench运行着。
2、  编辑[appdir]/config/script中的Appconfig.xml文件,以反映你环境的细节。确切地说:
a)保证app元素的eacHost和eacPort属性指向正确的EAC Central Server的host和port
b)保证host元素指向正确的host name或者names,以及你环境中所有EAC Agents的EAC ports
c)保证ConfigManager组件指向正确的Endeca Workbench的host和port,要么禁用Endeca Workbench。
此外,检查host和port的设置,你应该配置组件(例如,添加或移除Dgraph,为了为你的应用添加一个合适的Dgraph聚集),如果需要调节过程标志,并且为每个Dgraph和Logserver选择合适的端口。
3、  运行initialize_services脚本去初始化部署环境中的每台服务器,通过使用目录以及承载你应用所需的配置。
该脚本会移除任何已存在与EAC中的该应用相关的提供,然后向EAC中添加hosts和你提供文档中的组件,在所有服务器上创建这些组件会用到的目录结构。此外,如果Workbench integration启用,该脚本通过上载应用的配置文件去初始化Endeca Workbench。
在windows:[appdir]\control\initialize_services.bat
当运行该脚本的时候一定要注意。该脚本会强行停止运行任何你为该应定义的组件,如果在一个运行环境下执行的话,会导致服务中断。该脚本也会移除所有当前的Workbench配置并且移除任何没有在[appdir]/config/pipeline中的规则。
4、  上载forge_input配置到主服务器。
替换[appdir]/config/pipeline中的sample wine的配置文件,这些配置文件是使用Develper Studio创建的。更多关于插入你自定义工程的pipeline到Deployment Template的细节,请参看Inserting a Custome Pipeline。
5、  如果必须,可以上传新的源文件到主服务器
替换[appdir]/test_data/baseline中的sample wine数据(wine_data.txt.gz),作为你应用的数据。类似地,替换[appdir]/test_data/partial中的partial update数据,作为你应用的增量数据。
如果你的应用不使用数据提取,该步骤不是必须的。(例如,你的应用通过ODBC或JDBC从数据库、又或者从CAS crawl中直接接收数据)就如这个,从[appdir]/test_data/baseline中移除wine_data.txt.gz。
如果不需要定制脚本,应用现在就已经可以使用了。在开发过程中,使用load_baseline_test_data脚本去模拟数据提取过程(或数据读取信号,此例应用使用了非提取数据源)。该脚本传递[appdir]/test_data/baseline中的数据提取,并且运行set_baseline_data_ready_flag脚本,该脚本在EAC中设置了一个标志,表示该数据已经提取并且已准备好baseline update过程。在生产环境中,该步要用一个数据提取过程代替,该数据提取过程传递提取到incoming目录并且在EAC中设置”baseline_data_ready”标志。该标志可以使用web service的方式调用,或运行set_baseline_data_ready_flag脚本。
 
运行样例baseline update脚本
运行样例测试脚本区创建你的第一个索引和启动部署环境中的MDEX Engines
如何运行baseline update:
1、运行load_baseline_test_data脚本
Windows上为[appdir]\control\load_baseline_test_data.bat
2、运行baseline_update脚本
windows上为[appdir]\control\baseline_update.bat
 
运行样例增量更新脚本
除了baseline update脚本,Deployment Template还提供了样例增量更新脚本集。
如何运行增量更新:
1、  运行load_partial_test_data脚本
Windows上为[appdir]\control\load_partial_test_data.bat
2、  运行partial_update脚本
Windows上为[appdir]\control\partial_update.bat
 
与启用SSLde EAC通信
Deployment Template提供在EAC中启用SSL。具体地说,模板可以安全地与EAC Central Server通信。
更多关于在EAC Central Server或Agent中启用SSL的细节,可以参考Endeca Security Guide。
如何使用启用SSL的Central Server的模板
1、  更改runcommand.bat/.sh去加载你的SSL的keystore和truststore。
注意:为了让你的EAC启用安全通信,你必须已经根据文档创建了一个java的keystore和truststroe,包含你生成的证书。上传一份这些证书的副本到Deployment Template脚本将会运行的服务器。编辑runcommand文件以指定这些文件的地址。
Windows上,编辑runcommand.bat,添加上下列行:

...
set JAVA_ARGS=%JAVA_ARGS% "-Djava.util.logging.config.file=%~dp0..\con¬
fig\script\logging.properties"
if exist [\path\to\truststore] (
set TRUSTSTORE=[\path\to\truststore]
) else (
echo WARNING: Cannot find truststore at [path\to\truststore]. Secure
EAC communication may fail.
)
if exist [\path\to\keystore] (
set KEYSTORE=[\path\to\keystore]
) else (
echo WARNING: Cannot find keystore at [\path\to\keystore]. Secure
EAC communication may fail.
)
set JAVA_ARGS=%JAVA_ARGS% "-Djavax.net.ssl.trustStore=%TRUSTSTORE%" "-
Djavax.net.ssl.trustStoreType=JKS" "-Djavax.net.ssl.trustStorePass¬
word=[truststore password]"
set JAVA_ARGS=%JAVA_ARGS% "-Djavax.net.ssl.keyStore=%KEYSTORE%" "-
Djavax.net.ssl.keyStoreType=JKS" "-Djavax.net.ssl.keyStorePassword=[key¬
store password]"
set CONTROLLER_ARGS=--app-config AppConfig.xml
...

这些以粗体显示的行表示需要添加的新代码。注意:最后的两新行(以”set JAVA_ARGS”开头的被封装了,为了适应文档的页面尺寸,但这两行中的任意一行都没有换行。还要注意:你需要填充keystore和truststore文件的位置和密码)
2、 在Appconfig.xml文档的app元素中,更新sslEnabled属性为true。
3、 指定EAC的SSL-enabled连接器
Endeca HTTP service使用了独立的连接器(一个独立的端口,有效地)以进行安全通信。例如,默认的非SSL连接器时使用8888端口,默认的SSL连接器监听8433端口。该SSL端口应该在AppConfig.xml文件的app元素中的eacPort属性中指定。
4、 为hosts指定一个非SSL连接器
内部来说,EAC Central Server总是使用Agents初始化通信,通过使用非SSL连接器通信。当Agent是启用SSL的话,非安全的端口重定向通信到安全端口。在以上两种情况中,要为提供的hosts合理配置指定非安全端口。
5、 为Endeca Workbench指定非SSL连接器
在ConfigManager组件中,webStudioPort属性(property)应为Endeca Tools Service指定非安全连接器,当Endeca Workbench configuration store的通信器总是使用非安全的通道的时候。
 
下面摘录自AppConfig.xml文档,显示了一个启用SSL应用的样例配置。

<!—
#########################################################################
# Global variables
#
-->
<app appName="MySslApp" eacHost="host-lt1" eacPort="8443"
dataPrefix="MySslApp" sslEnabled="true" lockManager="LockManager">
<working-dir>C:\Endeca\Apps\MySslApp</working-dir>
<log-dir>./logs</log-dir>
</app>
<!--
########################################################################
# Servers/hosts
#
-->
<host id="ITLHost" hostName="myhost1.company.com" port="8888" />
<host id="MDEXHost" hostName="myhost2.company.com" port="8888" />

 

自定义

Deployment Template标准的安装过程和脚本操作已经足够支持大多数项目的操作需求了。一些应用需要通过自定义化去启用自定义处理步骤,脚本行为,或甚至目录结构改变。
我们鼓励开发者使用模板,去作为自定义化的起点。模板提供的脚本和元件 加入到了关于同步、归档和更新处理的Endeca最佳实践推荐。Deployment Template会提供一个已有的开发标准集,以便让开发者针对项目需要能灵活的定制脚本。
下面的列表说明了一系列定制方法,这些方法可以用来实现扩展已有功能或向模板中添加新的功能。进一步节关于配置和自定义化的的细节都在AppConfig.xmlendangered中,可参考附录A(”EAC Development Toolkit”)
a)配置AppConfig.xml – 最简单形式的配置是通过编辑AppConfig.xml配置文档改变组件行为或添加或移除组件。这类配置包括针对主聚集移除Dgraphs或甚至创建一个附加聚集。此外,这分类包括调整处理参数(例如,为Forge处理添加一个java的classpath,以使用Java Manipulator)、定制属性和目录(例如,改变索引服务器上所存的索引存档的数量)。
b)改变已存在BeanShell脚本的行为 – 脚本是以java脚本语言BeanShell编写的。脚本在AppConfig.xml文档中定义,并且在运行时中由BeanShell翻译器进行翻译。着允许开发人员和系统管理只要通过简单的修改配置文档就可以调整baseline、partial和更新配置的功能。例如,如果一个部署使用JDBC去读取数据到Forge pipeline而不使用提取数据文件,就需要在BaselineUpdate脚本中做以下的修改。
1、 移除接收数据和Forge配置的行:Forge.getData();
2、 插入一个新的copy命令以或者Forge配置,进行处理:

...
// get Web Studio config, merge with Dev Studio config
ConfigManager.downloadWsConfig();
ConfigManager.fetchMergedConfig();

// fetch extracted data files, run ITL
srcDir = PathUtils.getAbsolutePath(Forge.getWorkingDir(),Forge.getConfigDir()) + "/\\*";
destDir = PathUtils.getAbsolutePath(Forge.getWorkingDir(),Forge.getInputDir());

dimensionCopy = new CopyUtility(Forge.getAppName(),Forge.getEacHost(), Forge.getEacPort(), Forge.isSslEnabled());
dimensionCopy.init("copy_dimensions", Forge.getHostId(),Forge.getHostId(), srcDir, destDir, true);
dimensionCopy.run();

Forge.getData();
Forge.run();
Dgidx.run();
...

 
注意:这里声明了BeanSell脚本从classpath中导入了2个类、指向文档中元素的引用变量(例如,Forge,Dgidx)和定义了未指定类型的新变量(如,srcDir,destDir)。关于BeanShell编程详细的内容,可以参看本向导的附录A。
c)编写新的BeanShell脚本 – 某些案例中可能调用会比通过调整现有BeanShell脚本归档更加灵活。在这些例子中,编写新BeanShell脚本可以完成预期的目的。例如,通过将新功能移到独立的脚本将之前的例子扩展,下面的BeanShell脚本可以实现:
 

<script id="CopyConfig">
<bean-shell-script>
<![CDATA[
// fetch extracted data files, run ITL
srcDir = PathUtils.getAbsolutePath(Forge.getWorkingDir(),
Forge.getConfigDir()) + "/\\*";
destDir = PathUtils.getAbsolutePath(Forge.getWorkingDir(),
Forge.getInputDir());
dimensionCopy = new CopyUtility(Forge.getAppName(),
Forge.getEacHost(), Forge.getEacPort(), Forge.isSslEnabled());
dimensionCopy.init("copy_dimensions", Forge.getHostId(),
Forge.getHostId(), srcDir, destDir, true);
dimensionCopy.run();
]]>
</bean-shell-script>
</script>

一旦定义了新的脚本,BaselineUpdate脚本就可以简化为如下:

...
// get Web Studio config, merge with Dev Studio config
ConfigManager.downloadWsConfig();
ConfigManager.fetchMergedConfig();
// fetch extracted data files, run ITL
CopyConfig.run();
Forge.getData();
Forge.run();
Dgidx.run();
...

 
在AppConfig.xml中定义utilites – 对于定制的一个常见的使用情况是添加或调整utility调用功能。我们之前的例子证明了,当Forge实现改变时,需要调用一个新的copy utility。另一些常见的使用情况涉及从shell中调用数据预处理脚本和归档一个文件夹。为了能这么做,Deployment Templat允许utilities可以再AppConfig.xml文档中配置。下面我们设置之前文档中定义的copy utility,使用copy元素:
 
<copy id="CopyConfig" src-host-id="ITLHost" dest-host-id="ITLHost"recursive="true">
<src>./data/complete_index_config/*</src>
<dest>./data/processing</dest>
</copy>
一旦配置了,通过使用相同的命令(之前使用的CopyConfig.run())就可以调用copy utility了。
d)扩展Java EAC Development Toolkit – 在很少的情况中,开发人员可能需要实现复杂的自定义功能,如果在AppConfig.xml文档中实现,这些功能可能难以维护。在这些情况中,开发人员可以扩展toolkit中的对象去创建实现期望功能的自定义的java对象。继续看在前面的例子,开发人员可以实现一个自定义的Forge对象以改变getData()的行为,以简化复制配置无需查询提取数据文件。

package com.endeca.soleng.eac.toolkit.component;
import java.util.logging.Logger;
import com.endeca.soleng.eac.toolkit.exception.*;
public class MyForgeComponent extends ForgeComponent
{
private static Logger log =
Logger.getLogger(MyForgeComponent.class.getName());
protected void getData() throws AppConfigurationException,
EacCommunicationException, EacComponentControlException,
InterruptedException
{
// get dimensions for processing
getConfig();
}
}

 
显然,这只是随便自定义的,简单到无法成为一个用于开发的新类。
但是,该方法可以用于重写toolkit中大多的方法的功能或实现一个新方法。
为了使用新的功能,开发人员需要编译新的类,并且确保调用脚本时候该类会包含在classpath中。做这些最简单的方式是部署编译后的.class文件到[appdir]/config/script文件夹中。一旦在classpath上,新的组件就可以在默认的Forge组件处被加载,通过对AppConfig.xml中的Forge配置做一下处理就可以。

<forge class="com.endeca.soleng.eac.toolkit.component.MyForgeComponent" id="Forge" host-id="ITLHost">
...
</forge>

 
一些自定义化的类型将需要更多复杂的配置。参考附录A(”EAC Development Toolkit”)关于在AppConfig.xml文档中使用Spring Framework命名空间配置自定义Java类





 » 订阅本站:RSS订阅

发表评论

您也可以使用微博账号登陆

无觅相关文章插件,快速提升流量