Doing database I/O when getting an error Uniface is providing $dberror to expose real database error captured from db connector, enabling to fine tune application error management. There should be an equivalent function (or $dberror implementation should be generalized) exposing real error also for other connector types; as an example SOAP connector should expose HTTP transport error (See: As of U9.7 this fine tuning can only be partially implemented analyzing strings given back from connector into $procerrorcontext; string analysis could be prone to errors because of software evolution or different languages or possible customizations, while an errorcode is a much more simpler and stable information.

Use Case

During SOAP web services invocation in U9.7 the only way we have to differentiate error conditions was to analyze strings given back into $procerrorcontext. Here reported the two cases we found: *** CASE 1 - SERVER DOWN - ERROR ON REQUEST: ERROR=-150·;MNEM=·;DESCRIPTION=Activation error occurred·;COMPONENT=FSE_INTERFACE·;PROCNAME=FSEGETDOCUMENTSLIST·;TRIGGER=OPER·;LINE=109·; ADDITIONAL=INSTANCENAME=GV_NL_FSE·!·;OPERATIONNAME=FSELOCGETDOCUMENTSLIST·!·;DRV=SOP·!·;LOCATION=INVOCATION·!·; CODE=TRANSPORT·!·; MESSAGE=HTTP transport error·!·; DETAIL= Request::handleRequest HTTPTransportException:Unknown Transport Exception - Connecting to http://ourServer:8080/gvaxis2/services/GV_NL_FSE failed: Failed to connect to ourServer port 8080: Timed out\\\" *** CASE 2 - SERVER UP - TIMEOUT ON RESPONSE: ERROR=-150·;MNEM=·;DESCRIPTION=Activation error occurred·;COMPONENT=FSE_INTERFACE·;PROCNAME=FSEGETDOCUMENTSLIST·;TRIGGER=OPER·;LINE=109·; ADDITIONAL=INSTANCENAME=GV_NL_FSE·!·;OPERATIONNAME=FSELOCGETDOCUMENTSLIST·!·;DRV=SOP·!·; LOCATION=INVOCATION·!·; CODE=TRANSPORT·!·; MESSAGE=HTTP transport error·!·; DETAIL= Request::handleRequest HTTPTransportException:Channel error connection timeout before receiving - Operation timed out after 80013 milliseconds with 0 bytes received\\\" The only solution was to analyze strings given back into DETAIL field; it would be much much better to have available a code to recognize different conditions.




Uniface 4GL

Operating System

Not Applicable