如何在修改底层 Web 服务签名后回收 ColdFusion Web 服务



ColdFusion似乎将其初始请求缓存到Web服务。在修改 Web 服务的签名(例如,向 Web 服务方法添加参数)时,在重新启动"ColdFusion 2016 Application Server"Windows 服务之前,ColdFusion 似乎不知道如何调用该 Web 服务。这使开发复杂化,因为它会在重新启动期间影响所有 ColdFusion 网站,从而有效地清除所有会话。

执行这些 Web 服务的上下文是通过CreateObject方法进行的。

Application.MyWebServiceVariable = CreateObject("webservice", "PATH");

过去,其他人提到使用refreshwsdl论点,因此。

oWsdlArgs = structNew();
oWsdlArgs.refreshwsdl="yes";
Application.MyWebServiceVariable = CreateObject("webservice", "PATH", oWsdlArgs );

遗憾的是,这并不能解决必须重新启动实际 Windows 服务才能使 ColdFusion 刷新其该 Web 服务方法签名的内部缓存的根本问题。

我还可以确认,简单地使用ApplicationStop()重新启动 ColdFusion 应用程序是行不通的。

有没有办法回收 Web 服务签名的此内部缓存,以便开发人员无需重新启动 Windows 服务?

附加说明

在 ColdFusion
  • 9 到 ColdFusion 2016 中显而易见
  • Web 服务基于 SOAP 托管在 IIS 上
  • Web 服务的逻辑位于 DLL 中

如果您使用 createObject 和/或 cfinvoke 调用这些 Web 服务,那么正如您所看到的,CF 会缓存定义。我发现在不重新启动 CF 服务的情况下刷新这些定义的最简单方法是,如果您有权访问 Coldfusion 管理器。

CF Admin -> Data & Services -> Web Services

在那里,您应该看到 CF 缓存的每个 wsdl 的条目,以及用于强制更新它的按钮。

相关内容

  • 没有找到相关文章

最新更新