Sunteți pe pagina 1din 4

http://metalink.oracle.com/metalink/plsql/ml2_documents.showNOT?p_...

Bookmark

Go to End

Doc ID: Note:273449.1 Subject:Diagnosing Login Problems with Apps 11.5.9 (FND.G) Type: BULLETIN Status: UNDER_EDIT
IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT ORACLE INTERNAL USE ONLY - DO NOT SEND TO CUSTOMERS This document is very much work in progress, and is currently more like some notes I've made, rather than a note anyone can use ! By all means try to use this information, but come back frequently to see how I am getting on, as I do intend to make it more comprehensible ORACLE INTERNAL USE ONLY - DO NOT SEND TO CUSTOMERS

TEXT/X-HTML Content Type: 20-MAY-2004 Creation Date: Last Revision Date:06-AUG-2004

*** This article is being delivered in Draft form and may contain errors. Please use the MetaLink "Feedback" button to advise Oracle of any issues related to this article. ***

Diagnosing Login Problems with Apps 11.5.9+ Introduction


NOTE - If you are using AS 10g with Apps 11i, please refer to Note 280167.1 - AS10g with Apps 11i - Summary of Login process Since FND patchset G (patch 2655277) and/or 11.5.9 maintenance pack, there is a new URL to launch Applications, namely:
http://<host name>.<domain name>:<HTTP port>/oa_servlets/AppsLogin

See note 226825.1 - Release 11i, Oracle Application Object Library Mini-pack FND.G This is a shortcut defined in zone.properties as below servlet.AppsLogin.code=oracle.apps.fnd.sso.AppsLogin "Self Service Personal Home Page Mode" profile option should be set to "Framework Only" to see the new Framework based Homepage. Setting to "Personal Home Page" reverts the Homepage to the old style look and feel.

Login Flow
/oa_servlets/Appslogin servlet
Gets WebAppsCOntext Sets requestURL = APPSHOMEPAGE unless passed as a parameter. Sets cancelUrl = oracle.apps.fnd.sso.SSOManager.getLoginUrl(); unless passed as a parameter. This finds profile option APPS_SERVLET_AGENT (Apps Servlet Agent) and returns error if cannot get. Sets variable "url" using oracle.apps.fnd.sso.SSOManager.getLoginRedirectUrl sets Mode using Utils.getSSOMode() which gets profile option APPS_SSO (Applications SSO Type) SSWA is set by default if not profile option. Depending on mode, sets url = LOCAL_LOGIN | SSO_LOGIN_REDIRECT | PORTAL if SSWA = SSOUtil.getLocalLoginUrl() This gets profile option APPS_LOCAL_LOGIN_URL (Applications Local Login URL) (AppsLocalLogin.jsp for example) and prepends '/OA_HTML/' if PORTAL = SSOUtil.getPortalUrl() This gets profile option APPS_PORTAL (Applications Portal) This is full URL normally pointing to /pls/XXX_portal30/portal30.home Then calls "constructUrl" to determine the URL to return, which builds URL consisting of url, requestURL, cancelURL, errCode, langCode, errText and home_url parameters If "url" is null, then returns FND-9930 error code, otherwise will redirect to the constructed URL At this point, we have got as far as rendering the Username/PAssword entry screen... /OA_HTML/AppsLocalLogin.jsp or portal30.home

/OA_HTML/AppsLocalLogin.jsp
Gets Profile options FND_BRANDING_SIZE (FND: Branding Size) and ICX_LANGUAGE (ICX: Language) Sets up some message text (Message.class) Uses Package FND_MESSAGE.GET_MESSAGE_INTERNAL () Once we click "Login" button we follow through as below:-

fndvald.jsp
Utils.getConnection() - this throws FND-9902 if cannot get DB connection. SessionMgr.createAppsSession which itself calls wctx.getSessionManager().validateLogin followed by createSession if username.password validated OK. There is some STATEMENT level diagnostics messages from here (for oracle.apps.fnd.sso.SessionMgr) Gets Cookie name from dbc file ICX_COOKIE_NAME or otherwise calls package FND_SESSION_MANAGEMENT.getsessioncookiename Creates SSO Cookie for new user session If requestURL = APPSHOMEPAGE it calls SSOUtil.getHomePage otherwise just passes requestURL through... This calls computeURL, which looks for profile option APPLICATIONS_HOME_PAGE (Self Service Personal Home Page mode) Runs getEnvStore90.getEnv(ICX_PV_SESSION_MODE) which I dont understand... but seems to be 115P | 115J ? If APPLICATIONS_HOME_PAGE = "PHP" or "PHP_FWK" then will set URL = PLSQL_AGENT/OracleNavigate.Responsibility else (for example "FWK") will set URL = "/OA_HTML/OA.jsp?OAFunc=OAHOMEPAGE&dbc=" + AppsAgent.getDBC()

