2. GDA安装

2.1. 介绍

本节将概述GDA安装和配置GDA的各种方式。

2.2. 安装文件夹结构

按照快速入门指南并使用可从opengda网站下载的示例,目录结构将包含以下文件夹:

builder

包含编译源代码以及从IDL源代码构建客户端和CORBA java代码的脚本。

文档

包含文档源。通过运行以下命令编译此代码 make all 。各种形式的编译文档将放在名为Build的子文件夹中。

示例-配置

包含示例配置。Configuartion文件夹具有标准结构,下面将对其进行说明。

特征

标准Eclipse Java IDE工作区目录。包含 特征 项目。

许可证

GDA中使用的第三方软件的许可信息。

插件

标准Eclipse Java IDE工作区目录。包含 插件 项目。

第三方

包含编译GDA所需的一些第三方软件。此软件由GDA引用 建立目标 它应该在从Eclipse IDE编译源代码时设置。这将由构建脚本自动引用。

对于新开发人员来说,最感兴趣的文件夹可能是example-config,需要在其中定义特定于光束线的配置。

2.2.1. 添加新插件或现有插件

创建新插件时,插件项目必须位于插件目录中,否则构建和启动脚本将无法正常工作。

通过运行导入向导,可以将现有插件从Eclipse IDE导入到工作区:File->Import.->General->Existing Projects。确保 复制到工作区 复选框处于选中状态。导入项目后,如果尚未将其放入插件文件夹,请执行Refactor->Move.要重新定位新插件项目,请执行以下操作。

2.3. 配置文件夹结构

建议您使用 新型配置目录结构 如下所述。

example-config遵循标准文件夹结构。由于目录中的子文件夹的位置是从java属性假定的,因此需要遵循此结构 gda.config .

配置目录的内容为:

CSS

CSS概要透视图的配置文件。(仅限RCP客户端)

查找表

使用查找表的可扫描对象的查找表的位置。

性质

Java、Jacorb和JCA(Epics API)属性文件。Jacorb文件必须放在名为“etc”的子文件夹中。

脚本

特定于光束线的Jython脚本的位置

用户

对于示例-config,包含日志文件、用户脚本,并且是数据将写入的位置。这些文件很可能希望放在其他位置。使用Java属性定义这些类型的文件所在的目录。有关这些Java属性的更多信息,请参阅后面的部分。

var

用于在GDA运行时更改的文件。

XML

定义ObjectServer进程内容的XML文件。

对于新的开发人员来说,当开始使用GDA时,最感兴趣的项目可能是用于定制文件夹位置等的java.properties文件和用于定制表示硬件的对象的ObjectServer XML文件。

2.3.1. 文件权限

var和users目录可能需要来自gda安装的睡觉的更广泛的权限,以允许任何用户运行的进程编辑这些目录中的文件。

建议在生产环境中使用GDA安装之外的var目录,因为保存在那里的一些文件可能需要在不同版本的GDA中一致使用。这使得升级到新的GDA版本变得更容易。

2.3.2. 新型配置目录结构

从8.10版本开始,GDA将转向一种新的、更显式的配置目录结构,以支持在不同的运行模式、服务器和客户端配置文件之间轻松切换。有关此新配置布局的简要说明,请参阅 here .

下面是此新配置布局的示例,扩展为包括用于日志记录、EPIC、授权等的配置:

