可以使用以下任一方法来通知传统服务。
如果软件服务器的源代码可用,则可引入 SLP SA。用于 SLP 的 C 和 Java API 使用起来相对简单。有关 C API 的信息和有关 Java API 的文档,请参见手册页。如果服务是硬件设备,则制造商可能会有可引入 SLP 的更新 PROM。有关更多信息,请与设备制造商联系。
如果没有源代码或包含 SLP 的更新的 PROM,则可编写一个使用 SLP 客户机库通知服务的小型应用程序。此应用程序可用作小型守护进程,可在用来启动和停止服务的同一 Shell 脚本中启动或停止。
Solaris slpd 支持用代理注册文件通知的传统服务。代理注册文件是可移植格式的服务通知的列表。
在主机文件系统或可通过 HTTP 访问的任何网络目录中创建代理注册文件。
确定是否存在用于该服务的服务类型模板。
模板是对服务 URL 和服务类型的属性的说明。模板用于为特定服务类型定义通知的组成部分:
如果存在服务类型模板,请使用该模板来构造代理注册。有关服务类型模板的更多信息,请参见 RFC 2609。
如果没有该服务的服务类型模板,请选择可以准确描述该服务的属性集合。请对通知使用命名授权而非缺省设置。缺省的命名授权只允许用于已标准化的服务类型。有关命名授权的更多信息,请参见 RFC 2609。
例如,假设一个名为 BizApp 的公司有一个用于跟踪软件缺陷的本地数据库。为通知该数据库,该公司可能使用服务类型为 service:bugdb.bizapp 的 URL。命名授权将为 bizapp。
执行以下步骤,以配置 /etc/inet/slp.conf 文件(此文件位于前面步骤创建的注册文件的位置)中的 net.slp.serializedRegURL 属性。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
停止 slpd 和主机上的所有 SLP 活动。
# svcadm disable network/slp |
在 /etc/inet/slp.conf 文件的 net.slp.serializedRegURL 属性中指定代理注册文件的位置。
net.slp.net.slp.serializedRegURL=proxy registration file URL |
例如,如果串行化的注册文件是 /net/inet/slp.reg,则可按如下所示来配置属性:
net.slp.serializedRegURL=file:/etc/inet/slp.reg |
保存更改并关闭文件。
# svcadm enable network/slp |
服务通知由标识服务 URL、可选范围和一系列属性定义的行构成。SLP 守护进程将完全按照与 SA 客户机相同的方式来读取、注册和维护代理通知。下面是来自代理注册文件的通知的示例。
在此示例中,通知了支持 LPR 协议和 FTP 服务器的传统打印机。为了便于说明,添加了行号,但它们不是文件的构成部分。
(1) #Advertise legacy printer. (2) (3) service:lpr://bizserver/mainspool,en,65535 (4) scope=eng,corp (5) make-model=Laserwriter II (6) location-description=B16-2345 (7) color-supported=monochromatic (8) fonts-supported=Courier,Times,Helvetica 9 10 (9) (10) #Advertise FTP server (11) (12) ftp://archive/usr/src/public,en,65535,src-server (13) content=Source code for projects (14) |
对于转义非 ASCII 字符,代理注册文件与配置文件支持相同的约定。有关代理注册文件格式的更多信息,请参见 RFC 2614。