为什么ColdFusion Implicit Setter最终会进行网络呼叫?

时间:2012-02-27 22:19:29

标签: coldfusion

我在CFC的init()方法中有一个隐式setter。我观察到(使用Fusion Reactor,并通过错误消息)对setActive(false)的简单调用最终会进行网络连接。我不知道为什么ColdFusion在使用ColdFusion 9引入的隐式setter设置此值时会做这么多工作。

我正在运行最新的ColdFusion 9.01并应用了所有修补程序更新。

你知道为什么ColdFusion会遇到这些麻烦吗?

感谢。

我的CFC的初始化方法

/* Constructor
    @user_id A valid User_ID. If provided, the User will self-populate.
*/
public shared.models.objects.User function init (numeric user_id = -1) {
    super.init(argumentCollection=arguments);

    // Prepare structs required for 'adding' methods
    clearRoles();
    setActive(false);  // <--- THIS IS THE LINE 

    setUser_ID(user_id);

    settings = {};

    defaultLanguage = new shared.models.objects.Language();

    setLanguages( [defaultLanguage] );
    setLanguage( defaultLanguage );

    if (user_id == -1) {
        // Construct a 'blank' User
        // addRole('Contributor');
        setRequirePasswordChange(false);
    } else {
        // Attempt to populate a user
        populate();
    }

    return this;
}

显示网络的堆栈跟踪

java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:581)
        at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:573)
        at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:591)
        at jrun.servlet.jrpp.ProxyEndpoint.readString(ProxyEndpoint.java:620)
        at jrun.servlet.jrpp.ProxyEndpoint.getHeader(ProxyEndpoint.java:762)
        at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:124)
        at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:124)
        at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:124)
        at com.intergral.fusionreactor.filter.surrogate.e.getHeader(FusionReactorServletRequestProxy.java:248)
        at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
        at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
        at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
        at coldfusion.runtime.NeoPageContext.searchScopes(NeoPageContext.java:766)
        at coldfusion.runtime.NeoPageContext.findAttribute(NeoPageContext.java:638)
        at coldfusion.runtime.CfJspPage._get(CfJspPage.java:296)
        at coldfusion.runtime.CfJspPage._get(CfJspPage.java:283)
        at coldfusion.runtime.CfJspPage._get(CfJspPage.java:271)
        at cfUser2ecfc1728567179$funcINIT.runFunction(C:\web\project\projecttv\shared\models\objects\User.cfc:131)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
        at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:389)
        at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2723)
        at cfBuilder2ecfc1779563022$funcBUILDCFC.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\Builder.cfc:111)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfInjector2ecfc1868990138$funcBUILDINSTANCE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\Injector.cfc:288)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfNoScope2ecfc139649912$funcGETFROMSCOPE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\scopes\NoScope.cfc:31)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfInjector2ecfc1868990138$funcGETINSTANCE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\Injector.cfc:262)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
        at cfRequest2ecfc135332213$funcENSUREREQUIREDOBJECTSEXIST.runFunction(C:\web\project\projecttv\atvcms\interceptors\Request.cfc:76)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2547)
        at cfRequest2ecfc135332213$funcPREPROCESS.runFunction(C:\web\project\projecttv\atvcms\interceptors\Request.cfc:26)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
        at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:389)
        at cfInterceptorState2ecfc1253590739$funcINVOKER.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\web\context\InterceptorState.cfc:139)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2582)
        at cfInterceptorState2ecfc1253590739$funcPROCESS.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\web\context\InterceptorState.cfc:86)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfInterceptorService2ecfc1842875288$funcPROCESSSTATE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\web\services\InterceptorService.cfc:131)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfColdbox2ecfc1041943003$funcPROCESSCOLDBOXREQUEST.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\Coldbox.cfc:208)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfApplication2ecfc83985088$funcONREQUESTSTART.runFunction(C:\web\project\projecttv\atvcms\Application.cfc:149)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:88)
        at coldfusion.runtime.AppEventInvoker.onRequestStart(AppEventInvoker.java:258)
        at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:349)
        at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
        at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
        at coldfusion.filter.PathFilter.invoke(PathFilter.java:94)
        at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
        at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
        at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
        at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
        at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
        at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
        at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
        at coldfusion.CfmServlet.service(CfmServlet.java:200)
        at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
        at com.intergral.fusionreactor.filter.FusionReactorFilter.c(FusionReactorFilter.java:428)
        at com.intergral.fusionreactor.filter.FusionReactorFilter.d(FusionReactorFilter.java:262)
        at com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter(FusionReactorFilter.java:171)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
        at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
        at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
        at jrun.servlet.FilterChain.service(FilterChain.java:101)
        at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
        at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
        at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
        at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
        at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
        at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
        at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
        at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
        at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我相信我可以添加一些东西,但最终我认为这里有一个CF缺陷,我将试着详细说明。