config
	|-- clients
	|  	|-- main
	|  	|	|-- dummy
	|  	|  	|  	|-- client.xml
	|  	|  	|-- live
	|  	|	|  	|-- client.xml
	|  	|  	|-- main-common.xml
	|  	|-- rcp
	|  	|  	|-- dummy
	|  	|  	|	|-- client.xml
	|  	|  	|-- live
	|  	|  	|  	|-- client.xml
	|  	|  	|-- rcp-common.xml
	|  	|-- clients-common.xml
	|  	|-- commandQueueProcessor.xml
	|-- epics
	|  	|-- dummy
	|  	|  	|-- BL11I-gda-interface.xml
	|	|  	|-- epics.properties
	|	|-- live
	|	|	|-- BL11I-gda-interface.xml
	|	|	|-- epics.properties
	|-- jacorb
	|  	|-- dummy
	|  	|	|-- etc
	|  	|	|	|-- jacorb.properties
	|  	|-- live
	|	|	|-- etc
	|	|	|	|-- jacorb.properties
	|-- jca
	|	|-- dummy
	|	|	|-- JCALibrary.properties
	|	|-- live
	|	|	|-- JCALibrary.properties
	|-- logging
	|	|-- dummy
	|	|	|-- LogServer.xml
	|	|	|-- log.properties
	|	|-- live
	|	|	|-- LogServer.xml
	|	|	|-- log.properties
	|	|-- LoggingConfiguration.xml
	|	|-- logPanel.xml
	|-- lookupTables
	|-- permissions
	|	|-- beamlinestaff.xml
	|	|-- user_permissions.xml
	|-- properties
	|	|-- dummy
	|	|	|-- java.properties
	|	|-- live
	|	|	|-- java.properties
	|	|-- beamline.properties
	|	|-- gda.properties
	|	|-- jaas.cclrc.conf
	|-- scripts
	|	|-- localStation.py
	|-- servers
	|	|-- main
	|	|	|-- dummy
	|	|	|	|-- .....
	|	|	|	|-- server.xml
	|	|	|-- live
	|	|	|	|-- .....
	|	|	|	|-- server.xml
	|	|	|-- simulation
	|	|	|	|-- server.xml
	|	|	|-- .....
	|	|	|-- main_common.xml
	|	|-- CommandServer.xml
	|	|-- commandQueueProcessor.xml
	|	|-- scriptControllers.xml
	|	|-- servers_common.xml
	|-- var
	|	|-- limitsAndOffset
	|	|-- motorPositions
	|	|-- 30.tmp
	|-- buckminster.cspec

clients

客户端对象的Spring配置的位置,它应该有两个配置文件: mainrcp 。每个配置文件应依次包含两种模式: dummylive 。每种模式必须包含 client.xml 文件

epics

GDA-EPICS集成配置的位置(如果需要)(可选),应包含两种模式: dummylive 。其中每一项都应包含EPICS集成规范和 epics.properties .

jacorb

分配给CORBA配置。它必须包含两种模式: dummylive ,它一定有 etc 包含以下内容的目录 jacorb.properties .

jca

EPICS通道接入配置的位置(仅在与EPICS IOC通信时需要)。它必须包含两种模式: dummylive ,它又包含 JCALibrary.properties 文件。

logging

GDA日志记录配置文件的位置。它应该包含两种模式: dummylive 。这些模式中的每一种都有一个 log.propertiesLogServer.xml 日志服务器的配置。可以使对象日志记录和日志查看器配置与模式无关。

lookupTables

使用查找表的可扫描对象的查找表的位置。

permission

GDA对象访问控制的默认用户授权设置的位置(如果启用)。

properties

beamline.properties -定义光束线特定属性; gda.properties -定义GDA通用属性,其中一些引用了其他属性文件中定义的属性; java.properties -定义模式相关自定义的属性。这个 java.properties 文件必须包括其他属性,如以下示例所示:

include=../beamline.properties
include=${gda.config}/logging/dummy/log.properties
include=${gda.config}/epics/dummy/epics.properties
# customisable properties below
gda.var=/${user.home}/${gda.beamline.name}/var
gda.data = /${user.home}/${gda.beamline.name}/data
gda.data.scan.datawriter.datadir = ${gda.data}
gda.device.temperature.datadir 	= ${gda.data}/temperature
gda.users.scripts.dir=/${user.home}/${gda.beamline.name}/scripts
gda.dummy.mode=True
gda.gui.AcquisitionGUI.authorisationMethod = gda.jython.authoriser.FileAuthoriser
gda.server.name=localhost
# custmisable properties above
include=../gda.properties

这个 beamline.properties 必须包含在第一行,即 gda.properties 必须包含在的最后一行 java.properties 文件。

scripts

特定于光束线的Jython脚本的位置。它至少应该包含GDA启动脚本文件 localStation.py .

servers

