Как устранить нулевые указатели в ошибке Java в ColdFusion 9? - PullRequest
0 голосов
/ 17 января 2012

Я использую ColdFusion 9.1.0.

Я работаю над частью сайта, которую кто-то еще разработал некоторое время назад. Это кто-то ушел и нет документации. Я могу получить доступ к Администратору CF, но не могу найти ничего, что помогло бы мне с конкретной проблемой.

В приведенном ниже коде создается объект Java (аутентификация), а затем на следующей строке указывается объект. В метод (runTransaction) передаются две переменные, файл свойств (VARIABLES.PropsFile) и XML (VARIABLES.MyXML).

<cfobject action="create" type="Java" class="CyberSource" name="auth">
<cfset VARIABLES.ResponseString = auth.runTransaction(VARIABLES.PropsFile,VARIABLES.MyXML)>

Объект успешно создан. Я знаю это, потому что когда я меняю класс объекта, он взрывается! Когда я изменяю его обратно на «CyberSource», он работает.

Я знаю, что файл свойств существует. Я знаю, что XML существует.

Я получаю следующую ошибку:

The system has attempted to use an undefined value, which usually indicates a programming error, either in your code or some system code.

Null Pointers are another name for undefined values.

The error occurred in D:/inetpub/wwwroot/Watkins_OE-DEV/Test.cfm: line 63

61 : <!--- CREATE JAVA OBJECT --->
62 : <cfobject action="create" type="Java" class="CyberSource" name="auth">
63 : <cfset VARIABLES.ResponseString = auth.runTransaction(VARIABLES.PropsFile,VARIABLES.MyXML)>

Можете ли вы дать мне какие-либо подсказки относительно того, что на самом деле означает эта ошибка и где я мог бы посмотреть дальше?

РЕДАКТИРОВАТЬ:

Я не могу точно определить, в чем заключалась моя проблема, но я решил ее по-другому. Я нашел файл, который БЫЛ работает, и медленно перестраивал его, проверяя его 100 раз по пути.

Большое спасибо за советы и подсказки!

1 Ответ

0 голосов
/ 24 января 2012

Согласно документации, оберните вашу auth.runTransaction () с помощью try / catch.

Следующий фрагмент кода взят из примеров, включенных в Java-интерфейс CyberSource:

<!--- Change this to point to your property file --->
<cfset propsFile = "full_path_to/coldfusion/samples/cybs.properties">

<!--- Change this to point to your request file --->
<cffile action="Read" file="full_path_to/coldfusion/samples/xml/request.xml" variable="requestString">

<cfobject action="create" type="Java" class="CyberSource" name="auth">
<cfxml variable="requestDoc">
    <cfoutput>#requestString#</cfoutput>
</cfxml>
<cfdump label="Request" var="#requestDoc#">

<cftry>

<!--- make the call --->
<cfset responseString = auth.runTransaction(propsFile,requestString)>

<!--- cast the response to xml --->
<cfxml variable="responseDoc">
<cfoutput>#responseString#</cfoutput>
</cfxml>
<cfdump label="Response" var="#responseDoc#">

<!--- exception handling --->
<cfcatch type="com.cybersource.ws.client.ClientException">
    <cfoutput><b>Exception Message:</b> #cfcatch.message#</cfoutput><br><br>
    <cfdump label="com.cybersource.ws.client.ClientException" var=#cfcatch#>
</cfcatch>

<cfcatch type="com.cybersource.ws.client.FaultException">
    <cfoutput><b>Exception Message:</b> #cfcatch.message#</cfoutput><br><br>
    <cfdump label="com.cybersource.ws.client.FaultException" var=#cfcatch#>
</cfcatch>

</cftry>

Внутри Java-платформы All Platforms можно загрузить несколько примеров холодного синтеза:

http://apps.cybersource.com/cgi-bin/pages/dev_kits.cgi?kit=Java/All_Platforms

...