Java 找不到ColdFusion清理方法,无法终止会话

Java 找不到ColdFusion清理方法,无法终止会话,java,coldfusion,Java,Coldfusion,我刚刚将我们的站点从Windows 2003服务器移动到Windows 2008 R2服务器。除了一行代码外,其他一切似乎都正常工作 <cfset CreateObject('java', 'coldfusion.runtime.SessionTracker').cleanUp(application.applicationName, sid) /> 我们看到了这个错误: 找不到清理方法。 没有具有指定方法名称和参数类型的方法,或者cleanUp方法重载了ColdFusion无

我刚刚将我们的站点从Windows 2003服务器移动到Windows 2008 R2服务器。除了一行代码外,其他一切似乎都正常工作

<cfset CreateObject('java', 'coldfusion.runtime.SessionTracker').cleanUp(application.applicationName, sid) />

我们看到了这个错误:

找不到清理方法。
没有具有指定方法名称和参数类型的方法,或者cleanUp方法重载了ColdFusion无法可靠破译的参数类型。ColdFusion找到0个与提供的参数匹配的方法。如果这是一个Java对象,并且您验证了该方法的存在,则可能需要使用javacast函数来减少歧义。”

我已经确保所有文件都复制到新服务器,所有设置都相同,我甚至清除了ColdFusion类缓存并重新启动了服务器。下面是函数的完整代码。这是什么原因造成的,我如何修复它

<cfif isDefined("session.CFID") AND isDefined("session.cftoken")>
    <cfset sid = session.cfid & '_' & session.cftoken />
    <cfset CreateObject('java', 'coldfusion.runtime.SessionTracker').cleanUp(application.applicationName, sid) />
</cfif>

更新

我将其精简到最低限度。我在几个网站上发现了相同的基本代码。前三行工作正常。只要我尝试分配userSession,就会出现500服务器错误

<cfset app = application.applicationName>
<cfset sessionTracker = CreateObject('java', 'coldfusion.runtime.SessionTracker')>
<cfset sessionCollection = sessionTracker.getSessionCollection(app)>
<cfset userSession = sessionTracker.getSession(app, sessionID))>


我可以转储sessionTracker并确认sessionID是有效值。

您是否也升级了Java和/或ColdFusion?尝试创建
ColdFusion.runtime.sessionTracker的对象,然后转储它。查看是否有cleanup()方法。这将帮助您隔离问题/ColdFusion版本保持不变。cleanup()方法在旧服务器上工作了很多年,而这个新服务器有相同版本的ColdFusion。哦……我忘记了。只是用
javap-s
检查了它,它在CF11中,但是……它被标记为“protected”“。因此无法在包外部访问它。这可以解释为什么它没有出现在cfdump中。虽然这不是为什么Adam和我在同一版本中得到不同结果的原因:/不幸的是,我没有CF8可供测试。