web-services - 修改底层Web服务签名后如何回收ColdFusion Web服务

标签 web-services soap coldfusion

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

这些 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 Administrator。

CF 管理员 -> 数据和服务 -> Web 服务

在此处,您应该会看到 CF 已缓存的每个 wsdl 的条目,以及用于强制更新的按钮。

关于web-services - 修改底层Web服务签名后如何回收ColdFusion Web服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661055/

相关文章:

java - 推荐java框架加载WSDL url/文件,获取方法列表等

java - Axis 故障: "Service class must have public as access Modifier"

iphone - 如何管理 Web 驱动的 Iphone 应用程序中的 session

php - 如何在 php 中使用 soap 调用 Web 服务

soap - Spyne SOAP 服务器的合格元素/属性形式和不合格形式

coldfusion - 添加到现有变量时出现 cfset 问题

php - 本地化:子域、目录或域

java - 如何在 Jersey Web 服务中保留类变量的值

java - Apache Camel RouteBuilder 配置方法

caching - Blue Dragon Coldfusion 服务器缓存问题