服务器对象的Spring配置的位置,应至少包含一个 main 配置文件。每个配置文件应依次包含两种模式: dummylive 。每种模式必须包含 server.xml 文件。这个 server.xml 进口 main-common.xml 在父文件夹中,该文件夹定义了可用于所有模式的通用对象配置; main-common.xml 反过来又进口 servers-common.xml 它定义了所有配置文件的公共对象配置。

var

GDA缓存数据目录,用于在GDA运行时更改的文件。

钻石光束线上经常使用的其他目录和文件如下所示:

config
	|-- bin
	|	|-- GDA_RemoteStart_Lin
	|	|-- GDA_ShowLogFile
	|	|-- GDA_StartClient
	|	|-- GDA_StartLogPanel
	|	|-- GDA_StartLogServers
	|	|-- GDA_StartRCP
	|	|-- GDA_StartServers
	|	|-- GDA_Start_GTK
	|	|-- GDA_StopServers
	|	|-- gda_command
	|	|-- gdaclient
	|	|-- gdalog
	|	|-- gdaservers
	|	|-- lookForFile.sh
	|	|-- remotestartupscript.sh
	|	|-- set_facl.sh
	|-- Desktop
	|	|-- DataDispenser.desktop
	|	|-- gda-beamline-manual.desktop
	|	|-- gda-client.desktop
	|	|-- gda-logfile.desktop
	|	|-- gda-logpanel.desktop
	|	|-- gda-servers.desktop
	|	|-- gda-startup-guide.desktop
	|	|-- gda-user-guide.desktop
	|	|-- gda.directory
	|	|-- gda.menu
	|-- doc
	|	|-- images
	|	|	|-- gdadesktoplaunchers.png
	|	|	|-- gdamenulaunchers.png
	|	|-- BLS-I11-MAN-001-v0.5.html
	|	|-- Starting_GDA_Help.html
	|	|-- mythen.doc
	|-- etc
	|	|-- README
	|	|-- gda_environment.sh
	|	|-- i11_profile.sh
	|-- launcherInstaller
	|	|-- beamline.sh
	|	|-- gda_launchers.sh
	|	|-- install-gda-launchers.sh
	|	|-- install-launchers.sh
	|	|-- logout.sh
	|-- launchers
	|	|-- EventServer.launch
	|	|-- Gui.launch
	|	|-- LogPanel.launch
	|	|-- LogServer.launch
	|	|-- NameServer.launch
	|	|-- ObjectServer.launch
	|	|-- RcpPorduct.launch
	|-- pytools
	|	|-- src
	|		|-- fileappender.py
	|		|-- mergecolumns.py
	|		|-- mythenbin.py
	|		|-- mythensum.py
	|		|-- rebin.py
	|		|-- rebin_idl.py

bin

用于启动GDA组件的Shell脚本

Desktop

用于启动GDA组件的Linux桌面文件

doc

特定于光束线的单据

etc

GDA的光束线特定环境

launcherInstaller

用于安装GDA启动器的shell脚本 Applications Linux上的菜单。

launchers

用于GDA组件的Eclipse启动器

pytools

用于在线和离线数据处理的特定于beamline的python脚本。

2.4. 开始开发GDA

给新开发人员的几点注意事项:

  1. 一旦您有了GDA源代码的版本,并且下载/签出了光束线或示例配置,您就可以通过在Eclipse IDE中打开源代码或运行编译脚本进行编译。编译脚本将把编译后的类放在与Eclipse IDE相同的位置。

  2. GDA服务器作为常规Java进程运行,因此使用位于插件和功能目录中的项目中的编译类。

  3. 但是,客户端是一个RCP“产品”,一旦编译,就会在客户端目录内使用自己的编译类(在使用gda-build脚本编译客户端时创建)运行。

  4. 您可以从Eclipse IDE运行客户端,这不会使用客户端目录中的任何源代码或其他文件。这将完全从插件和功能目录中的编译代码运行。

2.4.1. 香草GDA

要让“空的”GDA安装添加您自己的对象,请对example-config进行以下更改:

  1. 删除脚本目录中除localStation.py之外的所有脚本

  2. 删除用户/脚本目录中的所有脚本

  3. 在xml/client/client.xml中,删除注释下面的所有对象

  4. 在xml/server中,删除除server.xml之外的所有文件和子文件夹

  5. 在xml/server/server.xml中,删除文件底部附近的导入