2010-03-10 25 views
4

Nous avons un site dans ColdFusion qui s'intègre à un fournisseur de cartes de crédit utilisant des composants java.JRun Servlet Erreur lors de l'utilisation de l'objet java

Lorsque vous appelez une fonction particulière sur un objet java:

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

Où ResponseObject, AgentObject et LogObject sont des objets java créé comme:

<cftry> 

    <cfset AgentObject = createObject("java","com.providername.client.Agent")> 

    <cfcatch type="any"> 
     Do something. 
    </cfcatch> 
</cftry> 

Ce qui suit est émis sur la page et l'exécution est arrêté.

<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> 

L'erreur est attendue (nous vérifions les détails de la carte), mais je ne semble pas être en mesure de l'attraper. Un cftry et cfcatch n'a aucun effet, donc je suis complètement à une perte quant à la façon dont je peux gérer cette erreur et continuer l'exécution.

Quelqu'un peut-il aider?

Cheers,

Tom

Modifier - informations d'erreur supplémentaires

Je pensais que ce peut aussi être utile d'afficher cette trace de la pile. Ce n'est pas accessible via Coldfusion, mais est connecté à un fichier dans le cadre de LogObject ci-dessus vraisemblablement dans le code 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) 
+0

Semblez que votre RequestObject ne soit pas en mesure de vérifier les données. –

+0

Pouvez-vous nous en dire plus sur votre code pour que nous puissions voir les appels try/catch. –

+0

@CF Jedi Master J'ai ajouté le code catch try. C'est aussi simple que je peux l'obtenir et cela ne fait aucune différence. – Loftx

Répondre

2

Je suis un peu en retard à la fête à ce sujet, mais ce que vous obtenez est pas une erreur JRun en soi. Il semble que l'erreur soit lancée dans le JRE et JRun le montre comme une "erreur de servlet". Remarquez les lignes dans votre trace de la pile:

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) 

Cela ressemble à une erreur renvoyée par la classe cardinfo au sein verifyCardNumber() sur la ligne 412. Je pense JRun sert juste l'erreur comme une « erreur Servlet » parce qu'il ya un disque arrêtez dans com.providername.client.errors.VerifyErrorReport.

Cela peut également être la raison pour laquelle votre <cfcatch> n'attrape pas cette exception. La classe Java pourrait attraper cette erreur et jeter cette exception dans Java qui provoque cette erreur JRun 500 laid.

Si vous n'avez pas la source de Java pour vérifier pourquoi vous obtenez cette exception dans CardInfo, vous devez contacter les personnes qui possèdent la source pour voir si elles ont des informations. J'espère que cela vous sera utile d'une manière ou d'une autre.

+0

Salut Joe, merci pour votre réponse - le code est détenu par un processeur de carte de crédit qui ne sera pas libérer la source ou fournir d'autres informations sur l'erreur. Je vais marquer le vôtre comme la réponse acceptée en l'absence de toute autre information! – Loftx