...
For apps that use SAP, all your actions should be subclasses of SAPBaseAction which is, in turn, a subclass of IDDAction which is a subclass of Strut's Action. (org.apache.struts.action is the core of the struts framework, providing the "Controller" aspect of a MVC model. Action is one of the classes in this core code.)
If the action is an entry point (i.e., chained to /EntryAction or /XXXEntryAction which is associated with the class edu.mit.mortar.controller.action.GlobalEntryAction in the action-servlet.xml) the following steps automatically happen when someone enters launches your application via this entry point:
- The method edu.mit.mortar.controller.action.GlobalEntryAction.execute is called and a session is created and the following session attributes are set:
- GlobalKeys.SAP_SYSTEM_ID
- GlobalKeys.WAS_SYSTEM_ID
- GlobalKeys.WAS_HOST
- GlobalKeys.USER_HOME
- The chained action Your action (which has been configured to chain after /EntryAction) is called which immediately calls the method IDDAction.execute which sets the following session attributes:
- GlobalKeys.CERT
- GlobalKeys.USERNAME
- GlobalKeys.KERBID
- At the end of IDDAction, SAPBaseAction.doProcess is called which opens a connection to SAP.
- At the end of SAPBaseAction, your action's method doAction is called within a MessageRuntimeException try catch. (If an Exception is encountered at this point, processing will stop and the user will be sent to the GlobalKeys.FAIL jsp page with a MessageRuntimeException unless your action intercepts the MessageRuntimeException and handles it.)
- If your action's method doAction calls a SAP RFC, SAPServiceSupport.execute is eventually called and
...