gpt4 book ai didi

soap - CF Web 服务出现严重的间歇性错误

转载 作者:行者123 更新时间:2023-12-04 01:13:00 26 4
gpt4 key购买 nike

对于我们编写和维护的基于 CF Web 服务的 API,我们遇到了令人难以置信的令人沮丧的情况。多年来,我们拥有一个稳定的 API,可以与 Ruby、PHP 和 ColdFusion 客户端愉快地合作。然后今年出现了 .NET 客户端,我们发现我们的 Web 服务无法与静态类型语言互操作,因为我们广泛使用了结构。

我们最终意识到我们必须在没有结构的情况下重新编写 API,我们已经这样做了。它现在使用定标器值、数组和 CFC(转换为 SOAP complexTypes)。 .NET 客户端很高兴,我们用大约 6 种不同的语言编写了概念验证客户端,以确保我们这次可以互操作。

令我们非常沮丧的是,我们的 ColdFusion 7 服务器似乎无法可靠地为新 API 提供服务。重新启动后它可以工作大约一天左右,然后客户端开始收到如下错误:

错误:coldfusion.xml.rpc.CFCInvocationException
[java.lang.ClassNotFoundException : tafkan.remote_api.pfapi.v.trunk.rsp_pf_survey_status_array]



java.lang.NoClassDefFoundError: tafkan/remote_api/pfapi/v/trunk/pf_unit

重新启动 CF 实例是使问题消失的唯一方法。大量的时间和金钱被投入到重建 API 上,所以每个人都对此不知所措。

我们已经注意到,我们的 CF 实例的 WEB-INF/cfc-skeletons 目录最终似乎为 API 使用的每个 CFC 都有两个类的副本。例如:

-rw-r--r--  Feb 17 09:15 remote_api.pfapi.v.trunk.pf_datum.class
-rw-r--r-- Feb 3 12:20 tafkan.remote_api.pfapi.v.trunk.pf_datum.class

错误似乎来自命名空间或类搜索路径问题,因此我们尝试将所有 CFC 引用切换为完全限定(以映射开头的点表示法),而不是仅对当前目录中的 CFC 进行简单引用。这看起来很有希望,但问题在 24 小时内又出现了。

环境:
  • ColdFusion 7,0,2,142559 与 hf702-70523,2 实例集群
  • Sun Java 1.4.2_13
  • Apache 2.0.52
  • Centos 4.5 32 位

  • 也许升级这些古老的软件之一会有所帮助?也许只升级 AXIS?

    Adobe 支持似乎不是一种选择,因为 CF7 已停产并提供扩展支持(而且只持续了几天)。

    更新:

    感谢所有参与讨论的人!这是目前情况的最新情况。

    这项服务今天第一次失败了。其中一个集群实例仍然能够生成 WSDL,而另一个实例表示:
    AXIS error
    Sorry, something seems to have gone wrong... here are the details:
    Exception - java.lang.NoClassDefFoundError: tafkan/remote_api/pfapi/v/trunk/rsp_pf_numeric_array

    两个 cfc-skeletons 目录都包含一个名为 tafkan.remote_api.pfapi.v.trunk.rsp_pf_numeric_array.class 的文件,并且似乎不包含我们有时看到的其他命名文件(remote_api.pfapi.v.trunk.rsp_pf_numeric_array.class)。类(class))。自昨天服务器启动以来,cfc-skeletons 中的文件似乎没有被修改。

    两个实例的正常运行时间约为 21.5 小时。我在没有 JIT (-Xint) 的情况下运行。

    我现在已经重新启动了两个实例。它们现在在 Sun Java 1.4.2_19(而不是 _13)上运行,并且 JIT 已重新启用,因为它显然不会导致此错误,并且如果没有它,事情会显着变慢。我还清除了“保存类文件”复选框。

    而现在,我们再次等待......

    更新 2
    问题仍然存在。我不确定此时还可以尝试什么。啊!

    仅供引用,这是交叉发布在 http://www.houseoffusion.com/groups/cf-talk/thread.cfm/threadid:60922

    最佳答案

    我已阅读此线程和 CFTalk 线程。 Mark Kruger 和 Dave Watts 似乎已经提出了我对变通方法的初步想法。我唯一的其他解决方法是捕获错误并使用服务工厂方法刷新 web 服务 stub 。 (在 CF8-9 中有一个 Admin API 方法可以做到这一点,不确定 CF7)。

    研究错误我缩小了可能的匹配范围:

    http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:144821
    这是一场比赛,但未解决

    http://blog.coldfusionpowered.com/?p=28
    这是一个非常相似的错误,通过在所有 CFC 和调用上“修复案例问题”来解决。

    ColdFusion Google Adwords Business Component Error
    通过重写代码并删除cfcomments来解决(我怀疑其他因素实际上是在这里解决它的原因)

    http://forums.crystaltech.com/index.php?topic=22364.0
    我们现在越来越近了。解决方案涉及错误地拥有两个文档根

    http://qaix.com/coldfusion/313-410-web-service-on-cfmx-6-1-jrun-suddenly-not-working-read.shtml
    与错误消息完全匹配。与 CFC 映射到 doc root 的完全匹配。解决方案是只有 1 个映射指向 docroot,只是“/”。这可能是解决方案。在 MX 6/6.1 甚至 7 中,“/”有一个指向 docroot 的默认映射。如果您有另一个指向 docroot 的映射,那么我可以看到这个问题是如何出现的。检查映射的物理路径并尝试此处的解决方案,以仅使用“/”映射。

    关于soap - CF Web 服务出现严重的间歇性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300776/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com