prepareSession method in ADF

You can override prepareSession() in your custom Application Module class to do session-specific initializations, such as invoking a stored procedure to initialize the database state for the specific user, store user information, set application-wide configuration parameters based on the user and so on. You may extend the default implementation, as is often nessesary, in order to satisfy various pre-condtions such as user authorization etc. For example, to lock a specific view (E.g. UserView) to only show records with the users own initials (CLB in my case), the following could be done:.The framework invokes prepareSession() when the Application Module is first checked-out from the Application Module pool for a new user session.

Example:

@Override
protected void prepareSession(Session session) {

super.prepareSession(session);

// do session-specific initializations
}

For example we can write the code i.e

 
  public void prepareSession(SessionData sessionData) {
    super.prepareSession(sessionData);
    // Retrieve the J2EE user ID
    String authenticatedUser = getUserPrincipalName();

    if ((authenticatedUser != null) && 
        (authenticatedUser.trim().length() > 0)) {
      DBTransactionImpl dbTransaction = (DBTransactionImpl)getDBTransaction();
      // Parameter for database procedure
      String pApplication = "TUHRA";
      // Transaction statement with procedure call
      CallableStatement callableStmt = 
        dbTransaction.createCallableStatement(("BEGIN " + 
                                               "security_pkg.set_security_context(?, ?); " + 
                                               "END;"), 0);
      try {
        // Register parameters and call procedure
        callableStmt.setString(1, authenticatedUser);
        callableStmt.setString(2, pApplication);
        callableStmt.execute();
      } catch (SQLException sqlExcept) {
        throw new JboException(sqlExcept);
      } finally {
        try {
          if (callableStmt != null) {
            callableStmt.close();
          }
        } catch (SQLException closeExcept) {
          throw new JboException(closeExcept);
        }
      }
    }
  }