首先在堆栈中注意跟踪:

    at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
    at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
    at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
    at coldfusion.runtime.NeoPageContext.searchScopes(NeoPageContext.java:766)
    at coldfusion.runtime.NeoPageContext.findAttribute(NeoPageContext.java:638)

当ColdFusion尝试解析未扩展的变量时,它将通过优先级测试每个范围的范围顺序向上运行。如果它一直到CGI范围,CF服务器会尝试向Web服务器连接器询问请求标头中的CGI信息。反过来,连接器尝试从保持TCP连接的连接器句柄读回浏览器。您在此帖子中看到的原始邮件的网络连接可能是尝试通过TCP从浏览器收集某些CGI属性的连接器。

如果浏览器连接不再处于活动状态,请说用户关闭了浏览器,在其他位置单击,或者网络中断,则TCP连接可能是“陈旧”。在这种情况下,您将在日志中看到这样的堆栈跟踪,主消息为“**读取标题时出错”

03/06 13:45:52 error Error while reading header <headername>
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
...
at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
at coldfusion.runtime.CgiScope.search(CgiScope.java:334)

ColdFusion在使用像isdefined('myUnscopedVar')这样的代码时会查找范围。如果它一直到CGI,那么它将询问连接器名为myUnscopedVar的标头。如果浏览器连接消失,则日志将显示“错误错误,同时读取标题myUnscopedVar

避免这种情况的方法是在所有使用isDefined的地方使用structKeyExists。

在这些相关博客条目中找到更多详细信息:

如果您搜索错误消息“读取标题时出错”,您实际上会在搜索结果中出现大量误报,因为 ColdFusion的 CFSAVECONTENT 标记是作为CF自定义实现的存储在WEB-INF中的标记它在捕获生成的内容的方式上做类似的事情,具有与isDefined(“anUnscopedVar”)相同的效果。内置的CF Exception处理程序在尝试查看显示异常时使用了cfsavecontent,因此它会捕获底层应用程序异常,试图将其弄清楚,但是在读取标题时出现“错误错误”问题,而不是看到原始应用程序异常,你得到这个标题错误掩盖了真正的问题

    error Error while reading header S_UNABLE
java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
          ...
    at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
    at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
    at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
          ...
    at cfsavecontent2ecfm1472308084.runPage(E:\cf9_final\cfusion\wwwroot\WEB-INF\cftags\savecontent.cfm:11)
          ...
    at cfexception_en2exml1502993924.runPage(D:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\WEB-INF\exception\exception_en.xml:52)
          ...
    at cfdetail2ecfm1809038875.runPage(D:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\WEB-INF\exception\detail.cfm:35)
          ...
    at cfApplicationException2ecfm797577125.runPage(D:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\WEB-INF\exception\coldfusion\runtime\ApplicationException.cfm:2)

再次得出的结论是,如果浏览器连接已被删除,那么 在通过意图进行CGI查找或因为在未作用域的变量名称上使用isDefined时,您的代码可能会显示“读取标头”错误。

所以这只是一些相关的背景信息。此问题与此线程中的ORM问题相交。

我发现在ColdFusion 9.01中,有时调用隐式setter会导致ColdFusion尝试解析setter方法,就像它是一个属性一样,它会查看CGI范围以尝试找到它。

我在这里(部分)显示了以下实体:

component persistent="true" table="myTable" output="false" extends="myBaseClass" {
property name="myProperty" column="myProperty" type="date" ormtype="timestamp";

请注意,它扩展了myBaseClass,部分显示在这里:

component {
public void function doSomething(){
    if (hasProperty('myProperty'))
        setMyProperty(now());
}

在某些情况下,当请求使用该实体的模板时,模板请求似乎会在地址栏旋转时无限期地挂在浏览器中。稍后查看日志时,我会找到请求的相关条目,显示“读取标题时出错”。

                03/06 13:45:52 error Error while reading header SETMYPROPRTY
            java.net.SocketTimeoutException: Read timed out
            at java.net.SocketInputStream.socketRead0(Native Method)
            ...
            at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
            at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
            at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
            ...                
            at cfmybaseclass2ecfc1915167844$funcDOSOMETHING.runFunction(X:\MyApp\myBaseClass.cfc:8)
            ...                
            at coldfusion.orm.hibernate.HibernateEventHandler.onFlushDirty(HibernateEventHandler.java:130)
            ...                
            at coldfusion.orm.hibernate.HibernatePersistenceManager.onCommit(HibernatePersistenceManager.java:950)
            ...
            at cfsomecomp2ecfc1707726523$funcRUN.runFunction(X:\MyApp\SomeComp.cfc:131)

这个堆栈跟踪告诉我,ColdFusion正在尝试解析一个隐式setter,并试图通过向连接器询问同名的HTTP请求头来在CGI范围内找到它。

对我来说,尝试通过搜索请求标头的CGI范围来解析隐式getter似乎是一个ColdFusion缺陷。

评论