OA.jsp
oracle.apps.fnd.framework.webui.OAPageBean.class oracle.apps.fnd.framework.webui.OAJSPHelper Uses OAJSPHelper to set character encoding for the session, mainly by getting ICX_CLIENT_IANA_ENCODING (ICX: Client IANA Encoding) profile option Then sets redirectURL = pageBean.preparePage Sets flag for Portlet or not Sets functionName from the parameters in the URL (OAHOMEPAGE for example, if URL param is ?OAFunc=OAHOMEPAGE) Sets redirectURL = preparePage() method... this calls "redirectURL = validateUser()" but I think this should return null if I have logged in (this seems to be to do with bookmarkable URLs) sets funcURL = createRFURL() This does some session validation, then calls OAPageContextImpl.createRFURL Which calls FunctionSecurity.getFunction and Function.getFunction... This bit runs SQL to find FunctionID "select function_id from fnd_form_functions where function_name = :1" Then "select function_name, context_dependence, maintenance_mode_support, parameters, type, web_agent_name, web_host_name, web_html_call, web_icon, form_id from fnd_form_functions where function_id = :1" For OAHOMEPAGE the following will be set web_html_call = "OA.jsp?page=/oracle/apps/fnd/framework/navigate/webui/HomePG&homePage=Y&OAPB=FWK_HOMEPAGE_BRAND"

1 of 4

10/20/2005 6:48 PM

http://metalink.oracle.com/metalink/plsql/ml2_documents.showNOT?p_...

type = "JSP" isOAFCall is set to TRUE (as the URL has OA.jsp in the URL) funcCall = web_html_call hasTransactionId = FALSE so adds "&transactionid=xxx" to the funccall then returns this as the new url This new URL is returned to OA.jsp as the redirectURL, so we call OA.jsp with some different parameters.....

OA.jsp - part 2
By now, we should have URL something like: OA.jsp?page=/oracle/apps/fnd/framework/navigate/webui/HomePG&homePage=Y&OAPB=FWK_HOMEPAGE_BRAND&transactionid=xxxxxxx Back into "redirectURL = pageBean.preparePage()" regionCode = OAPageContextImpl.getUrlParameter(request, "page") (page=/oracle/apps/fnd/framework/navigate/webui/HomePG) //Get the application module java class from AK. OAApplicationModule staticAppMod = OAJSPApplicationRegistry.getStaticAKApplicationModule(mRequest); This creates AM called "oracle.apps.fnd.framework.server.OAApplicationModule" with DB connection. Creates MDS context, seems to have handles to MDS repository. Gets page region, using WebBeanTypeData, from MDS repository. Gets transaction_ID Get profile option "FND_FORCE_PAGE_REFRESH" Get profile option "FND_CUSTOM_OA_DEFINTION" < This bit still WIP >

portal30 HOME procedure


Does a owa_util.redirect_url to wwpob_page_util.get_page_url (wrapped PLSQL)

Check versions
Java
(adident Header $OA_JAVA/)
oracle/apps/fnd/sso/AppsLogin.class oracle/apps/fnd/sso/SSOManager.class oracle/apps/fnd/sso/Utils.class oracle/apps/fnd/sso/SSOUtil.class oracle/apps/fnd/common/Message.class oracle/apps/fnd/sso/SessionMgr.class oracle/apps/fnd/common/WebAppsContext.class oracle/apps/fnd/framework/webui/OAPageBean.class oracle/apps/fnd/framework/webui/OAJSPHelper.class oracle/apps/fnd/framework/webui/OAWebBeanConstants.class oracle/apps/fnd/framework/webui/OAPageContextImpl.class oracle/apps/fnd/framework/OAFwkConstants.class oracle/apps/fnd/functionSecurity/Function.class oracle/apps/fnd/framework/mds/OAMDSContextUtils.class

JSP
(adident Header $OA_HTML/)
AppsLocalLogin.jsp fndvald.jsp OA.jsp

Debugging and diagnostics


General OAF
You can turn on OA Framework diagnostics logging in several ways Please refer to Metalink note 139863.1, section 4 Profile Options Reference for more information if required. Set the following profile options at USER level for 1 Applications user. It is important this is setup for 1 user only. You can launch Core Forms directly to gain access to the profile options as you may not be able to login if you are reading this note !
Name Value --------------------------------------------FND: Debug Log Enabled Yes FND: Debug Log Filename /tmp/OAF_Debug.txt FND: Debug Log Module % FND: Debug Log Level STATEMENT

Login to Applications using the Apps Username you specified above. Any error or problem you experiance will still occur, but the file /tmp/OAF_Debug.txt should be created with some diagnostics information. Please upload this file to Oracle Support for further analysis. After you have created this diagnostics file, you should disable logging by setting the USER level profile option listed below:Name Value --------------------------------------------FND: Debug Log Enabled No

