代码之家  ›  专栏  ›  技术社区  ›  Loftx

当使用Java对象时,JRunServlet错误

  •  4
  • Loftx  · 技术社区  · 14 年前

    我们在CaldFink中有一个站点,它使用Java组件与信用卡提供者进行集成。

    在Java对象上调用特定函数时:

    <cfset ResponseObject = AgentObject.request(RequestObject, LogObject)>
    

    其中AsvestObjor、AgTestObjor和LoGbBog是Java对象创建的:

    <cftry>
    
        <cfset AgentObject = createObject("java","com.providername.client.Agent")>
    
        <cfcatch type="any">
            Do something.
        </cfcatch>
    </cftry>
    

    在页面上输出以下内容并停止执行。

    <head>
    <title>JRun Servlet Error</title>
    </head>
    <h1>500 Transaction fails verification<br>
        BadRequest: Request fails verification checks<br>
        BadCardNumber: Card length was 16, but we were expecting 0<br>
    </h1>
    <body>
    Transaction fails verification<br>
    BadRequest: Request fails verification checks<br>
    BadCardNumber: Card length was 16, but we were expecting 0<br>
    </body>
    

    错误是预料中的(我们正在检查卡的详细信息),但我似乎无法捕捉到它。一 cftry cfcatch 没有效果,所以我完全不知道如何处理这个错误并继续执行。

    有人能帮忙吗?

    干杯,

    汤姆

    编辑-其他错误信息

    我认为发布这个堆栈跟踪可能也很有用。它不能通过coldfusion访问,而是作为 LogObject 可能在Java代码中:

        com.providername.client.errors.VerifyErrorReport: Transaction fails verification
        com.providername.client.errors.BadRequest: Request fails verification checks
            com.providername.client.errors.BadCardNumber: Card length was 16, but we were expecting 0
                at com.providername.util.CardInfo.verifyCardNumber(CardInfo.java:412)
                at com.providername.util.CardInfo.validateCardInfo(CardInfo.java:789)
            at com.providername.util.CardInfo.validateCardInfo(CardInfo.java:838)
            at com.providername.client.Agent.setupTransaction(Agent.java:681)
        at com.providername.client.Agent.setupTransaction(Agent.java:692)
        at com.providername.client.Agent.request(Agent.java:281)
        at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at coldfusion.runtime.java.JavaProxy.invoke(JavaProxy.java:74)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:1634)
        at cfprovidername2ecfc526409752$funcSENDXMLOBJECT.runFunction(D:\site\components\providername.cfc:210)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:344)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:290)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:254)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:56)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:207)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:169)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:1807)
        at cftransactions2ecfc114461696$funcTRANSACTION.runFunction(D:\site\components\transactions.cfc:175)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:344)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:290)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:254)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:56)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:207)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:366)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:198)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:157)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:1594)
        at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:341)
        at cfauthorise2dprovidername2ecfm1546743078._factor7(D:\site\payment\authorise-providername.cfm:224)
        at cfauthorise2dprovidername2ecfm1546743078._factor27(D:\site\payment\authorise-providername.cfm:164)
        at cfauthorise2dprovidername2ecfm1546743078._factor30(D:\site\payment\authorise-providername.cfm:91)
        at cfauthorise2dprovidername2ecfm1546743078.runPage(D:\site\payment\authorise-providername.cfm:1)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349)
        at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:1915)
        at cfauthorise2ecfm767248619.runPage(D:\site\payment\authorise.cfm:10)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349)
        at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:1915)
        at cftemplate2ecfm1091873885._factor4(D:\site\server\template.cfm:247)
        at cftemplate2ecfm1091873885.runPage(D:\site\server\template.cfm:1)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349)
        at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:1915)
        at cfapplication2ecfm1526755454._factor31(D:\site\application.cfm:673)
        at cfapplication2ecfm1526755454.runPage(D:\site\application.cfm:1)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349)
        at coldfusion.runtime.CfJspPage._emptyTag(CfJspPage.java:1915)
        at cfApplication2ecfm1608241748.runPage(D:\site\payment\Application.cfm:30)
        at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:152)
        at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:349)
        at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
        at coldfusion.filter.CfincludeFilter.include(CfincludeFilter.java:33)
        at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:172)
        at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:51)
        at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
        at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:69)
        at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
        at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
        at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
        at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
        at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:115)
        at coldfusion.CfmServlet.service(CfmServlet.java:107)
        at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:78)
        at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
        at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
        at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:257)
        at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:541)
        at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:204)
        at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:318)
        at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:426)
        at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:264)
        at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Joe D    14 年前

    我来晚了一点,但你得到的不是jrun本身的错误。似乎这个错误是在jre中抛出的,jrun将其显示为一个“servlet错误”。注意堆栈跟踪中的行:

    com.providername.client.errors.VerifyErrorReport: Transaction fails verification
    com.providername.client.errors.BadRequest: Request fails verification checks
        com.providername.client.errors.BadCardNumber: Card length was 16, but we were expecting 0
            at com.providername.util.CardInfo.verifyCardNumber(CardInfo.java:412)
    

    这看起来像是verifyCardNumber()中的CardInfo类在第412行引发的错误。我认为jrun只是将错误作为一个“servlet错误”来处理,因为com.providername.client.error s.verifyerrorreport中有一个硬停止。

    这也可能是你 <cfcatch> 不会抓住那个例外。Java类可能会捕获该错误并将Java中的异常抛出,从而导致丑陋的JRun 500错误。

    如果您没有Java的源代码来检查您为什么在CardInfo获得异常,那么您应该与拥有源代码的人联系,看看他们是否有任何见解。

    我希望这对你有所帮助。