Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Scout/Tutorial/3.8/webservices/DatabaseLogHandler"
(No difference)
|
Revision as of 19:42, 10 November 2011
@ScoutTransaction public class DatabaseLogHandler extends LogHandler { private static final IScoutLogger LOG = ScoutLogManager.getLogger(DatabaseLogHandler.class); /** * Property to access the primary key of the log entry in the message context. */ public static final String PROP_WS_LOG_NR = UUID.randomUUID().toString(); @Override protected void handleLogMessage(DirectionType directionType, String soapMessage, SOAPMessageContext context) { try { /* * If this handler is invoked to post-process the SOAP-response, the SOAP-request was already logged and * the log's primary key put into the message context. In consequence, the log entry is updated with the SOAP response. */ Long wsLogNr = (Long) context.get(PROP_WS_LOG_NR); if (wsLogNr == null) { // SOAP request wsLogNr = SQL.getSequenceNextval("GLOBAL_SEQ"); context.put(PROP_WS_LOG_NR, wsLogNr); SQL.insert("" + "INSERT INTO WS_LOG " + " (WS_LOG_NR, " + " EVT_DATE, " + " SERVICE, " + " PORT, " + " OPERATION, " + " REQUEST) " + "VALUES (:wsLogNr, " + " :evtDate, " + " :service, " + " :port, " + " :operation, " + " :request)" , new NVPair("wsLogNr", wsLogNr) , new NVPair("service", StringUtility.nvl(context.get(SOAPMessageContext.WSDL_SERVICE), "?")) , new NVPair("port", StringUtility.nvl(context.get(SOAPMessageContext.WSDL_PORT), "?")) , new NVPair("operation", StringUtility.nvl(context.get(SOAPMessageContext.WSDL_OPERATION), "?")) , new NVPair("request", soapMessage) , new NVPair("evtDate", new Date()) ); } else { // SOAP response SQL.update("" + "UPDATE WS_LOG " + "SET RESPONSE = :response " + "WHERE WS_LOG_NR = :wsLogNr" , new NVPair("wsLogNr", wsLogNr) , new NVPair("response", soapMessage) ); } } catch (ProcessingException e) { LOG.error("failed to persist webservice-log", e); } } }