我們使用一些org.apache類作爲實現Web服務的WS Security的一部分。ColdFusion/Java - 「未找到構建方法」
variables.paths = arrayNew(1);
variables.paths[1] = getDirectoryFromPath(getCurrentTemplatePath()) & "lib\wss4j-1.5.8.jar";
variables.paths[2] = getDirectoryFromPath(getCurrentTemplatePath()) & "lib\xmlsec-1.4.2.jar";
variables.loader = createObject("component","lib.javaloader.JavaLoader").init(loadPaths=variables.paths,loadColdFusionClassPath=true);
variables.WSConstantsObj = loader.create("org.apache.ws.security.WSConstants");
variables.messageClass = loader.create("org.apache.ws.security.message.WSSecUsernameToken");
variables.secHeaderClass = loader.create("org.apache.ws.security.message.WSSecHeader");
以下代碼:
<cfset var msg = getMessage()>
生產:
以下代碼:
<cfset var secHeader = getSecHeader()>
生產:
下面的代碼:
<cfset var env = soapEnv.getDocumentElement()>
生產:
env.getOwnerDocument()
產生了巨大的結構(過大,包括在這裏),您可以view here 。
然而,下面的代碼:
<cfset e = msg.build(env.GetOwnerDocument(),secHeader)>
引發錯誤:
The build method was not found.
Either there are no methods with the specified method name and argument types or the build method is overloaded with argument types that ColdFusion cannot decipher reliably. ColdFusion found 0 methods that match the provided arguments. If this is a Java object and you verified that the method exists, use the javacast function to reduce ambiguity.
然而生成()方法肯定存在,按照在所述第一屏幕截圖中的黃色亮點。
錯誤消息提到「...使用Javacast函數來減少歧義」。如果這是問題,我將如何應用此解決方案?
所有這些紅讓我眼睛流血:( – 2012-08-06 03:41:29
你已經cfdumped除了什麼env.GetOwnerDocument()實際返回的東西。你可以嘗試嗎?如果由於某種原因它返回NULL或意想不到的東西,它肯定會導致問題 – 2012-08-06 03:51:39
等等...你在env.GetOwnerDocument()中使用大寫G嗎? – 2012-08-06 03:56:27