Help needed on understanding Application Implementation

I would like to study and document actual implementation steps to implement Oracle Applications, but cannot find any material or courses to help me.
For example:
Conduct client interview to gather business rules
Translate Business rules to Business flow diagrams leading to data flow diagrams
Prepare gap documents
Perform Business Process Re-engineering
etc
Any help will be appreciated

There is an approach called AIM (Application Implementation Method) which you can refer. Details can be found from net or from Metalink.
See if that helps.
Regards
Sumit

Similar Messages

  • Help needed in SAP BO Implementation

    Hi,
    I am very new to SAP Business Objects.
    I have a requirement to Install SAP BO on Windows environment or HP UNIX with integration to BI 7.0. When I read certain documents over the web, I am getting
    confused with the requirement of MS SQL Server or Oracle Server for the BO installation.
    We require the following applications in SAP BO 
    BusinessObjects Edge Series XI Release 3.1
    Xcelsius Enterprise 2008
    Live Office XI Release 3.1
    Integration Kit for SAP Solutions XI Release 3.1
    iView
    Desktop Intelligence
    Web Intelligence
    Please help me in understanding the System Requirements (Server and Client), Software Requirements and the procedure of the SAP BO Installation. I have
    currently added the following SAP Media to the download basket, please mention whether the following will be sufficient or will I have to make additional
    requirements.
    BOBJ XCELSIUS ENGAGE & ENTERPRISE 2008 WINDOWS (32B) 
    BOBJ XCELSIUS PRESENT 2008 WINDOWS (32B)
    BOBJ INTEGRATION FOR SAP SOLUTIONS XI 3.1 WINDOWS
    Integration Kit License Keys
    Expecting your help.
    Thank you
    Regards,
    Vineeth Damodar

    Hello Wineth,
    you will find a lot of Informationes to theese Questions here in the Forum.
    Lets start with some Documents regarding the Requirements of Hardware and OS for your Edge installation.
    Requirements Windows:
    https://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/60cdb229-d874-2b10-18ac-ed2f46873753&overridelayout=true
    Requirements HP-UX(IA64/PA-RISC):
    https://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/00cfd8a7-d874-2b10-00bc-926c5793673d&overridelayout=true
    https://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/10f8b3bb-d874-2b10-7588-fb62836ac37f&overridelayout=true
    Installation Documentation you will find under http://help.sap.com -> Choose "SAP BusinessObjects" -> "Choose "All Products" -> Select your Product -> Download your Guide
    Regarding your Package you can de- select the Xcelsius Engage package. You need also the EDGE Instlallation Package.
    Regards
    -Seb.

  • Help needed to understand business process irrespective of SAP

    Hello all,
    I am an engineer with specialization in electronics and telecommunication. The topic of RFID is thus fascinating for me hence,I have been reading SAP AII for some time now. The components of RFID like tags, readers and communication between them is known to me upto some extend but the business process that SAP AII supports/ implements/ automates are new to me because of which I miss the big picture of SAP AII.
    The material I have been reading on SAP AII describes many such process e.g. goods issue, goods return, slap and Ship, logistic process etc. I find it difficult to comprehend these business processes as I think they are described mainly in jargons/ terms (jargon for me) like "delivery processing", "delivery document", "Shipping document", "handling unit", "outbound and inbound process", "goods posting" and numerous similar terms. Moreover I think the explanation is SAP specific.
    I feel I should take a top down approach to understand SAP AII and for this I first need to understand the business process in generic/ standard terms. Once they are clear I guess I would be able to understand SAP RFID solution.
    I request you all to guide me. Am I taking the right approach? If yes please help me understand the basic business process. Pointers to some good douments or any other resource explaining standard business process will definately help.
    Thank You

    Hi Gaurav,
                   You are very correct that being a technical person you find difficulty in understanding jargon terms of SAP.
    Let me explain you the scenario:
    There are two sides to SAP
    1) Functional - Understanding of Business Processes
    Here there are two parts:
    a) Business Process With Respect To SAP AII - These processes generally deals with RFID technology that happens in warehouses, disribution centers and are close to technological world. These deal only with SAP AII
    b) Business Process With Respect To SAP R/3 - These processes deals with SAP AII when integrated with backend systems like SAP R/3, SAP WM or other systems. These talk about the end to end scenario of RFID. Like you pointed out, delivery processing, etc.
    Understanding of Core that  is part a above and a bit basics about b will be very helpful.
    2) Technical - Understanding SAP AII
    Here also two parts are there:
    a) Understanding RFID as a technology with SAP AII - Deals with understaning technological viewpoints on RFID and mapping it to SAP AII. Example Devices, Tags, Device Controllers, Middlewares and their representation in SAP AII.
    Most important is above part
    b) Understanding Technological part of SAP itself - For example, ABAP, BAPI, BADI etc.
    So this is how it works. You are going very correct and follow above things.
    Please revert if you have any specific questions.
    Thnks

  • Help needed to understand JLS �15.14

    Can someone please help me to understand JLS �15.14 (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.14), it says:
    Postfix expressions include uses of the postfix ++ and -- operators. Also, as discussed in �15.8, names are not considered to be primary expressions, but are handled separately in the grammar to avoid certain ambiguities. They become interchangeable only here, at the level of precedence of postfix expressions.
    PostfixExpression:
    Primary
    ExpressionName
    PostIncrementExpression
    PostDecrementExpression
    Questions:
    1. According to documentation above, "Primary" & "ExpressionName" are also considered as "PostfixExpression". Can someone please explain with some grammar examples?
    2. The statement "They become interchangeable only here, at the level of precedence of postfix expressions." What is exactly interchangeable? Where can I find the level of precedence of postfix expressions?
    Thank you for your time.

    Well I wouldn't consider myself any expert in language grammars and thus I don't really want to take any position considering this spec. Even though I know how to use the ++ and -- operators, this kind of documentation always remains cryptic :)

  • Help needed in understanding the code.

    Hi All,
    I am just trying to understand the Java code in one Self Serice page. However, I am having tough in understanding the CO code. In the prosessRequest class, I have the below code.
    oapagecontext.putTransactionValue("AddAssignmentInsertRowFlag", "N");
    oaapplicationmodule.getTransaction().commit();
    As soon as, oaapplicationmodule.getTransaction().commit();
    gets executed, its calling some other class. Not sure what is being called, but i can see the log messages that its executing some other class which actually does the calls to DB APIs and inserting data into main tables.
    Can you please explain me what is being called to make DB API calls. I would greatly appreciate your help.
    Thanks in Advance!
    - Rani
    ****************************Here is the full code of class for your reference****************************
    public void processFormRequest(OAPageContext oapagecontext, OAWebBean oawebbean)
    if("SelectedResourceLink".equals(oapagecontext.getParameter("event")))
    Debug.log(oapagecontext, this, "SelectedResourceLink has been pressed", 3);
    oapagecontext.redirectImmediately("OA.jsp?akRegionCode=PA_SELECTED_RESOURCES_LAYOUT&akRegionApplicationId=275", true, "RP");
    String s = (String)oapagecontext.getTransactionValue("AssignmentType");
    super.processFormRequest(oapagecontext, oawebbean);
    Debug.log(oapagecontext, this, "in processFormRequest()", 3);
    OAApplicationModule oaapplicationmodule = oapagecontext.getRootApplicationModule();
    if(!"Y".equals(oapagecontext.getParameter("paMass")))
    String s1 = oapagecontext.getParameter("event");
    if("lovUpdate".equals(s1))
    Debug.log(oapagecontext, this, "*** User Selected a value from LOV ***", 3);
    String s3 = oapagecontext.getParameter("source");
    Debug.log(oapagecontext, this, "*** lovInputSourceId = " + s3 + " ***", 3);
    if("ProjectNumber".equals(s3) && "Project".equals(s))
    Hashtable hashtable = oapagecontext.getLovResultsFromSession(s3);
    String s10 = (String)hashtable.get("ProjectId");
    Debug.log(oapagecontext, this, "*** ProjectId ***" + s10, 3);
    oapagecontext.putTransactionValue("paProjectId", s10);
    if("Project".equals(s))
    Debug.log(oapagecontext, this, "*** Setting default value for Delivery assignment ***", 3);
    oaapplicationmodule.invokeMethod("defaultProjectAttrs");
    if("RoleName".equals(s3))
    Hashtable hashtable1 = oapagecontext.getLovResultsFromSession(s3);
    Debug.log(oapagecontext, this, "*** RoleName Hashtable Contents ***" + hashtable1.toString(), 3);
    String s11 = (String)hashtable1.get("RoleId");
    Debug.log(oapagecontext, this, "*** RoleId ***" + s11, 3);
    Debug.log(oapagecontext, this, "*** AssignmentType = " + s + "***", 3);
    if("Open".equals(s))
    Debug.log(oapagecontext, this, "*** Calling defaultJobAttrs for Open Assignment***", 3);
    Serializable aserializable[] = {
    s11
    oaapplicationmodule.invokeMethod("defaultJobAttrs", aserializable);
    if("Template".equals(s) || "Open".equals(s))
    Debug.log(oapagecontext, this, "*** Defaulting Competencies ***" + s11, 3);
    OAViewObject oaviewobject = (OAViewObject)oapagecontext.getApplicationModule(oawebbean).findViewObject("RoleCompetenciesVO");
    oaviewobject.setMaxFetchSize(-1);
    oaviewobject.setWhereClauseParam(0, s11);
    oaviewobject.executeQuery();
    Debug.log(oapagecontext, this, "*** End LOV event ***", 3);
    String s4 = "";
    String s8 = "";
    OASubTabLayoutBean oasubtablayoutbean1 = (OASubTabLayoutBean)oawebbean.findIndexedChildRecursive("AddAssignmentSubTabLayout");
    if("Project".equals(s) && !oasubtablayoutbean1.isSubTabClicked(oapagecontext))
    OAViewObject oaviewobject1 = (OAViewObject)oapagecontext.getApplicationModule(oawebbean).findViewObject("AddNewAssignmentVO");
    s4 = (String)oaviewobject1.first().getAttribute("ProjectId");
    s8 = (String)oaviewobject1.first().getAttribute("ProjectNumber");
    Debug.log(oapagecontext, this, "*** lProjectId = " + s4, 3);
    Debug.log(oapagecontext, this, "*** lProjectNumber = " + s8, 3);
    if("Project".equals(s) && !oasubtablayoutbean1.isSubTabClicked(oapagecontext) && !StringUtils.isNullOrEmpty(s8))
    Debug.log(oapagecontext, this, "Delivery Assignment, Project Number is there but no Project Id", 3);
    if(s4 == null || s4.equals(""))
    ViewObject viewobject = oapagecontext.getApplicationModule(oawebbean).findViewObject("ObtainProjectId");
    if(viewobject == null)
    String s14 = "SELECT project_id FROM PA_PROJECTS_ALL WHERE segment1 =:1";
    viewobject = oaapplicationmodule.createViewObjectFromQueryStmt("ObtainProjectId", s14);
    viewobject.setWhereClauseParam(0, s8);
    viewobject.executeQuery();
    int j = viewobject.getRowCount();
    if(j != 1)
    Debug.log(oapagecontext, this, "Error : Project Number is Invalid or not unique", 3);
    OAException oaexception4 = null;
    oaexception4 = new OAException("PA", "PA_PROJECT_NUMBER_INVALID");
    oaexception4.setApplicationModule(oaapplicationmodule);
    throw oaexception4;
    oracle.jbo.Row row = viewobject.last();
    if(row != null)
    Object obj2 = row.getAttribute(0);
    if(obj2 != null)
    s4 = obj2.toString();
    if(s4 != null)
    oapagecontext.putTransactionValue("paProjectId", s4);
    if(oaapplicationmodule.findViewObject("AddNewAssignmentsVO") != null)
    oaapplicationmodule.findViewObject("AddNewAssignmentVO").first().setAttribute("ProjectId", s4);
    } else
    Debug.log(oapagecontext, this, "Error : No rows returned in Project Number query", 3);
    OAException oaexception5 = null;
    oaexception5 = new OAException("PA", "PA_PROJECT_NUMBER_INVALID");
    oaexception5.setApplicationModule(oaapplicationmodule);
    throw oaexception5;
    String s12 = "F";
    if(s4 != null && !s4.equals(""))
    String s13 = Security.checkUserPrivilege("PA_ASN_CR_AND_DL", "PA_PROJECTS", s4, oapagecontext, false);
    if("F".equals(s13))
    OAException oaexception3 = null;
    oaexception3 = new OAException("PA", "PA_ADD_DELIVERY_ASMT_SECURITY");
    oaexception3.setApplicationModule(oaapplicationmodule);
    Debug.log(oapagecontext, this, "ERROR:" + oaexception3.getMessage(), 3);
    throw oaexception3;
    OAViewObject oaviewobject2 = (OAViewObject)oapagecontext.getApplicationModule(oawebbean).findViewObject("AddNewAssignmentVO");
    Object obj = oaviewobject2.first().getAttribute("BillRateOverride");
    Object obj1 = oaviewobject2.first().getAttribute("BillRateCurrOverride");
    Object obj3 = oaviewobject2.first().getAttribute("MarkupPercentOverride");
    Object obj4 = oaviewobject2.first().getAttribute("DiscountPercentOverride");
    Object obj5 = oaviewobject2.first().getAttribute("TpRateOverride");
    Object obj6 = oaviewobject2.first().getAttribute("TpCurrencyOverride");
    Object obj7 = oaviewobject2.first().getAttribute("TpCalcBaseCodeOverride");
    Object obj8 = oaviewobject2.first().getAttribute("TpPercentAppliedOverride");
    Object obj9 = null;
    Object obj10 = null;
    Debug.log(oapagecontext, this, "in AddAssignmentsTopCO processFcstInfoRg(): getting the implementation options", 3);
    Object obj11 = oaviewobject2.first().getAttribute("BrRateDiscReasonCode");
    Object obj12 = oapagecontext.getTransactionValue("rateDiscReasonFlag");
    Object obj13 = oapagecontext.getTransactionValue("brOverrideFlag");
    Object obj14 = oapagecontext.getTransactionValue("brDiscountOverrideFlag");
    String s22 = oapagecontext.getParameter("BillRateRadioGroup");
    if("BRCurrencyRadioButton".equals(s22))
    Debug.log(oapagecontext, this, "BRCurrencyRadioButton chosen", 3);
    if(obj == null || obj1 == null)
    Debug.log(oapagecontext, this, "error", 3);
    OAException oaexception6 = new OAException("PA", "PA_CURR_BILL_RATE_REQUIRED");
    oaexception6.setApplicationModule(oaapplicationmodule);
    throw oaexception6;
    } else
    if("BRMarkupRadioButton".equals(s22))
    Debug.log(oapagecontext, this, "BRMarkup%RadioButton chosen", 3);
    if(obj3 == null)
    Debug.log(oapagecontext, this, "error", 3);
    OAException oaexception7 = new OAException("PA", "PA_MARKUP_PERCENT_REQUIRED");
    oaexception7.setApplicationModule(oaapplicationmodule);
    throw oaexception7;
    } else
    if("BRDiscountRadioButton".equals(s22))
    Debug.log(oapagecontext, this, "BRDiscount%RadioButton chosen", 3);
    if(obj4 == null)
    Debug.log(oapagecontext, this, "error", 3);
    OAException oaexception8 = new OAException(oapagecontext.getMessage("PA", "PA_DISCOUNT_PERCENT_REQUIRED", null));
    oaexception8.setApplicationModule(oaapplicationmodule);
    throw oaexception8;
    if("Y".equals(oapagecontext.getTransactionValue("paMass")) || "Admin".equals(s) || "Template".equals(s))
    Debug.log(oapagecontext, this, "Need not have this check for team templates ", 3);
    } else
    if(obj13 != null && obj13.equals("Y") && obj12 != null && obj12.equals("Y") && "BRCurrencyRadioButton".equals(s22) && StringUtils.isNullOrEmpty((String)obj11))
    Debug.log(oapagecontext, this, "error 1", 3);
    OAException oaexception9 = new OAException("PA", "PA_RATE_DISC_REASON_REQUIRED");
    oaexception9.setApplicationModule(oaapplicationmodule);
    throw oaexception9;
    if(obj14 != null && obj14.equals("Y") && obj12 != null && obj12.equals("Y") && "BRDiscountRadioButton".equals(s22) && StringUtils.isNullOrEmpty((String)obj11))
    Debug.log(oapagecontext, this, "error 2", 3);
    OAException oaexception10 = new OAException("PA", "PA_RATE_DISC_REASON_REQUIRED");
    oaexception10.setApplicationModule(oaapplicationmodule);
    throw oaexception10;
    Debug.log(oapagecontext, this, "*** Selected transfer price radio shr = " + s22, 3);
    oapagecontext.putTransactionValue("BROGroupSelected", s22);
    Debug.log(oapagecontext, this, "*** 1 :Selected bill rate radio = " + s22, 3);
    if(s22 != null)
    oapagecontext.putSessionValue("BROGroupSelected", s22);
    s22 = oapagecontext.getParameter("TransferPriceRadioGroup");
    Debug.log(oapagecontext, this, "*** Selected transfer price radio = " + s22, 3);
    if("TPCurrencyRadioButton".equals(s22))
    Debug.log(oapagecontext, this, "***TPCurrencyRadioButton chosen", 3);
    if(obj5 == null || obj6 == null)
    Debug.log(oapagecontext, this, "error", 3);
    OAException oaexception11 = new OAException("PA", "PA_CURR_RATE_REQUIRED");
    oaexception11.setApplicationModule(oaapplicationmodule);
    throw oaexception11;
    } else
    if("TPBasisRadioButton".equals(s22))
    Debug.log(oapagecontext, this, "***TPBasisRadioButton chosen", 3);
    if(obj7 == null || obj8 == null)
    Debug.log(oapagecontext, this, "error", 3);
    OAException oaexception12 = new OAException("PA", "PA_BASIS_APPLY_PERCENT_REQD");
    oaexception12.setApplicationModule(oaapplicationmodule);
    throw oaexception12;
    oapagecontext.putTransactionValue("TPORadioGroupSelected", s22);
    if(oaapplicationmodule.findViewObject("AddNewAssignmentVO").first().getAttribute("RoleId") != null)
    Debug.log(oapagecontext, this, "*** Role Id is + " + oaapplicationmodule.findViewObject("AddNewAssignmentVO").first().getAttribute("RoleId"), 3);
    if(oapagecontext.getParameter("SearchCompetencies") != null)
    String s2 = "OA.jsp?akRegionCode=PA_COMP_SEARCH_LAYOUT&akRegionApplicationId=275&paCallingPage=AddAssignment";
    oapagecontext.redirectImmediately(s2, true, "RP");
    OASubTabLayoutBean oasubtablayoutbean = (OASubTabLayoutBean)oawebbean.findIndexedChildRecursive("AddAssignmentSubTabLayout");
    if(s.equals("Project") && oasubtablayoutbean.isSubTabClicked(oapagecontext) && !StringUtils.isNullOrEmpty((String)oapagecontext.getTransactionValue("paProjectId")))
    String s5 = "PA_ASN_FCST_INFO_ED";
    String s9 = "F";
    s9 = Security.checkUserPrivilege(s5, "PA_PROJECTS", (String)oapagecontext.getTransactionValue("paProjectId"), oapagecontext, false);
    if(s9.equals("F"))
    Debug.log(oapagecontext, this, "Error : PA_ASN_FCST_INFO_ED previelge not found", 3);
    OAException oaexception2 = null;
    oaexception2 = new OAException("PA", "PA_NO_SEC_FIN_INFO");
    oaexception2.setApplicationModule(oaapplicationmodule);
    throw oaexception2;
    if(oapagecontext.getParameter("GoBtn") != null)
    if("Y".equals(oapagecontext.getTransactionValue("paMass")) && "0".equals(oapagecontext.getTransactionValue("paNumSelectedResources")))
    OAException oaexception = new OAException("PA", "PA_NO_RESOURCE_SELECTED");
    oaexception.setApplicationModule(oapagecontext.getRootApplicationModule());
    Debug.log(oapagecontext, this, "ERROR:" + oaexception.getMessage(), 3);
    throw oaexception;
    String s6 = "T";
    if(s.equals("Admin") && "Y".equals(oapagecontext.getTransactionValue("paMass")) && "1".equals(oapagecontext.getTransactionValue("paNumSelectedResources")))
    Debug.log(oapagecontext, this, "resource id[19] is " + (String)oapagecontext.getTransactionValue("paResourceId"), 3);
    if(oapagecontext.getTransactionValue("AdminSecurityChecked") == null)
    String s7 = Security.checkPrivilegeOnResource("-999", (String)oapagecontext.getTransactionValue("paResourceId"), SessionUtils.getResourceName((String)oapagecontext.getTransactionValue("paResourceId"), oapagecontext), "PA_ADM_ASN_CR_AND_DL", null, oapagecontext, false);
    if("F".equals(s7))
    OAException oaexception1 = new OAException("PA", "PA_ADD_ADMIN_ASMT_SECURITY");
    oaexception1.setApplicationModule(oapagecontext.getRootApplicationModule());
    Debug.log(oapagecontext, this, "ERROR:" + oaexception1.getMessage(), 3);
    throw oaexception1;
    if("SUBMIT_APPRVL".equals(oapagecontext.getParameter("AddAsgmtApplyAction")))
    oapagecontext.putTransactionValue("Save", "N");
    else
    oapagecontext.putTransactionValue("Save", "Y");
    String as[] = oaapplicationmodule.getApplicationModuleNames();
    String as1[] = oaapplicationmodule.getViewObjectNames();
    Debug.log(oapagecontext, this, "no of app module: " + as.length, 3);
    Debug.log(oapagecontext, this, "no of view: " + as1.length, 3);
    for(int i = 0; i < as.length; i++)
    Debug.log(oapagecontext, this, "app module: " + as, 3);
    for(int k = 0; k < as1.length; k++)
    Debug.log(oapagecontext, this, "app module: " + as1[k], 3);
    Debug.log(oapagecontext, this, "*** assignmentType = " + s, 3);
    Debug.log(oapagecontext, this, "*** projectId = " + oapagecontext.getTransactionValue("paProjectId"), 3);
    if("Project".equals(s) && !StringUtils.isNullOrEmpty((String)oapagecontext.getTransactionValue("paProjectId")) && !"Y".equals(oapagecontext.getParameter("paMass")))
    Debug.log(oapagecontext, this, "*** Setting default staffing owner for add delivery assignment -- projectId = " + oapagecontext.getTransactionValue("paProjectId"), 3);
    oaapplicationmodule.invokeMethod("setDefaultStaffingOwner");
    OAViewObject oaviewobject3 = (OAViewObject)oaapplicationmodule.findViewObject("RoleCompetenciesVO");
    oaviewobject3.setMaxFetchSize(0);
    oaviewobject3.setRangeSize(-1);
    oracle.jbo.Row arow[] = oaviewobject3.getAllRowsInRange();
    for(int l = 0; l < arow.length; l++)
    RoleCompetenciesVORowImpl rolecompetenciesvorowimpl = (RoleCompetenciesVORowImpl)oaviewobject3.getRowAtRangeIndex(l);
    Debug.log(oapagecontext, this, "roleCompetenciesVORowImpl" + rolecompetenciesvorowimpl, 3);
    rolecompetenciesvorowimpl.setPlsqlState((byte)0);
    oapagecontext.putTransactionValue("AddAssignmentInsertRowFlag", "N");
    oaapplicationmodule.getTransaction().commit();
    if("Y".equals(oapagecontext.getTransactionValue("paMass")) && !"1".equals(oapagecontext.getTransactionValue("paNumSelectedResources")))
    if(!"SUBMIT_APPRVL".equals(oapagecontext.getParameter("AddAsgmtApplyAction")))
    Debug.log(oapagecontext, this, "Save, Mass, NumSelectedResources>1", 3);
    Debug.log(oapagecontext, this, "work flow has been launched", 3);
    OADialogPage oadialogpage = new OADialogPage((byte)3, new OAException("PA", "PA_MASS_ASSIGNMENT_CONFIRM"), null, "OA.jsp?akRegionCode=PA_RESOURCE_LIST_LAYOUT&akRegionApplicationId=275&addBreadCrumb=N", null);
    oadialogpage.setRetainAMValue(false);
    oapagecontext.redirectToDialogPage(oadialogpage);
    return;
    Debug.log(oapagecontext, this, "SaveAndSubmit, Mass, NumSelectedResources>1", 3);
    putParametersOnSession(oapagecontext);
    int i1 = 0;
    int j1 = 0;
    String s21 = "SelectedResourceId";
    int l1 = Integer.parseInt(oapagecontext.getTransactionValue("paNumSelectedResources").toString());
    Debug.log(oapagecontext, this, "size of resourceArray = " + l1, 3);
    String as2[] = new String[l1];
    for(; !"END".equals(oapagecontext.getTransactionValue(s21.concat(Integer.toString(i1)))); i1++)
    if(oapagecontext.getTransactionValue(s21.concat(Integer.toString(i1))) != null)
    Debug.log(oapagecontext, this, "resource id = " + oapagecontext.getTransactionValue(s21.concat(Integer.toString(i1))).toString(), 3);
    as2[j1] = oapagecontext.getTransactionValue(s21.concat(Integer.toString(i1))).toString();
    j1++;
    SessionUtils.putMultipleParameters("paResourceId", as2, oapagecontext);
    Debug.log(oapagecontext, this, "redirect to Mass Submit for Approval page", 3);
    oapagecontext.redirectImmediately("OA.jsp?akRegionCode=PA_MASS_SUBMIT_LAYOUT&akRegionApplicationId=275&paCallingPage=MassAdd&paProjectId=" + oapagecontext.getTransactionValue("p_project_id"), false, "RP");
    return;
    if("RETURN_TO".equals(oapagecontext.getParameter("AddAsgmtApplyAction")))
    Debug.log(oapagecontext, this, "Return to Option Selected ", 3);
    String s15 = (String)oapagecontext.getTransactionValue("PrevPageUrl");
    int k1 = s15.indexOf("OA.jsp?");
    s15 = s15.substring(k1);
    Debug.write(oapagecontext, this, "*** RETURN_TO URL: " + s15, 3);
    oapagecontext.redirectImmediately(s15);
    } else
    if("ADD_ANOTHER".equals(oapagecontext.getParameter("AddAsgmtApplyAction")))
    Debug.log(oapagecontext, this, "Add Another Option Selected", 3);
    oaapplicationmodule.invokeMethod("resetAddNewAssignment");
    if(oaapplicationmodule.findViewObject("RoleCompetenciesVO") != null)
    oaapplicationmodule.findViewObject("RoleCompetenciesVO").clearCache();
    String s16;
    if(!s.equals("Project") && !s.equals("Admin"))
    s16 = "OA.jsp?akRegionCode=PA_ADD_ASSIGNMENTS_PAGE_LAYOUT&akRegionApplicationId=275&paProjectId=" + oapagecontext.getTransactionValue("paProjectId") + "&paAssignmentType=" + s + "&OA_SubTabIdx=0";
    else
    s16 = "OA.jsp?akRegionCode=PA_ADD_ASSIGNMENTS_PAGE_LAYOUT&akRegionApplicationId=275&paResourceId=" + oapagecontext.getTransactionValue("paResourceId") + "&paAssignmentType=" + s + "&OA_SubTabIdx=0";
    Debug.log(oapagecontext, this, "nextUrl " + s16, 3);
    if("Template".equals(s))
    oapagecontext.redirectImmediately(s16, true, "S");
    else
    oapagecontext.redirectImmediately(s16, false, "S");
    } else
    if("UPDATE_DETAILS".equals(oapagecontext.getParameter("AddAsgmtApplyAction")))
    Debug.log(oapagecontext, this, "Update Details Selected ", 3);
    String s17 = "";
    if("Staffed".equals(s))
    s17 = "ProjStaffedAsmt";
    else
    if("Admin".equals(s))
    s17 = "AdminAsmt";
    else
    if("Project".equals(s))
    s17 = "PersonStaffedAsmt";
    else
    if("Open".equals(s))
    s17 = "OpenAsmt";
    else
    if("Template".equals(s))
    s17 = "TemplateAsmt";
    String s19 = "OA.jsp?akRegionCode=PA_ASMT_LAYOUT&akRegionApplicationId=275&paProjectId=" + oapagecontext.getTransactionValue("paProjectId") + "&paAssignmentId=" + oapagecontext.getTransactionValue("wfOutAssignmentId") + "&paCalledPage=" + s17 + "&addBreadCrumb=RP";
    Debug.log(oapagecontext, this, "UPDATE_DETAILS: URL: " + s19, 3);
    oapagecontext.redirectImmediately(s19, false, "RP");
    if(s.equals("Staffed") || s.equals("Admin") || s.equals("Project"))
    String s18 = (String)oapagecontext.getTransactionValue("wfOutResourceId");
    String s20 = (String)oapagecontext.getTransactionValue("wfOutAssignmentId");
    Debug.log(oapagecontext, this, "outResourceId " + s18, 3);
    Debug.log(oapagecontext, this, "outAssignmentId " + s20, 3);
    if("SUBMIT_APPRVL".equals(oapagecontext.getParameter("AddAsgmtApplyAction")))
    if(s.equals("Staffed"))
    oapagecontext.redirectImmediately("OA.jsp?akRegionCode=PA_SUBMIT_ASMT_APR_LAYOUT&akRegionApplicationId=275&paAsgmtId=" + s20 + "&paResourceId=" + s18 + "&paProjectId=" + oapagecontext.getTransactionValue("paProjectId") + "&paAsgmtAprStatus=ASGMT_APPRVL_WORKING&paAssignmentType=" + s + "&paCallingPage=AddAssignment", false, "RP");
    return;
    oapagecontext.redirectImmediately("OA.jsp?akRegionCode=PA_SUBMIT_ASMT_APR_LAYOUT&akRegionApplicationId=275&paAsgmtId=" + s20 + "&paResourceId=" + s18 + "&paAsgmtAprStatus=ASGMT_APPRVL_WORKING&paAssignmentType=" + s + "&paCallingPage=AddAssignment", false, "RP");

    Hi Rani,
    As soon as the transaction is commited the methods in the VORowImpl Class are called.
    You can check in the VORowImpl class and search for the log messages.
    Thanks,
    Gaurav

  • Help need in ADF application security.

    Hi All,
    I need to implement the ADF application with authentication.Iam using jdeveloper 11.1.1.3.0 and Standalone WLS.
    I want to create group in WLS and map the user present in group for authentication.
    Any one please provide the tutorial link or video link so that i can implement the authentication as most of the link is for jdev 10 not for jdev 11.
    Regards,
    Suresh kumar.k

    would this help you:(which is exactly what I suggested in the other place Suresh asked :) )
    Reading the docs is always a good place to start.
    Good luck,
    john

  • Help needed in understanding the concept of hierarchical queries

    I really need help in this matter. I have a flafile containing about 4000 rows. It is from my supplier, it's structure is as follows:
    create table Flatfile
    (Pgroup varchar2(30),
    Pclass varchar2(30),
    Manufacturer varchar2(30),
    Article varchar2(30),
    Price Number(6,2));
    Insert into Flatfile Values
    ('Application Software','Database Software','Oracle','Oracle 10G',115);
    Insert into Flatfile Values
    ('Application Software','Database Software','Microsoft','MS SQL Server 2000',200);
    Insert into Flatfile Values
    ('Application Software','Spreadsheet Software','Microsoft','Excel',100);
    Insert into Flatfile Values
    ('Monitor','15"','Acer','Acer 15"" TFT superscreen',199);
    Insert into Flatfile Values
    ('Monitor','15"','Sony','Sony R1500 flat',225);
    Insert into Flatfile Values
    ('Monitor','17"','Philips','Philips Flatscreen',250);
    Insert into Flatfile Values
    ('Monitor','19"','Viewsonic','Viewsonic PLasma Monitor',275);
    Insert into Flatfile Values
    ('Processor','AMD','AMD','FX-55',600);
    Insert into Flatfile Values
    ('Processor','Intel','Intel','P4 3 GHZ',399);
    My goal is to make a hierarchical query with the start with and connect by clauses. From what I have read is that I need to normalize the data of the flatfile.
    How do I achieve a table which I can query so that the query will represent the hierarchy that exists. Namely
    Pgroup
    ++Pclasse
    Application Software
    ++Database Software
    ++Spreadsheet Software
    So a 2-level hierarchy. I'd like to understand this simple concept first. I built on the knowledge that I gain. So the questions are:
    1.What do I need to do to make the table so that I can use a hierarchical query on it?
    2. How should the query syntax be?
    3. Is it also possible to get the data in the hierarchical query sorted asec?
    I would only like to use the simple structures of the start with and connect by clauses first. I've read there are some new additions to 10G. The problem with the examples used by the tutorials is that the tables are already made so that they are suitable for hierarchical queries. I hope to understand it by this example. And take it a step further.
    Sincerely,
    Pete

    Primarily hierarchy query serves to process tree-like structures which RDBMS simulates using through parent-child relation, often in a single table (see famoust
    EMP table where employee can have the manager who is an employee at the same time).
    In your case it could look like:
    SQL> select pgroup, pclass from flatfile;
    PGROUP                         PCLASS
    Application Software           Database Software
    Application Software           Database Software
    Application Software           Spreadsheet Software
    Monitor                        15"
    Monitor                        15"
    Monitor                        17"
    Monitor                        19"
    Processor                      AMD
    Processor                      Intel
                                   Application Software
                                   Monitor
                                   Processor
    12 rows selected.
    SQL> select decode(level,1,pclass,'  ' || pclass), Manufacturer from flatfile
      2  start with pgroup is null
      3  connect by prior pclass = pgroup
      4  /
    DECODE(LEVEL,1,PCLASS,''||PCLASS MANUFACTURER
    Application Software
      Database Software              Oracle
      Database Software              Microsoft
      Spreadsheet Software           Microsoft
    Monitor
      15"                            Acer
      15"                            Sony
      17"                            Philips
      19"                            Viewsonic
    Processor
      AMD                            AMD
      Intel                          Intel
    12 rows selected.The hierarchy syntax is described completely in the documentation including
    LEVEL and PRIOR keywords.
    As for the ordering question you can use siblings ordering:
    SQL> select decode(level,1,pclass,'  ' || pclass), Manufacturer from flatfile
      2  start with pgroup is null
      3  connect by prior pclass = pgroup
      4  order siblings by 1 desc
      5  /
    DECODE(LEVEL,1,PCLASS,''||PCLASS MANUFACTURER
    Processor
      Intel                          Intel
      AMD                            AMD
    Monitor
      19"                            Viewsonic
      17"                            Philips
      15"                            Acer
      15"                            Sony
    Application Software
      Spreadsheet Software           Microsoft
      Database Software              Oracle
      Database Software              Microsoft
    12 rows selected.Rgds.

  • Help needed in understanding GridBagLayout situation

    I have a JPanel with a JInternalFrame and a few JPanels inside of it. The JPanel is using GridBagLayout.
    When a user moves the JInternalFrame inside of the panel what is happening exactly? How is it moving the frame with relation to the Layout? It doesn't appear to be bound by the Layout. When the user drags the frame to a new location what methods are being invoked?

    Having looked at the JXMapViewer which extedns XJPanel and XJPanel extends JPanel.
    so if you want to get notified you need to add ComponentListener to the instance of JXMapViewer to get notificed when the following happens
    The below is a copy from java tutorial for internalframe and I have added the MyComponentListener just to give you some ideas.
    Hope this could help
    import javax.swing.JInternalFrame;
    import javax.swing.JDesktopPane;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JMenuBar;
    import javax.swing.JFrame;
    import javax.swing.KeyStroke;
    import java.awt.event.*;
    import java.awt.*;
    * InternalFrameDemo.java requires:
    *   MyInternalFrame.java
    public class InternalFrameDemo extends JFrame
                                   implements ActionListener {
        JDesktopPane desktop;
        public InternalFrameDemo() {
            super("InternalFrameDemo");
            //Make the big window be indented 50 pixels from each edge
            //of the screen.
            int inset = 50;
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            setBounds(inset, inset,
                      screenSize.width  - inset*2,
                      screenSize.height - inset*2);
            //Set up the GUI.
            desktop = new JDesktopPane(); //a specialized layered pane
            createFrame(); //create first "window"
            setContentPane(desktop);
            setJMenuBar(createMenuBar());
            //Make dragging a little faster but perhaps uglier.
            desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
        protected JMenuBar createMenuBar() {
            JMenuBar menuBar = new JMenuBar();
            //Set up the lone menu.
            JMenu menu = new JMenu("Document");
            menu.setMnemonic(KeyEvent.VK_D);
            menuBar.add(menu);
            //Set up the first menu item.
            JMenuItem menuItem = new JMenuItem("New");
            menuItem.setMnemonic(KeyEvent.VK_N);
            menuItem.setAccelerator(KeyStroke.getKeyStroke(
                    KeyEvent.VK_N, ActionEvent.ALT_MASK));
            menuItem.setActionCommand("new");
            menuItem.addActionListener(this);
            menu.add(menuItem);
            //Set up the second menu item.
            menuItem = new JMenuItem("Quit");
            menuItem.setMnemonic(KeyEvent.VK_Q);
            menuItem.setAccelerator(KeyStroke.getKeyStroke(
                    KeyEvent.VK_Q, ActionEvent.ALT_MASK));
            menuItem.setActionCommand("quit");
            menuItem.addActionListener(this);
            menu.add(menuItem);
            return menuBar;
        //React to menu selections.
        public void actionPerformed(ActionEvent e) {
            if ("new".equals(e.getActionCommand())) { //new
                createFrame();
            } else { //quit
                quit();
        //Create a new internal frame.
        protected void createFrame() {
            MyInternalFrame frame = new MyInternalFrame();
            MyComponentListener listener = new MyComponentListener();
            frame.addComponentListener(listener);
            frame.setVisible(true); //necessary as of 1.3
            desktop.add(frame);
            try {
                frame.setSelected(true);
            } catch (java.beans.PropertyVetoException e) {}
        //Quit the application.
        protected void quit() {
            System.exit(0);
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
        private static void createAndShowGUI() {
            //Make sure we have nice window decorations.
            JFrame.setDefaultLookAndFeelDecorated(true);
            //Create and set up the window.
            InternalFrameDemo frame = new InternalFrameDemo();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //Display the window.
            frame.setVisible(true);
        public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
    private class MyComponentListener implements ComponentListener {
              * Invoked when the component's size changes.
             public void componentResized(ComponentEvent e) {
                  System.out.println("comp resized");
              * Invoked when the component's position changes.
             public void componentMoved(ComponentEvent e) {
                  System.out.println("comp moved");
              * Invoked when the component has been made visible.
             public void componentShown(ComponentEvent e) {
                  System.out.println("comp shown");
              * Invoked when the component has been made invisible.
             public void componentHidden(ComponentEvent e) {
                  System.out.println("comp hidden");
         } // listener class
    /* Used by InternalFrameDemo.java. */
    private class MyInternalFrame extends JInternalFrame {
         int openFrameCount = 0;
         final int xOffset = 30, yOffset = 30;
        public MyInternalFrame() {
            super("Document #",
                  true, //resizable
                  true, //closable
                  true, //maximizable
                  true);//iconifiable
            //...Create the GUI and put it in the window...
            //...Then set the window size or call pack...
            setSize(300,300);
            //Set the window's location.
            setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
    }Regards,
    Alan Mehio
    London, UK

  • Help needed- Caller tone application using JTAPI and JMF

    Hi to All,
    I want to make a Caller Tone Application for Cisco IP phone.
    For that application I am using JTAPI and JMF.
    I am new to this two technologies.
    Can somebody help me for how to accomplish this?
    ---Ashish

    Hi Jerry,
    You can run analog input and counter tasks concurrently.  You can start them using software timing basically at the same time which may be fine for your needs and is the easiest to implement.  You also can use a hardware start trigger to start the tasks if you prefer.  It all depends on the level of synchronization you need. 
    You have not mentioned at what rate you will be acquiring data on your analog inputs.  The M Series PCI-6225 has 80 analog inputs and may suit your needs.  You will need to know what sampling rate you are trying to achieve.  Any M Series device will definitely give you the best value. 
    Hope this helps!
    Laura

  • Help needed with my application

    Hi,
    Can you take a few minutes and suggest DAQ hardware for my application? I need to measure a high freq signal from a quadrature encoder and correlate it to my 48 analog inputs. I need to know the speed of my motor when the analog measurements are taken. The signal from the quadrature encoder is a 1.7 MHz squarewave ( I can loose some resolution and slow it down ). I was planning on using PCI-6071E but I am not sure if it is suitable any more.
    Thanks a lot
    Jerry.

    Hi Jerry,
    You can run analog input and counter tasks concurrently.  You can start them using software timing basically at the same time which may be fine for your needs and is the easiest to implement.  You also can use a hardware start trigger to start the tasks if you prefer.  It all depends on the level of synchronization you need. 
    You have not mentioned at what rate you will be acquiring data on your analog inputs.  The M Series PCI-6225 has 80 analog inputs and may suit your needs.  You will need to know what sampling rate you are trying to achieve.  Any M Series device will definitely give you the best value. 
    Hope this helps!
    Laura

  • Help needed in importing application -  Urgent

    Hi,
    I am new fairly new to apex and would be grateful for any help....
    I have an application that i would like to import and install... but i am obtaining an error...
    Situation is as follows:
    Application in machine A with oracle 10g standard and apex 3.0. Workspace is portal, schema is status_portal...
    export is working fine.
    Need to import it to machine B with oracle 10g and apex 3.0 Workspace is
    online_portal, schema is portal
    Import also works fine...
    But when i try to install the imported application, i get following error:
    ORA-20001: GET_BLOCK Error. ORA-20001: Execution of the statement was unsuccessful. ORA-02291: integrity constraint (FLOWS_030000.WWV_FLOWS_FK) violated - parent key not found <pre>begin wwv_flow_api.create_flow( p_id =&gt;134, p_display_id=&gt;134, p_owner =&gt; 'STATUS_PORTAL', p_name =&gt; 'Status Portal', p_alias =&gt; 'F114', p_page_view_logging =&gt; 'YES', p_default_page_template=&gt; 3865804637029456 + wwv_flow_api.g_id_offset, p_printer_fri
    Please guide me as to what to do....
    History:
    I have tried exporting from machine A to apex online workspace and installing there.... and vice versa...It is working fine...
    the problem arises only when i try import & install on machine B....
    Please help me.... i need to do this urgently
    Thanks,
    Sumana

    Hi Scott,
    I will not be able to show the actual application, as it has our customer's information. But i have created a sample application and done the export and import. The details are as follows:
    Machine A Details:
    Workspace name = portal
    worskspace ID = 3727029916111535
    schema = status_portal
    Exported Application Name = Status Portal
    Exported Application ID = 117
    When importing application from machine A to online workspace:
    Online Workspace Details: (when importing application 117)
    Workspace Name = sumana
    Workspace iD = 3033192431425185475
    schema = sumanadb
    Imported Application Name = Status Portal
    Imported Application IS = 42146
    You can access the workspace using: http://apex.oracle.com/pls/otn/f?p=4550:1:
    the password is sumi123
    When importing application from machine A:
    Machine B Details:
    1 ) Workspace1 Name = auditws
    workspace ID = 7048503433678645
    schema = audit_schema
    When installing imported application no 117 I get:
    ORA-20001: GET_BLOCK Error. ORA-20001: Execution of the statement was unsuccessful.
    ORA-02291: integrity constraint (FLOWS_030000.WWV_FLOWS_FK) violated - parent key not
    found <pre>begin wwv_flow_api.create_flow( p_id =>129, p_display_id=>129, p_owner =>
    'STATUS_PORTAL', p_name => 'Status Portal', p_alias => 'F114117', p_page_view_logging =>
    'YES', p_default_page_template=> 10898936714426385 + wwv_flow_api.g_id_offset, p_printer
    Error installing application.
    Return to application.
    2) Workspace2 name = online_portal
    workspace ID = 9302626026712423
    schema = portal
    When installing imported application no 117 I get:
    ORA-20001: GET_BLOCK Error. ORA-20001: Execution of the statement was unsuccessful.
    ORA-02291: integrity constraint (FLOWS_030000.WWV_FLOWS_FK) violated - parent key not found
    <pre>begin wwv_flow_api.create_flow( p_id =>159, p_display_id=>159, p_owner => 'STATUS_PORTAL',
    p_name => 'Status Portal', p_alias => 'F114117', p_page_view_logging => 'YES',
    p_default_page_template=> 10898936714426385 + wwv_flow_api.g_id_offset, p_printer
    Error installing application.
    Return to application.
    3) When importing application no 130 from machine B to machine B
    (from workspace auditws and schema audit_schema to workspace online_portal and schema portal)
    I get the error as said before
    "Access Denied by application security check" Also, i observed that,
    the application gets installed in auditws and audit_schema itself...
    Screenshots are here:
    4) when importing application no 130 from auditws back to auditws, it works fine.

  • Help needed in JSP application

    Hi... I am implementing one web application. The main file is index.html whch contain frame where following options are there.
    1. Login 2. Line Count. 3. Leave Balance 4. Extra. 5. Log out. but wht I want is, Once User logged in the options from 2to 5 must be visible..But first time only login option should be available..
    Hope you understand...and please tell me how can i do it
    Wether I have to create 2 page..one for login and another for rest of the options or some other way to do so??
    Thanks inadvance
    Regards
    Chintan

    There is a general feeling that scriptlets in JSP pages are a bad thing.
    They can make the page difficult to follow and understand.
    The syntax used above was from the JSTL - JSP Standard Template Library : http://java.sun.com/products/jsp/jstl/
    The JSTL tags provide a lot of functionality that previously was done in scriptlets.
    eg Looping, conditional branching, formatting, XML handling.
    Benefits: You don't have to constantly switch between java and html with <% %> tags. The code ends up looking much nicer.
    Also it is aimed at page authors, who don't necessarily understand java, but will understand using tags like this.
    Myself, I like it because of the first reason - it just makes the page so much easier to read when everything is in tags, as opposed to constantly switching from java to html and back - particularly with braces.
    You have to agree:
    <c:if test="${params.choice == 'yes'}">
      You said YES!
    </c:if>looks much better than
    <% if (request.getParameter("choice").equals("yes")){ %>
      You said YES!
    <% } %>Cheers,
    evnafets

  • Help needed on Logging Servlet Implementation using high traffic HTTP Post

    I have a servlet called LogServlet, which accepts the post HTTP request Data from another application and logs it into a file. The key thing here is the logs should get logged in a squence it is received.
    Since the frequency of the data being sent is very high the LogServlet is not able to keep it up with the sequence and messing up the sequence.
    Are there any suggestions on how to improve this and make sure the servlet logs it in the way it receives it?
    Can I replace the Servlet with JSP to do the logging and will that solve my sequence issue?
    Or there are any other techniques.
    Thanking you in advance.

    You could use the log4j logging tool, it uses a static Logger for the class and you can run it in synchronized mode to ensure that your log messages don't clobber each other. Hmm, you're testing my knowledge of how synchronization is implemented in Java. It uses a semaphore-style approach under the covers, but is it a fair-style (first-come, first-served) implementation?
    After a quick Google search I just learned that in the normal VM fairness is not guaranteed, but if you use the Sun Real-Time VM synchronized will guarantee FIFO style access to synchronized resources. The Real-Time VM is not free, so if cost is an issue that might not be an option for you. That's going to make things more complicated for you since ordering sounds important.
    You can probably write something fairly easily to do what you want. Basically write a queue processing class that uses either static methods/variables or a Singleton approach to ensure that your messages get processed in a FIFO order. Then just use your existing logging logic or use log4j to write your messages to a log file. There are several pitfalls to writing multi-threaded components like this, so be careful that you've synchronized the right methods and, depending on how you decide to implement it, use the right Queue implementation (hint: you may need to look in the java.util.concurrent package for your queue implementation, depending on the approach you take.)
    One thing to note, this last approach may be overkill depending on what you mean by "very high frequency." If you're getting 10-20 requests a second, I think you still might be able to get away with log4j in synchronized mode. It also depends on how important the ordering really is. If one request arrives 500 microseconds after the other, is it okay to reverse the ordering? If so then syncrhonized log4j may still be okay. If not, then you're going to have to write something a little more sophisticated or take a closer look at the capabilities of the real-time VM.
    Alternatively, someone who's more knowledgeable than me on the subject might be able to suggest a better approach using JMS.

  • Help needed in shopping cart implementation in JSP

    hi all,
    i need some help or code in implementing a shopping cart in JSP. Please send me code or any web resource.

    Hi!..i m in the same problem..if you have some idea or code..plz..
    robin_caba(@) yahoo.es

  • Help needed to understand Threads and GC

    I have a question about threads
    I have a class where my main method is written
    public class Main {
        public static void main(String[] args) {
            SomeObject someobject = new SomeObject();
            ThreadClass obj = new ThreadClass();
            obj.set(someobject);
            Thread t1 = new Thread(obj);
            t1.setName("MyThread");
            t1.start();
    }Another class
    public class SomeObject
        String name = "xyz";
        public void doSomething()
            System.out.println("Done");
    }And a runnable class
    public class ThreadClass implements Runnable
        SomeObject temp;
        public void set(SomeObject fsTemp)
            temp = fsTemp;
        public void run()
            while(true)
                System.out.println(temp.name);
                temp.doSomething();
                try{Thread.sleep(100);}catch(Exception e){}
    }Now when I run this application, once the thread is started "MyThread" the main thread would die, I want to know that if the main thread dies, will the objects created in the main method will be garbage collected??

    First of all think yourself: Did you try to run your application? What happened? ?What is the conclusion? Is the Thread object garbage collected?
    If you answered the questions above:
    Thread objects are kind of special. A reference to the Thread object still exists when the Thread still runs (the run method is executed). This is done because stopping a Thread during its execution is not at all secure. Whenever the run method ends (the Thread is done) the garbage collector will remove the Thread object and all the references needed in there.

Maybe you are looking for