Software AG的webMethods 集成服务器具有称为文件轮询端口的内置功能,您可以将其配置为监视本地或网络共享目录中的新文件。Integration Server 管理员指南中有关如何设置文件轮询端口的说明如下:
文件轮询端口定期轮询监视目录是否有文件到达,然后对它们执行特殊处理。当它检测到一个新文件时,服务器将文件复制到一个工作目录,然后针对该文件运行一个特殊的文件处理服务。该服务可能会解析、转换和验证文件,然后将其写入文件系统。您编写的这个服务是唯一可以通过这个端口调用的服务。您可以通过过滤特定文件名来限制服务器接受的文件。
要使文件轮询起作用,您必须执行以下操作:
在集成服务器上设置监控目录。用于文件轮询的其他目录由 Integration Server 自动创建。
编写文件处理服务并使其可用于集成服务器。有关此类服务的示例,请参阅
webMethods 服务开发帮助和平面文件模式开发人员指南。
在 Integration Server 上设置文件轮询端口。
使用以下过程将文件轮询端口添加到 Integration Server。
如果尚未打开 Integration Server Administrator,请打开它。
在导航面板的安全菜单中,单击端口。
单击添加端口。
在屏幕的添加端口区域中,选择 webMethods/FilePolling。
单击提交。Integration Server Administrator 会显示一个请求端口信息的屏幕。
在包下,输入以下信息:
包名称 - 与此端口关联的包。启用包时,服务器会启用端口。当您禁用软件包时,服务器会禁用该端口。
如果您正在执行特殊文件处理,请指定包含执行该处理的服务的包。如果要从该端口处理平面文件,请选择 WmFlatFile,其中包含可用于处理平面文件的内置服务。
注意:如果您复制此包,无论是复制到同一台机器上的服务器还是另一台机器上的服务器,都会在目标服务器上创建一个具有相同设置的文件轮询端口。如果目标服务器上已存在文件轮询端口,则其设置保持不变。如果原始服务器和目标服务器位于同一台机器上,它们将共享同一个监控目录。如果目标服务器驻留在另一台机器上,默认情况下,将在目标服务器的机器上创建另一个监控目录。
别名 - 端口的别名。别名的长度必须介于 1 到 255 个字符之间,并且包括以下一项或多项:ASCII 字符、数字、下划线 (_)、句点 (.) 和连字符 (-)。
描述 - 端口的描述。
在轮询信息下,输入以下信息:
监控目录 - 集成服务器上要监控文件的目录。
工作目录(可选)- 集成服务器上的目录,服务器应在监控目录中识别文件后将文件移动到该目录以进行处理。在移动到工作目录之前,文件必须满足年龄和文件名要求。如果未指定目录,则会自动创建默认子目录 MonitoringDirectory..\Work。\
完成目录(可选)- Integration Server 上的目录,当监控目录或工作目录中的处理完成时,您希望将文件移动到该目录。如果未指定目录,则会自动创建默认子目录 MonitoringDirectory..\Done。
错误目录(可选)- 处理失败时您希望将文件移动到的 Integration Server 上的目录。如果未指定目录,则会自动创建默认子目录 MonitoringDirectory..\Error。
文件名过滤器(可选)- 监控目录中文件的文件名过滤器。服务器只处理满足过滤器要求的文件。如果不指定此字段,将轮询所有文件。您可以在此字段中指定模式匹配。
文件年龄(可选)- 可以处理监控目录中的文件的最短时间(以秒为单位)。服务器根据文件在监视目录上的最后修改时间来确定文件年龄。您可以根据需要调整此期限,以确保在将整个文件复制到监控目录之前服务器不会处理文件。默认值为 0。
内容类型 - 用于文件的内容类型。服务器使用与此字段中指定的内容类型相关联的内容处理程序。如果未指定值,则服务器根据文件扩展名执行 MIME 映射。
允许递归轮询 - 集成服务器是否要轮询监控目录中的所有子目录。选择是或否。 启用集群 集成服务器是否应允许在监控目录中进行集群。选择是或否。
每个间隔处理的文件数(可选)- 指定文件轮询侦听器每个间隔可以处理的最大文件数。当您指定一个正整数时,文件轮询侦听器仅处理来自监视目录的该数量的文件。任何保留在监视目录中的文件都将在随后的时间间隔内进行处理。如果未指定值,则侦听器将处理监视目录中的所有文件。
在 Security 下的 Run services as user 参数中,指定要用于运行分配给文件轮询目录的服务的用户名。单击以查找并选择用户。用户可以是内部用户或外部用户。
在消息处理下,提供以下信息:
启用 - 启用(是)还是禁用(否)此文件轮询端口。
处理服务 - 您希望 Integration Server 为轮询文件执行的服务的名称。当文件被复制到工作目录时,服务器会执行此服务。该服务应该是该端口唯一可用的服务。
重要的!如果您更改文件轮询端口的处理服务,您还必须更改从此端口可用的服务列表以仅包含新服务。请参阅下面的详细信息。
文件轮询间隔 - 您希望 Integration Server 多久(以秒为单位)轮询监视目录中的文件。
仅在目录可用性更改时记录 - 如果选择否(默认),则侦听器将在每次监视目录不可用时记录一条消息。
如果您选择是,侦听器将在以下任一情况下记录一条消息:
目录是 NFS 挂载文件系统 - 用于 UNIX 系统,其中监视目录、工作目录、完成目录和/或错误目录是挂载在本地文件系统上的网络驱动器。
如果选择 No(默认),监听器将调用 Java File.renameTo() 方法将文件从监视目录移动到工作目录,并从工作目录移动到完成和/或错误目录。
如果选择 Yes,监听器将首先调用 Java File.renameTo() 方法将文件从监控目录中移出。如果此方法失败,则监听器会将文件从监控目录复制到工作目录,并从监控目录中删除文件。如果复制操作或删除操作失败,则此操作将失败。将文件从工作目录移动到完成和/或错误目录时,同样的行为也适用。
清理服务(可选)- 要用于清理轮询信息下指定的目录的服务的名称。
Cleanup At Startup - 启动文件轮询端口时是否清理位于 Completion Directory 和 Error Directory 中的文件。
清理文件期限(可选)- 从目录中删除已处理文件之前等待的天数。默认值为 7 天。
清理间隔(可选)- 您希望 Integration Server 检查已处理文件以进行清理的频率(以小时为单位)。默认为 24 小时
最大调用线程数 - 您希望 Integration Server 用于此端口的线程数。键入 1-10 之间的数字。默认值为 10。
单击保存更改。
确保端口的访问模式设置正确,并且文件处理服务是唯一可以从端口访问的服务。
在端口屏幕中,单击刚刚创建的端口的访问模式字段中的编辑。
单击将访问模式设置为默认拒绝。
单击将文件夹和服务添加到允许列表。
在每行输入一个文件夹或服务下的文本框中输入此端口的处理服务名称。
从允许列表中删除任何其他服务。
单击保存添加。
注意:如果您更改文件轮询端口的处理服务,请记住同时更改该端口的允许列表。按照上述过程更改允许的服务列表。
如果您更改文件轮询端口的处理服务,请记住也要更改该端口的允许列表。按照上述过程更改允许的服务列表。
上面提到的处理服务是您必须开发的服务。
如果您正在使用文件轮询端口处理 XML 文件,则该文件将在调用您的服务之前被解析,因此您应该创建一个服务,该服务具有一个名为 object 类型的单个输入参数node
(即解析的 XML 文档)。然后,您可以使用 WmPublic 包中的 pub.xml 服务(例如pub.xml:xmlNodeToDocument
将其转换node
为 IData 文档)来处理提供的node
对象。有关 pub.xml 服务的详细信息,请参阅Integration Server 内置服务参考。
如果您正在处理平面文件(不是 webMethods 中的 XML),文件轮询端口将使用 java.io.InputStream 对象调用您的服务,您可以从中读取文件内容,因此您应该创建一个具有称为对象类型的单个输入参数ffdata
。然后可以使用 WmPublic 包中的 pub.io 服务(例如pub.io:streamToBytes
将流中的所有数据读取到字节数组)或 WmFlatFile 包中的 pub.flatFile 服务(例如pub.flatFile:convertToValues
转换ffdata
为 IData 文档)来处理提供的ffdata
对象。有关 pub.io 服务的详细信息,请参阅Integration Server 内置服务参考,有关 pub.flatFile 服务的详细信息,请参阅平面文件架构开发人员指南。
如果将 XML 和平面文件都写入受监视的目录,您可以编写一个服务,该服务可选择同时接受 anode
和ffdata
object 并在运行时检查管道中存在哪个并进行相应处理,或者您可以创建两个文件轮询端口使用端口上的文件名过滤器设置监视同一目录,但检查不同的文件扩展名(即分别为 *.xml 和 *.txt)。
如果要轮询 Windows 文件共享,可以使用文件轮询端口上的UNC文件路径(例如)指定目录。\\server\directory
此外,您需要确保执行集成服务器的用户帐户对文件轮询端口上配置的各种目录具有适当的文件访问权限。