Alternatively you can set parameters in the Jserv.properties file to turn on OAF logging for all user sessions (this is not a good idea as it sounds, as performance will be MASSIVELY slow)
wrapper.bin.parameters=-DAFLOG_ENABLED=TRUE wrapper.bin.parameters=-DAFLOG_LEVEL=STATEMENT wrapper.bin.parameters=-DAFLOG_MODULE=% wrapper.bin.parameters=-DAFLOG_FILENAME=/tmp/OAF_Debug.txt

Portal
In <Context>.xml set "s_fwk_debuglevel"

2 of 4

10/20/2005 6:48 PM

http://metalink.oracle.com/metalink/plsql/ml2_documents.showNOT?p_...

This adds servlet.framework.initArgs=debuglevel=x in the zone.properties and you get additional info into the jserv.log file
debugLevel not specified - no performance logging debugLevel=0 - switches on performance logging debugLevel=1 - switches on performance logging & Test Page debugLevel=2 - switches on performance logging & portletTimeout logging

Refer Portal Diagnostics note 242479.1 for more information (and also note 227798.1 possibly) and note 186586.1 for Performance analysis Enable logging by running $APACHE_TOP/portal30/admin/plsql/wwc/prodebug.sql and entering a value of 2. This will enable logging only for Web Provider framework. The following are the values that you could use for switching logging on different modules within Provider Framework.
All modules within Provider Framework : 1 Web Provider framework :2 Portlet Metadata Repository :3 Provider framework(PROPROV) :4 Dologin, LMD , Provider Signon(PROLOGIN) : 5 Provider registry APIs :6

Note: The options that this script suggests will be only 0 and 1, but you could enter any value. Perform the operation in portal that results in the call that you are debugging. Run Portal diags script below to query the log tables for informations.

PPE Logging
Add "servlet.page.initArgs=logmode=debug" to zone.properties (or logmode=perf perhaps) This data is written to jserv.log

Modplsql
Meybe setup modplsql logging - see note 116715.1 This data is collected in error_log

General
Use Note 169490.1 to run Portal Diagnostic Agent and look at the output. This output is prerequisite information if raising any Portal related bug anyway....

APPENDIX A - SQL scripts


Check profile options
REM START OF SQL REM REM Description : script to check profile options REM REM set linesize 140 set pagesize 132 column SHORT_NAME format A30 column NAME format A40 column LEVEL_VAL format 999999999 column VALUE format A60 wrap spool profile_options.txt select p.profile_option_name SHORT_NAME, n.user_profile_option_name NAME, decode(v.level_id, 10001, 'Site', 10002, 'Application', 10003, 'Responsibility', 10004, 'User', 'UnDef') LEVEL_SET, v.level_value LEVEL_VAL, v.profile_option_value VALUE from fnd_profile_options p, fnd_profile_option_values v, fnd_profile_options_tl n where p.profile_option_id = v.profile_option_id (+) and p.profile_option_name = n.profile_option_name and upper(n.user_profile_option_name) like upper('%&profile_name%') / spool off REM END OF SQL

Check messages
REM START OF SQL REM REM Description : script to check messages REM REM spool messages.txt select message_text from fnd_new_messages m, fnd_application a where upper('&message_name') = m.message_name and upper('&language_code') = m.language_code and upper('&application_short_name') = a.application_short_name and m.application_id = a.application_id / spool off REM END OF SQL

Check Apps 11i package versions


REM START OF SQL REM REM Description : Check Apps 11i package versions REM REM login as APPS user REM spool packageVersion.txt select text from user_source where line = 2

3 of 4

10/20/2005 6:48 PM

http://metalink.oracle.com/metalink/plsql/ml2_documents.showNOT?p_...

and name = upper('&enter_package_name') order by line / spool off REM END OF SQL

Portal Diagnostic script


REM START OF SQL REM REM Description : Portal Diagnostic script REM REM login as PORTAL30 user REM spool portalDebug.txt select DOMAIN, SUB_DOMAIN, NAME, USERID, ACTION, to_char(START_TIME, 'DD-MON-RR HH24:MI:SS') TIME_STARTED, ELAPSED_TIME, ROW_COUNT, HTTP_REMOTE_ADDRESS, URL, INFORMATION from wwlog_activity_logs where start_time >= sysdate -1 and action='debug' order by START_TIME / spool off REM END OF SQL

Check XML file in MDS repository


REM START OF SQL REM REM Description : Check XML file in MDS repository REM set serveroutput on spool MDS_output.txt exec JDR_UTILS.printDocument('/oracle/apps/fnd/framework/navigate/webui/HomePG') ; spool off REM END OF SQL

APPENDIX B - RELATED DOCUMENTS


Note 169490.1 - Portal Diagnostic Agent (PDA) Note 161474.1 - Apps RDA Note 198732.1 - How to Set up SSO Debugging Note 245349.1 - Investigating the MDS repository used by Self Service Framework Note 280167.1 - AS10g with Apps 11i - Summary of Login process .
Copyright 2005, Oracle. All rights reserved. Legal Notices and Terms of Use.

4 of 4

10/20/2005 6:48 PM

S-ar putea să vă placă și