Repos_copy 是使用集成组件和 InterChange Server 存储库的命令行接口。它允许您将包(集成组件的集合)部署到服务器存储库中,或将组件从存储库中导出至包。
Repos_copy 还用于将组件从先前版本迁移至当前发行版。如果您在使用旧格式的组件,则首先迁移您的组件。有关更多信息,请参阅《WebSphere Business Integration Server Express 安装指南 Windows 版》、《WebSphere Business Integration Server Express 安装指南 Linux 版》或《WebSphere Business Integration Server Express 安装指南 OS/400 和 i5/OS 版》。Repos_copy 不支持 -ar、-arp、-vr、-vp 和 -xCompilePackage,且当使用旧格式的组件时,对“-o”和所有 -xCompile 选项都有限制。
要运行 repos_copy,在 MS-DOS 命令提示符窗口中(Windows)或在 shell 提示符下输入命令。对于 OS/400 和 i5/OS,从命令行输入 QSH 命令,并从 QSHELL 运行 repos_copy.sh 脚本。实用程序所驻留的 ProductDir/bin 目录应该在安装产生的路径中。对于 OS/400 和 i5/OS,缺省情况下,该脚本位于 /QIBM/ProdData/WBIServer44/bin 目录中。
本章具有以下各节:
有关备份系统的更多信息,请参阅 WebSphere InterChange Server: 《系统管理指南》。
表 14 描述 repos_copy 的选项及其实参,并显示选项的正确大小写用法(选项及其实参之间没有空格)。该语法显示,波形括号({})之间的选项表示一组选项,至少需要其中一个选项。如果您未在命令行上指定 -u、-p、-i、-o 或 -s 选项,则 repos_copy 提示您指定它们。如果提示时您未指定它们,则 repos_copy 不会执行。括在方括号([])中的选项是可选的。
Usage:repos_copy [-sserverName][-uusername][-ppassword] | [-ifilename [-ai| -ar| -arp] [-k] [-ncENCODING] [-xcompilepackage] [-xdi] [-xdn][-r[[relationshipName1[:relationshipName2]: ...]|*] ]| [-oJARfilename [-xnoclasses]] | [-eentityType:entityname1[+entityType:entityname2]+... [-deep] [-oJARfilename] ] [-fentityfilename [-deep] [-oJARfilename] ] | [-xCompileAll [-wi] ] | [-xCompileAllCollabs [-wi]] | [-xCompileAllMaps [-wi] ] | [-xCompileCollab:templateName1[+templateName2]+...[-wi] ] | [-xCompileMap:mapName1[+mapName2]+... [-wi] ] | [-mode] | [-d] | [-doentityType:entityname1[+entityType:entityname2]+... [-deep] ] | [-dfoentityType:entityname1[+entityType:entityname2] -deep] | [-summary [-oXML_filename] ] | [-vp [-iJARfilename] ] | [-vr]
选项 | 描述 |
---|---|
-ai |
忽略且不装入在部署包时找到的重复对象(业务对象、映射、关系、协作模板和对象以及连接器)。 |
-ar |
替换在部署包时找到的重复对象(业务对象、映射、关系、协作模板和对象以及连接器)。 |
-arp |
替换重复组件。这是 -ar 选项的交互式版本。如果部署的包中组件已存在于存储库中,则会提示您忽略或替换该组件。 |
-d |
删除存储库中除状态数据以外的组件。使用此选项来从存储库中删除所有组件。 |
-deep |
将该选项与 -e 选项一起使用以包括所有从属组件。如果省略 -deep 选项,则将仅包括使用 -e 选项指定的组件。 |
-dfoEntityType:Entity[+EntityType:Entity2] |
强制删除组件,即使组件具有从属于它的引用目标。此选项仅对于以设计模式运行的服务器的存储库起作用。以生产模式运行的服务器不允许未解析的依赖性和引用。另请参阅 -do 选项。 |
-doEntityType:Entity[+EntityType:Entity2] |
指定要从存储库删除的实体。有关实体类型和关键字的列表,请参阅表 15。如果对象没有引用目标(从属于它的其它组件),则将执行删除。如果对象具有引用目标,则删除将失败并且显示一条消息。该行为在设计模式和生产模式下是相同的。有关以设计模式或生产模式启动服务器的更多信息,请参阅 System Implementation Guide。 |
-eEntityType:Entity1[+EntityType:Entity2...] |
导出一个或多个引用的第一类实体。第一类实体是业务对象、协作对象、协作模板、连接器、数据库连接池、映射或关系。通过指定表 15 中的一个关键字,标识要装入或卸装的实体。 在 EntityType 关键字后面加上冒号(:)和实体的名称。使用“+”以指定多个实体。当与 -o 选项组合时,-e 选项将数据卸装至输出文件。 |
-fentityFile |
与 -e 选项类似,但采用来自文件 EntityFile 的实体名称。该文件应包含对实体的引用,且具有以下条件:
当与
|
-ifilename |
将指定的包文件部署至存储库中。如果您省略输入文件名值,则命令以交互方式提示您输入该输入文件的名称。该文件可以是包含 XML 格式对象的 .jar 文件或包含文本格式对象的 .in 文件。 由 repos_copy 或系统管理器创建的 .jar 文件具有特定的结构,必须维护该结构以便这种文件的任何后续导入成功。因此,您永远都不应该手工修改输入文件。 |
-k |
覆盖 repos_copy 在它要装入的包文件中找到 Mercator 映射时的缺省行为。缺省情况下,repos_copy 在遇到 Mercator 映射时将退出。如果您使用 -k 选项,则 repos_copy 跳过包文件中的任何 Mercator 映射并继续执行部署过程。 |
-mode |
返回服务器的模式。有关 InterChange Server Express 模式的更多信息,请参阅 WebSphere InterChange Server: Implementation Guide for WebSphere InterChange Server。 |
-ncencoding |
有关有效字符编码的列表,请参阅关于 String 类的 Java 文档。 当部署用 InterChange Server Express V4.1.1 创建的存储库时,指定在 4.1.1 环境中使用的字符编码。 |
-ooutfilename |
将存储库中的组件导出到指定的包文件。必须指定包文件的名称。如果文件已存在,则 repos_copy 提示您覆盖它或不覆盖它。输出文件是 .jar 格式,且包含 XML 格式的组件定义以及一些具有这些定义的组件的 .java 源文件。此选项不能与 -i 或 -d 选项组合在一起,它也不能象在先前发行版中一样以文本格式导出组件。Repos_copy 不追加 .jar 扩展名,因此,当指定输出文件的名称时,您必须指定该扩展名。 |
-ppassword |
为使用 -u 选项提供的用户名指定密码。该密码区分大小写。如果您未指定此选项,则 repos_copy 会提示您输入密码。 |
-r* |
导入关系定义而不为它们中的任何一个创建运行时模式。另请参阅 -r 选项。 |
-rrelationshipName1[:relationshipName2] |
将指定的关系定义装入至存储库而不创建其运行时模式。 |
-sserverName |
指定 repos_copy 应该与其交互的 InterChange Server Express 实例的名称。该名称区分大小写。如果未指定服务器名,则该工具提示您输入一个服务器名。 |
-summary |
列示服务器存储库中的组件(它们在输出中标识为“构件”而不是组件)。输出为 XML 格式。您可以将此选项与 -o 选项组合在一起来将输出打印至文件而不是控制台。 |
-uusername |
指定要登录到 InterChange Server Express 的用户名。如果未指定用户名,则 repos_copy 提示您输入用户名。 |
-v |
打印 repos_copy 实用程序执行的程序的版本号。 |
-vp |
验证包文件。服务器对存储库验证包,并确保已解析包中组件之间的依赖性。如果验证未成功,则 repos_copy 打印丢失的依赖性的列表。此选项不会对存储库作出任何更改;它只验证包文件。当使用 -vp 选项时,您还必须使用 -i 选项来指定要验证的包文件。 |
-vr |
验证存储库。输出消息指示验证是否成功。如果验证未成功,则 repos_copy 打印丢失的依赖性的列表。 |
-wi |
不显示在协作模板或映射的编译期间发生的警告消息。将仅显示编译期间发生的错误。例如,此选项允许用户忽略建议不要使用的方法的警告。 |
-xCompileAll |
编译存储库中的所有协作模板和映射。 |
-xCompileAllCollabs |
编译存储库中的所有协作模板。 |
-xCompileAllMaps |
编译存储库中的所有映射。 |
-xCompileCollab:collabTemplateName[+collabTemplateName] |
编译存储库中的指定协作模板。 |
-xCompileMap:nativeMapName[+nativeMapName] |
编译存储库中的指定映射。 |
-xCompilePackage |
通知服务器编译映射和协作模板 Java 文件。如果包中含有预编译的类文件,则不要使用此选项。在生产模式下,除非所有类文件都在包中,否则缺省情况下将选择此选项。有关 InterChange Server Express 模式的完整描述,请参阅 System Implementation Guide。 |
-xnoclasses | 标识当从服务器导出组件时是否要包括类文件。 |
-xdi<deployment_descriptor_file_path> |
此选项使用指定的部署描述符代替存储库文件内的缺省部署描述符。有关 InterChange Server Express 模式的完整描述,请参阅 System Implementation Guide。 |
-xdn |
此选项忽略存储库 .jar 文件内的 .dfg 文件并将部署软件包发送至服务器而不更改属性值。有关 InterChange Server Express 模式的完整描述,请参阅 System Implementation Guide。 |
-xmsp |
此选项导入和导出成员和安全信息,允许您升级而不必重新创建角色和安全策略。有关 InterChange Server 模式的完整描述,请参阅 System Implementation Guide。 |
实体类型 | 关键字 |
---|---|
业务对象 | BusObj |
协作对象 | Collaboration |
协作模板 | CollabTemplate |
数据库连接池 | ConnectionPool |
连接器 | Connector |
映射 | Map |
关系 | Relationship |
本节描述您可以使用 repos_copy 的许多常见情况。它包含以下各节:
您可以不带任何实参运行 repos_copy 以打印该命令及其实参。以下示例显示当不带任何实参运行时的 repos_copy 和结果输出:
No Command line arguments to ReposCopy were specified Usage:repos_copy [ [-sServerName] [-uUserName] [-pPassword] ] | [-iFileName [-ai| -ar| -arp] [-k] [-ncEncoding] [-xcompilepackage] [-xdi] [-xdn] [-r[[RelationshipName1[:RelationshipName2]: ...] |
*] ] | [-oJARfileName [-xnoclasses]] | [-eentityType:EntityName1[+entityType:EntityName2]+... [-deep] [-oJARfileName] ] | [-fENTITYFILENAME [-deep] [-oJARfileName] ] | [-xCompileAll [-wi] ] | [-xCompileAllCollabs [-wi]] | [-xCompileAllMaps [-wi] ] | [-xCompileCollab:TemplateName1[+TemplateName2]+... [-wi] ] | [-xCompileMap:MapName1[+MapName2]+... [-wi] ] | [-mode] | [-d] | [-doentityType:EntityName1[+entityType:EntityName2]+... [-deep] ] | [-dfoentityType:EntityName1[+entityType:EntityName2] -deep] | [-summary [-oXML_FileName] ] | [-vp [-iJARfileName] ] | [-vr]
在将包部署到服务器之前,可以验证组件的包。这非常有用。因为如果您将包部署到生产模式的服务器,则必须解析所有依赖性,否则部署将失败。您不能在系统管理器中验证用户项目或集成组件库来确保满足依赖性,因此,当使用系统管理器进行部署时查明包是否有效的唯一方法是当解析依赖性失败时,尝试部署和使用错误信息。如果包中有许多组件,则这可能是非常耗时的过程。
虽然您不能验证集成组件库,但您可以将它导出至包文件,然后使用 repos_copy 来验证包文件。
要使用 repos_copy 验证包文件,使用 -i 选项来指定要验证的包文件的名称,并使用 -vp 实参来验证它而不是部署它。
例如:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iWebSphereICS420DEVServer.jar -vp
Repos_copy 验证包的内容并显示一条消息来指示是否已解析依赖性。
-i 选项允许您将组件的包部署到存储库。如果您未指定包文件的名称,则将提示您输入它。
以下示例显示正在部署到存储库的名为 WebSphereICS420DEVServer.jar 的文件:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iWebSphereICS420DEVServer.jar
通常,如果包中含有某些协作模板或映射实现 java 文件,但没有相关的类文件,则当将包部署至存储库时,使用 -xcompilepackage 选项。这是因为当这些映射或模板在运行时,类文件必须存在。(参阅编译和创建模式的示例。)
如果预编译的类文件也在包中,则您可以在部署之后直接使用它们而不必在服务器上编译 Java 文件。这会提高性能(因为没有额外的编译时间),但行为与普通部署相同。
以下示例显示正在部署到存储库的名为 WebSphereICS420DEVServer.jar 且带有预编译的类文件的文件:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iWebSphereICS420DEVServer.jar
通常情况下,有一些组件的名称在包文件和存储库中是相同的。在这种情况中,您必须决定是否要用包文件中的组件替换存储库中的组件。-ai 选项指定不应该将重复的组件装入存储库:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iWebSphereICS420DEVServer.jar
如果您要替换存储库中的所有重复的组件,则如以下示例中一样使用 -ar 选项:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iCustomerSyncInterface.jar -ar
您可以使用 -arp 选项来以交互方式替换存储库中的重复组件。这让您决定是否应该替换每个单独的重复组件。
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iCustomerSyncInterface.jar -arp
为了在运行时执行映射和协作,必须编译在存储库中定义的映射和协作模板。为了关系在运行时正常工作,必须创建其模式。
当将组件部署至以生产模式运行的服务器时,将自动编译所有模板并创建所有关系模式。为了部署成功,映射和协作模板的代码必须有效,并且 InterChange Server Express 必须能够与在关系定义的设置中指定的数据库通信。
当将组件部署至以设计模式运行的服务器时,不会自动编译模板;将自动创建关系模式。然而,有一些选项可以用来编译模板,而有一些选项不创建关系模式。
以下示例使用 -xCompilePackage 选项,不使用任何格式的 -r 选项。结果是当部署由 -i 选项指定的包时,将编译映射和协作模板并为关系创建模式:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iWebSphereICS420DEVServer.jar -xCompilePackage
您可能不希望在进行部署时创建关系模式。例如,如果您正在将包从一个环境部署到另一个环境,而未更改关系的属性以在新环境中使用数据库资源,则您要在创建模式之前更改相关属性。以下示例使用 -r* 选项以便不为正在部署的包中的所有关系创建模式:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -iWebSphereICS420DEVServer.jar -xCompilePackage -r*
存储库必须有效,服务器才能成功处理流。使用 -vr 选项来验证服务器存储库,如以下示例所示:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -vr
如果服务器有效,则 repos_copy 将以下输出写入控制台:
Validation Succeeded.All Dependencies Resolved.
如果存储库无效,则 repos_copy 打印必须解析的依赖性的列表。
如果在部署期间已将映射或协作模板部署至存储库而未编译它们,则可以在以后使用 repos_copy 来编译它们。当有许多组件要部署时它很有用,因为部署可能会花费较长时间,而编译可能会使操作花费更长时间。等待部署成功后来执行编译任务,可以减少当发生错误时花费更多的时间来迁移环境的风险。
以下示例显示如何使用 -xCompileAll 选项来编译存储库中的所有映射和协作模板:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -xCompileAll
也有一些选项用来编译任一类型的所有组件。使用
-xCompileAllCollabs 来编译所有协作模板,而使用
-xCompileAllMaps 来编译所有映射。以下示例显示如何使用
-xCompileAllMaps :
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -xCompileAllMaps
正象您可以编译一种类型的所有组件一样,您也可以编译单独的组件。使用 -xCompileCollab 或 -xCompileMap 选项后跟冒号和协作模板或映射的名称来编译单一组件。以下示例将编译名为 CustomerSync 的协作模板:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -xCompileCollab:CustomerSync
repos_copy 提供了几个用于删除存储库中的组件的选项。您可以删除整个存储库、单独组件以及任何引用它们的组件。
使用 -d 选项来删除存储库中的所有组件。以下示例显示语法:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -d
Repos_copy 显示一个提示,询问您是否要删除整个存储库。
如果组件不具有任何引用目标(其它引用它且要求它存在才能在系统中执行其功能的组件),则您可以删除单独的组件。
使用 -do 选项,后跟实体类型、冒号和组件的名称。实体类型列示在表 15 中,以下示例删除名为 Customer 的关系:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -doRelationship:Customer
如果组件具有引用目标(其它引用它且要求它存在才能在系统中执行其功能的组件),则仅当服务器以设计模式运行时,您才能通过使用某些选项来删除组件。
如果组件具有引用目标,则 repos_copy 不允许您使用 -do 选项删除它。必须使用 -dfo 选项来强制删除具有引用目标的组件。强制删除具有引用目标的组件会使存储库处于不一致的状态,以生产模式运行的服务器不允许这样做,因此,此选项仅对设计模式的服务器起作用。以下示例显示如何使用 -dfo 选项来删除 Order 业务对象,而不管系统中的其它组件(如映射和关系)已引用它这一事实:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -dfoBusObj:Order
可以删除具有引用目标的组件的另一个方法是使用 -deep 选项来删除引用目标。此方法删除组件和对它具有引用的所有组件。以下示例显示当使用 -do 选项来删除 Customer 业务对象时如何使用 -deep 选项:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -doBusObj:Customer -deep
此选项与 -dfo 选项不同,由于删除引用目标以及组件将保证存储库保持有效,因此以生产模式运行的服务器支持此选项。但请记住,它可以导致删除许多组件;在执行它之前,您应知道此操作的后果。
-o 选项允许您将组件从存储库中导出到包。必须指定包文件的名称。当单独使用 -o 选项时,会将整个存储库导出到文件,如以下示例所示:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -oWebSphereICS420DEVServer.jar
通过使用 -e 选项,可以指定要导出的单独组件。您必须将 -e 选项与列示在表 15 中适当的 EntityType 关键字配合使用,且必须在关键字后面加上组件的名称。通过用加号(+)并置组件,可以指定多个组件。在以下示例中,Customer 业务对象和 CustomerSync 协作模板将导出到名为 CustomerSyncInterface.jar 的包。
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -eBusObj:Customer+CollabTemplate:CustomerSync -oCustomerSyncInterface.jar
通常,映射和协作模板的类文件也将随它们的 Java 文件导出至包文件中。如果您不需要它们,则使用 -xnoclasses 选项来忽略这些类文件,例如:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -oWebSphereICS420DEVServer.jar -xnoclasses
您还可以使用 -deep 选项来导出组件的依赖性。在先前示例中,导出了 Customer 业务对象,但未导出其任何子业务对象。以下示例使用 -deep 选项来导出 CustomerSync_ClarifyToSAP 协作对象及其所有依赖性。
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -eCollaboration:CustomerSync_ClarifyToSAP -oCustomerSyncInterface.jar -deep
如果您要导出特定组件,但不想输入实体类型关键字和组件名,则可以将它们存储在文本文件中并使用 -f 选项。当您要经常导出相同组件时,此选项非常方便。以下示例使用 -f 选项来将列示的组件装入名为 Components.txt 的文本文件中:
C:\WebSphereICS420DEV>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -fComponents.txt -oCustomerSyncInterface.jar -deep
文件 Components.txt 的内容显示如下;每个实体类型关键字和名称组合后跟一个段落回车:
BusObj:Customer Relationship:Customer CollabTemplate:CustomerSync
当执行 repos_copy 来打印存储库中组件的列表时,可以使用 -summary 实参。将以 XML 格式显示输出。尽管在命令行上查看不是特别有用,但您可以将 -summary 实参与 -o 实参组合在一起来将输出重定向至文件,然后在浏览器中或 XML 编辑器中查看文件。在这种情况下,命令的用法如下:
C:\>repos_copy -sWebSphereICS420DEVServer -uadmin -pnull -summary -oRepository.xml
repos_copy 实用程序从存储库读取元数据并将数据以 Unicode(UTF-8 格式)的形式写出至文件。它还读取这样的文件并将它们以 Unicode(UTF-8 或 UCS-2,由底层存储数据库指示)的形式装入存储库。
仅当组件调度的日期和时间是完全美国格式时,才可以将使用比 4.1.1 更低的 InterChange Server Express 版本级别创建的 Repos_copy 文件正确装入存储库。(这通常不是问题。Repos_copy 仅以完全美国格式保存所有调度日期。如果已手工编辑 repos_copy 文件,可能会引起不兼容问题。)
另外,当部署 4.1.1 存储库时,确保指定用“-nc”选项编码的字符。