我正在运行 Windows 2003 R2 服务器,其中安装了 IIS 和 ColdFusion。每当服务器重新启动并且 IIS 和 ColdFusion 进程都设置为自动启动时,ColdFusion 都会在 IIS 之前启动,从而阻止 IIS 启动,因为端口 80 存在冲突。每当 ColdFusion 在 IIS 之后启动时,它都可以正常工作。
有什么方法可以延迟一个服务的启动,直到另一个服务启动完毕之后?
任何帮助,将不胜感激!
答案1
您可以将 ColdFusion 服务标记为延迟加载,也可以将 IIS 设为 ColdFusion 的依赖项。依赖项意味着除非 IIS 已启动,否则 ColdFusion 不会启动,而停止 IIS 将停止 ColdFusion。
如果这就是您想要的;在命令提示符下(具有管理权限),键入:
sc config ColdFusionServiceName depend= W3SVC
请注意,in depend 后面的空格=
是故意的,而且很重要。
您可以阅读更多关于sc config depend
这里。
答案2
我还想指出,在正常部署中,哪个先启动并不重要。听起来好像 ColdFusion Server 已将其内部 Web 服务器激活并更改为使用端口 80(而不是默认的 8500)。如果是这样,当 CF 首先启动时,它将使用端口 80,然后 IIS 就没戏了。如果您使用的是 IIS,则应将 ColdFusion 的内部 Web 服务器正在使用的端口更改为其他端口,或完全禁用它。
来自Adobe ColdFusion 9 文档(与 CF 8 相同或相似):
切换内置 Web 服务器的端口
您可以更改内置 Web 服务器运行的端口。更改内置 Web 服务器的端口
备份 jrun.xml 文件。
该文件位于 Windows 中的 cf_root\runtime\servers\coldfusion\SERVER-INF 目录中,以及 UNIX 中的 cf_root/runtime/servers/coldfusion/SERVER-INF 目录中。
打开原始的jrun.xml文件进行编辑。
更改 WebService 端口属性中指定的端口号(靠近文件底部):
<service class="jrun.servlet.http.WebService" name="WebService"> <attribute name="port">8500</attribute> <attribute name="interface">*</attribute> <attribute name="deactivated">false</attribute> ... </service>
注意:确保 deactivated 属性设置为 false。
保存文件,然后重新启动 ColdFusion。