ColdFusion 10-REST Web服务错误-对象不是声明类的实例

ColdFusion 10-REST Web服务错误-对象不是声明类的实例,rest,coldfusion,coldfusion-10,Rest,Coldfusion,Coldfusion 10,首先,我不认为这是一个重复的问题,因为人们在执行不同的操作时收到了这个错误 问题概述: Web服务工作 在x时间量之后,它失败并产生下面所述的错误 没有发生代码更改以便我们必须刷新 直到我们刷新服务,它才开始重新工作 无模式,通常在刷新后数小时失败 我有一个RESTWeb服务,它从外部目录引用CFC,并使用CF映射。web服务在第一次通过CF管理员输入时起作用。我和我团队中的其他人都无法找出模式,但在刷新web服务几小时后,它出现故障并生成以下错误: "Error","ajp-bio-801

首先,我不认为这是一个重复的问题,因为人们在执行不同的操作时收到了这个错误

问题概述:

  • Web服务工作
  • 在x时间量之后,它失败并产生下面所述的错误
  • 没有发生代码更改以便我们必须刷新
  • 直到我们刷新服务,它才开始重新工作
  • 无模式,通常在刷新后数小时失败
我有一个RESTWeb服务,它从外部目录引用CFC,并使用CF映射。web服务在第一次通过CF管理员输入时起作用。我和我团队中的其他人都无法找出模式,但在刷新web服务几小时后,它出现故障并生成以下错误:

"Error","ajp-bio-8014-exec-1478","01/01/14","12:00:00","ApplicationName","object is not an instance of declaring class The specific sequence of files included or processed is: \myWeb\Site\REST\Service\Folder\myService.cfc'' "
java.lang.IllegalArgumentException: object is not an instance of declaring class
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:601)
                at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
                at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ObjectOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:258)
                at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
                at coldfusion.rest.method.dispatch.CFExceptionHandlingDispatcher.dispatch(CFExceptionHandlingDispatcher.java:63)
                at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
                at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
                at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
                at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
                at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
                at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
                at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
                at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
                at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
                at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
                at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
                at coldfusion.rest.servlet.CFRestServletContainer.service(CFRestServletContainer.java:143)
                at coldfusion.rest.servlet.CFRestServletContainer.service(CFRestServletContainer.java:88)
                at coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:384)
                at coldfusion.rest.servlet.RestFilter.invoke(RestFilter.java:58)
                at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
                at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
                at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
                at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
                at coldfusion.rest.servlet.RestWrapRequestFilter.invoke(RestWrapRequestFilter.java:48)
                at coldfusion.rest.servlet.CFRestServlet.invoke(CFRestServlet.java:356)
                at coldfusion.rest.servlet.CFRestServlet.service(CFRestServlet.java:347)
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
                at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
                at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at com.seefusion.Filter.doFilter(Filter.java:49)
                at com.seefusion.SeeFusion.doFilter(SeeFusion.java:1500)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
                at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:601)
                at com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:97)
                at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:437)
                at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:311)
                at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:192)
                at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:472)
                at com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)
                at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:601)
                at com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:79)
                at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:601)
                at com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:53)
                at com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java)
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
                at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414)
                at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:204)
                at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
                at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
                at java.lang.Thread.run(Thread.java:722)
正如我所说,我们刷新了服务,它工作了,但只有时间告诉我们,直到它再次失败,没有模式,代码没有任何变化。让我为您提供一个更简单的服务版本:

<cfcomponent rest="true" restPath="/" extends="utils.utils">
    <cffunction name="generatePDF" produces="application/json" access="remote" returnType="any" httpMethod="POST" restPath="service-pdf">
        <cfargument name="id" required="true" type="string" restargsource="form" />
        <cfset var result = "" />
        <cfset var remote_address = cgi.remote_addr />

        <cfset s3Obj = new utils.s3(accessKeyId="mySecretID", secretAccessKey="mySecretKey") />
        <cfset path = "the\path\to\store\the\pdf\" />
        <cfset objExpSub = new expenses.FormFill() />
        <cfset expenseSubmission = objExpSub.geSubmission(arguments.id) />
        <cftry>
            <cfset result = objExpSub.generatePDF(expenseSubmission, path) />
            <cfcatch type="any">
                <cfset result = {message="#cfcatch.message#", detail="#cfcatch.detail#", stacktrace="#cfcatch.stacktrace#"}>
                <cfreturn serializeJSON(result) />
                <cfabort> 
            </cfcatch>
        </cftry>

        <cfif result>
            <cfset result = {result = true} />
        </cfif>

        <cfreturn serializeJSON(result) />
    </cffunction>
</cfcomponent>

然后有一个.NETWeb服务调用我们的web服务。REST web服务位于其自己的目录中,当前未使用Application.cfc。但我看不出这会造成什么问题

我们所想的是这个问题,从我所看到的一切来看,它与服务文件夹和服务中实例化的相关类被自定义CF映射引用这一事实有关。因此,它们不存在于CF根目录中,也不存在于同一文件夹中

编辑(2014年3月3日):我忘记提到的是,
正在通过CF映射实例化一个对象,但该映射是到我们的ColdBox应用程序组件的。我不是ColdBox方面的专家,但这会有问题吗

更新(2014年3月3日):我们将从ColdBox应用程序目录中删除这些组件,看看会得到什么样的结果。我猜我们仍然会看到错误,但只是试图消除另一种可能性。将更新我们的调查结果

这就是我要说的,所以如果你需要更多的信息,请具体一点,因为我不能提供太多

重复我自己的话,web服务是有效的!它只是随机中断并抛出一个错误,对我们任何人来说都毫无意义


提前谢谢你的帮助

我有这个问题的简化版本。我有一个CFC,它是作为CF10 REST服务的独立CFC(无包含,无CF映射)设置。它会工作一段时间,然后在1小时到8小时之间的任何地方失败


但是,我的源代码存储在网络挂载上,而不是本地驱动器上。当CFC移动到本地驱动器时,它变得可靠

你能分享你的App.cfc吗?它是否有任何与rest相关的调用或变量?这是一个冒险,但是JVM使用的是什么垃圾收集器呢?好奇的是,perm gen中的类是否会被重新加载,而Java无法识别它们。也可以尝试禁用聚变反应堆,并将聚变视为一项测试。您真的需要同时加载这两个工具吗?Chandan,正如我前面所说,REST服务没有关联的Application.cfc。Brad,我们使用ColdFusion附带的默认垃圾收集器。我们正在努力正确卸载SeeFusion,但要到3月8日才能完成。是否可以