【问题标题】:How to recycle ColdFusion web services after modifying underlying web service signature修改底层 Web 服务签名后如何回收 ColdFusion Web 服务
【发布时间】:2019-08-26 15:43:44
【问题描述】:

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

这些网络服务的执行上下文是通过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 中

【问题讨论】:

  • 您的 Web 服务是用 ColdFusion 编写的,还是从 ColdFusion 调用其他(第 3 方)Web 服务?如果是后者,那么这就解释了为什么refreshwsdl 不起作用。这是专门针对用 ColdFusion 编写的 Web 服务的。
  • @Miguel-F 不,Web 服务是用 C# 编写的,编译为 DLL 并通过 IIS 公开,其中 WSDL 直接从 DLL 派生。
  • 多次遇到同样的问题,但不幸的是不记得我发现了什么,如果有的话。我相信 CF 或下面的东西会创建对应于 web 服务对象的 java 类文件。如果你能找到它们,也许可以直接清除它们..
  • 当您使用CreateObject("webservice", ...) 时,我猜您将Web 服务数据存储在CFAdmin 中。能否在调用 CreateObject 时直接提供 WSDL 的地址?
  • @MiguelF - 你在哪里读到它只适用于 CF Web 服务?我一直认为它适用于任何 WS。我使用 WCF 测试客户端进行了快速测试,它确实在 CF 2016,0,10,314028 下刷新。

标签: web-services soap coldfusion


【解决方案1】:

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

CF 管理员 -> 数据和服务 -> 网络服务

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

【讨论】:

  • 奇怪的是,我使用CreateObject 以编程方式创建的 Web 服务没有出现在 ColdFusion Administrator 的列表中。也许在 server.xml 中有一个设置可以启用它?
  • 我不知道这样的设置 - wsdl URL 总是“刚刚出现”在我使用的每个版本的 CF Admin 中。您是否有可能在 Enterprise 上运行多个 CF 实例并查看错误的实例管理员?
  • 不,我们只有 2016 版。有趣的是它总是只出现在你面前,我将不得不更深入地研究为什么它不适合我。我原以为 ColdFusion Administrator 中的这个“Web 服务”页面是用于 ColdFusion 托管的 Web 服务,而不是缓存存储库。
猜你喜欢
  • 1970-01-01
  • 2017-12-29
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 2020-05-10
相关资源
最近更新 更多