首页 > 解决方案 > 调用 Web 服务时 ColdFusion 对象覆盖其他对象

问题描述

ColdFusion 2021 相关返回“对象不是声明类的实例”

我们在不同的服务器上安装了 ColdFusion2021,并且在不同的代码部分中,一个 Web 服务对象似乎正在覆盖其他 Web 服务对象(或者至少,所有内容都被转换为该对象的实例)。

oWsdlArgs = structNew();
oWsdlArgs.refreshwsdl="yes"
objSoapHeader = XmlParse("<wsse:Security mustUnderstand=""true"" xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""><wsse:UsernameToken><wsse:Username>#Application.Settings.ws_user#</wsse:Username><wsse:Password>#Application.Settings.ws_password#</wsse:Password></wsse:UsernameToken></wsse:Security>");
            
Application.ValidationWebService = CreateObject("webservice", Application.Settings.ws_url & "Validation/WSValidation.asmx?WSDL", oWsdlArgs);
addSOAPRequestHeader(Application.ValidationWebService,"","",objSoapHeader,true);

Application.ClientAccessWS = CreateObject("webservice", Application.Settings.ws_url & "Admin/ClientAccess/WSClientAccess.asmx?WSDL", oWsdlArgs);
addSOAPRequestHeader(Application.ClientAccessWS,"","",objSoapHeader,true);

Application.AdminWS = CreateObject("webservice", Application.Settings.ws_url & "Admin/AdminSite/WSAdminSite.asmx?WSDL", oWsdlArgs);
addSOAPRequestHeader(Application.AdminWS,"","",objSoapHeader,true);

Application.EmailService = CreateObject("webservice", Application.Settings.ws_url & "Requests/EmailService.asmx?WSDL", oWsdlArgs);
addSOAPRequestHeader(Application.EmailService, "", "", objSoapHeader, true);

Application.UserWebService = CreateObject("webservice", Application.Settings.ws_url & "Requests/UserService.asmx?WSDL", oWsdlArgs);
addSOAPRequestHeader(Application.UserWebService,"","",objSoapHeader,true);

// Get the .Net resources
Application.NetResources = Application.UserWebService.GetNetResources(Application.LanguageHeader); 

Application.WhiteLabelService = CreateObject("webservice", Application.Settings.ws_url & "Requests/WhiteLabelService.asmx?WSDL", oWsdlArgs);
addSOAPRequestHeader(Application.WhiteLabelService,"","",objSoapHeader,true);

// Initialize resource manager
createObject("component", "#Application.GlobalComponentPath#ResourceManager").init(Application.Settings.defaultBaseCategory);

似乎每个创建的对象都被设置为 WhiteLabelServiceStub 的一个实例。例如,这里是一个应该是 AdminWS 的转储,但实际上被设置为 WhiteLabelServiceStub:

 object of org.tempuri.WhiteLabelServiceStub
Class Name  org.tempuri.WhiteLabelServiceStub
Methods 
Method  Return Type
getAllConfigs(org.tempuri.LanguageHeaderE)  java.lang.String
getConfigId(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE)  int
getDisclaimer(java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE)  java.lang.String
getPopup(java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE)   java.lang.String
getProgress(java.lang.String, org.tempuri.LanguageHeaderE)  java.lang.String
getResourceManagerByCategory(java.lang.String, org.tempuri.LanguageHeaderE) org.tempuri.CfResourceManager
getText(java.lang.String, org.tempuri.LanguageHeaderE)  java.lang.String
keepAlive(org.tempuri.LanguageHeaderE)
reloadKeys(java.lang.String)    void
reportException(java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE)    java.lang.String
startgetAllConfigs(org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)   void
startgetConfigId(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)   void
startgetDisclaimer(java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)   void
startgetPopup(java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)    void
startgetProgress(java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)   void
startgetResourceManagerByCategory(java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)  void
startgetText(java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)   void
startkeepAlive(org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler)   void
startreloadKeys(java.lang.String, org.tempuri.WhiteLabelServiceCallbackHandler) void
startreportException(java.lang.String, java.lang.String, org.tempuri.LanguageHeaderE, org.tempuri.WhiteLabelServiceCallbackHandler) void
Parent Class

任何想法为什么会发生这种情况?

谢谢!

标签: web-servicescoldfusioncfml

解决方案


推荐阅读