Doubts abour JSF proccesing lifecycle and JSF phases

Hi,
I have doubts about the processing lifecycle of a JSF application if there are two different requests from the same user. For example, suppose an application with two buttons:
Button 1 --> A load button connected to a actionListener method that load a lot of data from data base that will be showed in a table.
Button 2 --> A Cancel button with immediate=true and connected to a action method that force a navigation to the same page when is pressed.
Suppose the following sequence:
1 -. User press button 1, I think that the following phases are executed:
Request View --> Apply Request Values --> Proccess Validation --> Update model Values --> Invoke Application (in this phase the actionListener method is executed to load the data from database) --> Render Response (take long time)
2-. Due to a big quantity of data the Render Response take long time and when the lifecycle is in that phase the user press the button 2. I suppose that the following sequence of phases are executed:
Request View --> Apply Request Values -->Invoke Application (Action method that return a navigation case) --> Render Response (Render the page to the user)
My question is, if the first request is in the Render Response phase, what happens with this phase when the second request generated by the Button 2 arrive to the server??? When the second request arrive to the server, JFS automatically cancel or stop the proccesing of the Render Response of the first request ?
Thank you for your knowledge.

It's always helpful to configure a "debugging" lifecycle listener that just prints out each lifecycle phase, so you can tell which phases are being executed, and in which phase some breakpoint is hit.
This is as simple as:
package tabpanelbug;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
public class LifeCycleListener implements PhaseListener
    public void beforePhase(PhaseEvent event)
    { System.out.println("BeforePhase: " + event.getPhaseId()); }
    public void afterPhase(PhaseEvent event)
    { System.out.println("AfterPhase: " + event.getPhaseId()); }
    public PhaseId getPhaseId()
    { return PhaseId.ANY_PHASE; }
}and
<lifecycle>
    <phase-listener>tabpanelbug.LifeCycleListener</phase-listener>
</lifecycle>

Similar Messages

  • How to get the current JSF phase in backing bean?

    How to get the current JSF phase in backing bean?
    Edited by: jimmy6 on Nov 27, 2007 7:27 AM

    I am using phasetracker to trace it also.I want to know whether it is it render response phase. I know FacesContext.getCurrentInstance().getRenderResponse() work for normal jsf component but it will not work for qiupukit datatable. FacesContext.getCurrentInstance().getRenderResponse() will not return true in the following phase. Why?
    [ INFO] 27-11-07 16:20:21 : BEFORE RENDER_RESPONSE(6) (http-80-Processor23)
    I want the 'get' method of datatable being called in response phase to reduce the number of calling because i put the query in 'get' method there. Actually i still straggling with the best practice to code the datatable...

  • Obtaining the current JSF Phase

    Hi all,
    One of the ways to obtain the current JSF phase is by implementing a phase listener. However, I would like to know if there are any simpler ways to obtain the current JSF phase that my code is executing in. For example, I would like to know what phases my getters for my beans is executed in. So, every time when my getters for my beans are executed, I would like to know what phase it gets executed in.
    Thanks,
    Mun Wai

    I am using phasetracker to trace it also.I want to know whether it is it render response phase. I know FacesContext.getCurrentInstance().getRenderResponse() work for normal jsf component but it will not work for qiupukit datatable. FacesContext.getCurrentInstance().getRenderResponse() will not return true in the following phase. Why?
    [ INFO] 27-11-07 16:20:21 : BEFORE RENDER_RESPONSE(6) (http-80-Processor23)
    I want the 'get' method of datatable being called in response phase to reduce the number of calling because i put the query in 'get' method there. Actually i still straggling with the best practice to code the datatable...

  • How to save a PDF File if you create it in lifecycle and view it in adobe reader 9.

    I am having a issue with a file that I created in Adobe lifecycle and then tried to fill out the form in adobe reader 9.
    Here is the big issue I can fill out the form but can not save the information that I put in the form. It will only allow me to save a blank copy of the form. It tells me that in order to keep the information I must fill the form out and print a copy. How do I change the setting on the Life cycle version in order to allow people to keep a electronic copy of the PDF if they olny have adobe reader 9? I anyone know how to get that done please let me know.
    Here is what software I have:
    Adobe pro 9
    Adobe lifecycle designer ES 8.2
    Adobe reader 9
    Adobe distiller 9
    Adobe photo shop elements 3.0

    You might be way past this step but if you view it in adobe acrobat 8 or later
    toolbars up top
    advanced>Enable usage rights in adobe reader.

  • Distributed transactions and 2-phase commit in a SAP Netweaver environment

    Hello,
    I am a Java architect., I don't know very much the SAP technologies. I tried to found on forums or technical papers if SAP does support distributed transactions and two-phase commit, it's not clear. I found something on SAP WAS but my project is using a  SAP PI 7.0 and I cannot find anything on the subject.
    My goal is to include a SAP server (via PI 7.0) in a distributed transaction handled by a J2EE ESB (Oracle, ex-BEA Aqualogic) based on XA capabilities.
    Does anyone have experience or feedback on this topic ?
    Thanks.

    Hi,
    Do you know this white paper ?
    [Distributed Transaction and 2 phase commit|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3732d690-0201-0010-a993-b92aab79701f]
    Regards,
    Olivier

  • XDK and 2 Phase Commit

    Hi guys,
    I am taking messages off an MQ Series Queue and using
    DBMS_XMLSave.insertXML(this function does an implicit commit) to
    insert into a table.
    The insert fails with the Error code 02070: Database does not
    support commit in this context.
    This seems due to the fact that the dequeue has not been
    comitted. I am trying to do this to avoid losing any message if
    the is an error or system failure.
    It works if dequeue is commited.
    Does XDK support 2 Phase commit or is there a patch that allow
    this?
    Thanks
    Abbey

    Hi,
    Do you know this white paper ?
    [Distributed Transaction and 2 phase commit|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3732d690-0201-0010-a993-b92aab79701f]
    Regards,
    Olivier

  • Doubt about diference between SAPconsole and SAPmobile

    Hello,
         I have been many doubts about diference between sapconsole and sapmobile, if anyone could help me I appreciate.
    1) I have ECC6 instaled, the SAP Mobile is compatible with ECC6 or I need of Netweaver Instaled ?
    2) If Possible to Install Sap Mobile in ECC6 , I have to Buy a license of sap mobile ?
    3) in any product instaled Windows CE have possible to install sap mobile ?
    4) In sap console what is the requirement for to do this configuration?
    I Anybody to know about this informations please explain for me ?
    Thanks

    My apology, 
        The Basic Diference beteween SAPConsole and SAPMobile is :
    SAPConsole ==>  
    1 ) Don' t need a new Hardaware for to configurate
    2 ) Only need a Machine with the IIS service installed
    3 ) The SAPGui CD content the SAPCOnsole.exe for configuration
    4 ) The equipment like Pocket and datacolletor has been to configurated in a Network( but if to have a entrance in the SAPGUi indicate a SAProuter in another factory is possible to have acesses.. ) is a mandatory. Cause the SAPCOnsle folow the SAPGUI entrances and need a LAN or a WAN configurated.
    Advantage
    simple to congurated and chip.
    Easy to create to new window cause the SAPConsole only plubish this window in Browser.
    Disadvantage
    Need a lincense for each Poket or Datacolletor, wherever the equipment you will use.
    Doesn't have a Database  using through Browser (IE6 or IE7) this way , during the processes lost network you go to lost the information not saved.
    SAPMobile
    1 ) Need the a good Machine  with a instance of SAP configurate
    2 ) Have to found the EXE in the MarketPlace
    3 ) is not publish, and yes a client with the database configurate in equipment
    4 ) The equipment like Pocket and datacolletor has been to configurated in a Network
    Advantage
    Need only one SAP License, doesn't metter how many equipment  in use you have.
    As the SAPMobile has a Database in the client , if you lost the network it goes to save in the local database and when the network come back , it will to synchronize. This way you don't need to work online every moment, you get to synchronize after.
    Disadvantage
    You profit in license is your lost in the Machine cause the price of Machine is expensive.
    is configurate only in windows Mobile.
    The window only can be create for a Developement and not in the SAP, have been created in windows Mobile.
    A tip, the both is good but you can do a simple mathematics.
    In the SAPConsole how much money you go to spend is the least of the Machine s Price.
    If yes confurate the SAPConsole , if not configurate the SAPMobile

  • Preprocessing phase and Execution phase of DMO

    Hi experts,
    I have a question.
    Please tell me whether my understanding of DMO procedure steps of Preprocessing phase and Execution phase is right.
    I think as below.
      Phase
      sequence
      Steps
      whether users can
      log on SAP system or can not
      whether
      application data is able to be changed or not
      Uptime or
      Downtime
      Preprocessing
      1
      Creating Shadow
      instance
      Users can log on
      ERP
      Application data
      is able to be changed
      Uptime
      2
      Creating Shadow
      repository
      Users can log on
      ERP
      Application data
      is not be able to be changed
      Uptime
      3
      Migration
      repository
      Users can log on
      ERP
      Application data
      is not be able to be changed
      Uptime
      Execution
      4
      Migration
      application data
      Users can not log
      on ERP
      Application data
      is not be able to be changed
      Downtime
    When creating shadow instance, users can log on SAP system and can change application data.
    When creating shadow repository, user can log on SAP system but can not change application data.
    Both when creating shadow instance and creating shadow repository ,users can log on SAP system.
    So Preprocessing phase is uptime .
    Is that right ?
    Thanks in advance.
    Best Regards,
    Kazuki

    Hi Kazuki,
    The the EXECUTION phase denotes the start of Downtime.
    Regards
    Arshad

  • Everytime I try to burn an iMovie project to a DVD with iDVD, the disc is ejected during the Burning and Multiplexing phase before it's completed.

    For months I have been unable to burn any iMovie project to a DVD using iDVD.  During the Burning and Multiplexing phase the disc is ejected before it's complete.  I went the Genius Bar and after many tests I was told that my disc drive was pretty much dead.  The person that helped recommended that I buy an external DVD burner from amazon.  I bought the new drive and I can now burn files, but I'm still encountering the same issue burning a movie.  Does anyone have any idea what'g going on?  I'm extremely frustrated at this point!

    Read this treatise on Multiplexing by  Bengt Wärleby: HT1645 I was burning a DVD and the...: Apple Support Communities.
    Follow this workflow to help ensure the best quality final product:
    Once you have the project as you want it save it as a disk image via the  File ➙ Save as Disk Image  menu option.  This will separate the encoding process from the burn process. 
    To check the encoding mount the disk image and launch DVD Player and play it.  If it plays OK with DVD Player the encoding was good.
    Then burn to disk with Disk Utility or Toast at the slowest speed available (2x-4x) to assure the best burn quality.  Always use top quality media:  Verbatim, Maxell or Taiyo Yuden DVD-R are the most recommended in these forums.
    OT

  • "Tremor Skimmer" and "Moon Phase" widgets

    Does anyone know why the above two widgets ("Tremor Skimmer" and "Moon Phase") quit working within the past few months?  I really enjoyed both of them. 
    For "Tremor Skimmer", the program seems to hit the server, but nothing happens.
    I have a 2009 iMac Intel, still on Leopard.  I'm intending to upgrade to Mountain Lion soon.

    Yes, my copy of Tremor Skimmer has not worked for several weeks.   It seems not to be able to contact its server.  
    I don't see online any reports of problems.

  • Deliverables at Blueprint and Realization phase?

    Hi
    What are the deliverables at Blueprint and Realization phase?
    Can anyone please send some details.
    Regards,
    Santhosh

    Hi, my contribution to your question is not to forget about "all" customer-documents which are covered by an ERP-implementation
    means e.g.
    - Purchase Orders
    - Purchase Contracts
    - Delivery Notes
    - Invoices (proforma invoice, legal invoice etc.)
    - HU-labels (internal, external)
    - special labels for article-code (EAN etc.)
    - order-confirmation to the customer
    - manufacturing operational card
    - CMR-sheets
    etc. etc.
    +
    all relevant reports with content which have to function
    by go-live
    For my opinion these stuff is very often not
    - categorized
    - identified
    - analyzed....
    If you forget this in the blue-print (or anywhere else) you will get much
    trouble by
    - defining the stuff during the project
    - fulfill "User-wishes" (this content and this field on the left side, upper, lower ....)
    If you do not identify the content of reports where should the data come from?
    You may forget to recognize special fields or you use SAP-standard-fields in
    different ways in order to get "standard-reports"....
    Only some ideas from my side....
    br :-)ro

  • Doubts about JSF 2.0 lifecycle

    1)Is FacesContext stored in request scope at the beginning of the lifecycle?
    2)Is the component tree populated with components mainly in render response phase? when a page is requested for the first time, the restore view phase creates a empty UIViewRoot and in the render response phase the tree is populated with components. Also in the render response phase, the navigation handler determines whether to display current view or a completely new view. If a new view is to be displayed, the component tree is populated with components in the render response phase. So component tree seems to be populated mainly in render response phase, isn't it so?
    3)The render response state caches the 'current' state of the component tree in the render response phase. What exactly does 'current' mean? If we have a tree having input components with some user entered values, are the values also stored or they are removed before the tree is cached?
    4)In what scope does render response cache the component tree?
    5)Once a user request a page, a component tree is cached. Is the created tree available for all users or for a particular user for whom the tree was initially created?

    N.B. I haven't studied JSF 2.0 too deeply, but I do not think any of the answers below are different for 2.0 vs 1.2.
    nash_era wrote:
    1)Is FacesContext stored in request scope at the beginning of the lifecycle?The FacesContext is stored in a thread local static variable. This is how the static FacesContext.getInstance() method can work while your application server services multiple clients.
    >
    2)Is the component tree populated with components mainly in render response phase? when a page is requested for the first time, the restore view phase creates a empty UIViewRoot and in the render response phase the tree is populated with components. Also in the render response phase, the navigation handler determines whether to display current view or a completely new view. If a new view is to be displayed, the component tree is populated with components in the render response phase. So component tree seems to be populated mainly in render response phase, isn't it so?Once case you haven't mentioned is the post back of a previously rendered page. In this case the component tree is restored during the Restore View phase. It is this restored tree that is in effect for the remaining phases up to Execute Application. Then the navigation handler determines the next view and it is created if necessary.
    >
    3)The render response state caches the 'current' state of the component tree in the render response phase. What exactly does 'current' mean? If we have a tree having input components with some user entered values, are the values also stored or they are removed before the tree is cached? If the same view that was restored is to be rendered, then the values entered by the user may be re-used. (I say may because they might get cleared if the Update Model phase is successful. It that case the value expression is re-evaluated to get the value rendered.)
    >
    4)In what scope does render response cache the component tree?The cached view roots are in the session.
    >
    5)Once a user request a page, a component tree is cached. Is the created tree available for all users or for a particular user for whom the tree was initially created?Only for the particular user. Also, if the outcome of the action method is non-null, you will get a new instance of the tree even if it is the same view id as the last one.

  • Use of JSF Phase Listener?

    There are many many examples of how to 'access' the six phases of the JSF Life Cycle.
    I have a simple page that has two input text fields and one command button.
    I would like to be able to access the contents of the text fields on the page in Phase 2 (APPLY REQUEST VALUES), or other phases. After quite a bit of time I am posting this in the hopes that someone could point me in the correct direction to do this or perhaps someone has a simple example.
    Thanks - Casey

    Code for phase listener, backing bean and output are at the bottom of this note.
    The text field has a Id property of lname. I assume you are referring about using findComponent() against the backing bean that has a corresponding property (RichInputText) for the text field?
    When I run the app I am getting a null for the objReference for the backing bean (line 16 in the output) - see output which then causes a NullPointerException.
    Suggestions on how to get the reference to the backing bean, or the component that will contain the data for the input text field?
    Thanks again - Casey
    The code I am using in the Phase Listener class is:*
    +public class MyPhaseListener implements PhaseListener {+
    +public MyPhaseListener() {+
    +}+
    +public void beforePhase(PhaseEvent pe) {+
    if (pe.getPhaseId() == PhaseId.RESTORE_VIEW)
    System.out.println("Processing new  Request!");
    System.out.println("before - " pe.getPhaseId().toString());+
    +if (pe.getPhaseId().toString().equals("APPLY_REQUEST_VALUES 2")) {+
    System.out.println("lkjhlkjhlkjhlkjh");
    +}+
    +if (pe.getPhaseId().toString().equals("APPLY_REQUEST_VALUES 2")) {+
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ELContext elContext = facesContext.getELContext();
    ExpressionFactory expressionFactory =
    facesContext.getApplication().getExpressionFactory();
    ValueExpression exp =
    expressionFactory.createValueExpression(elContext,
    +"#{BackingBean}",+
    BackingBean.class);
    BackingBean nameData = (BackingBean)exp.getValue(elContext);
    System.out.println(nameData);
    System.out.println(nameData.getLname().findComponent("lname"));
    +}+
    +}+
    +public void afterPhase(PhaseEvent pe) {+
    System.out.println("after - " pe.getPhaseId().toString());+
    if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE)
    System.out.println("Done with Request!\n");
    +}+
    +public PhaseId getPhaseId() {+
    return PhaseId.ANY_PHASE;
    +}+
    +}+
    The code for the backing bean is:*
    package view;
    import oracle.adf.view.rich.component.rich.input.RichInputText;
    +public class BackingBean {+
    private RichInputText lname;
    +public BackingBean() {+
    +}+
    +public void setLname(RichInputText lname) {+
    System.out.println("In setLName");
    this.lname = lname;
    +}+
    +public RichInputText getLname() {+
    System.out.println("In getLName");
    return lname;
    +}+
    +}+
    Output from System.out.println statements:*
    Processing new  Request!
    before - RESTORE_VIEW 1
    after - RESTORE_VIEW 1
    before - RENDER_RESPONSE 6
    In getLName
    In setLName
    after - RENDER_RESPONSE 6
    Done with Request!
    Processing new  Request!
    before - RESTORE_VIEW 1
    In setLName
    after - RESTORE_VIEW 1
    before - APPLY_REQUEST_VALUES 2
    lkjhlkjhlkjhlkjh
    null
    after - APPLY_REQUEST_VALUES 2
    +<Jul 13, 2009 8:27:14 AM CDT> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@857c75 - appName: 'Application8', name: 'Application8-ViewController-context-root', context-path: '/Application8-ViewController-context-root', spec-version: '2.5', request: weblogic.servlet.internal.ServletRequestImpl@1c70722[+
    +POST /Application8-ViewController-context-root/faces/untitled1.jspx?_adf.ctrl-state=793257214_3 HTTP/1.1+
    +Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-shockwave-flash, */*+
    +Referer: http://127.0.0.1:7101/Application8-ViewController-context-root/faces/untitled1.jspx?_adf.ctrl-state=793257214_3+
    +Accept-Language: en-us,de;q=0.5+
    +Content-Type: application/x-www-form-urlencoded+
    +UA-CPU: x86+
    +Accept-Encoding: gzip, deflate+
    +User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)+
    +Content-Length: 269+
    +Connection: Keep-Alive+
    +Cache-Control: no-cache+
    +Cookie: JSESSIONID=wBr1Kb2GrCDpnhkNNgQyTvJvSjlnWHyvnq9gNWT92kvsFYlGC1Jl!1059440035+
    +]] Root cause of ServletException.+
    java.lang.NullPointerException
    +     at view.MyPhaseListener.beforePhase(MyPhaseListener.java:42)+
    +     at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:228)+
    +     at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:175)+
    +     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)+
    +     at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)+
    +     Truncated. see log file for complete stacktrace+

  • My doubts with JSF

    From what I've learned about JSF so far, it is based on really good ideas but it is extremely frustrating to use if you wanna do more than just a "hello world" application.
    Unfortunately, the reasons for my doubt seem to have made their way into JSF 2.
    It all boils down to this: Component creation is a mess.
    [1] casts and use of reflection everywhere
    JSF combines disadvantages of Servlet based applications (need to recompile and restart context after changes) with some of scripted applications (no build time checks).
    A lot of internal wiring is String based and cannot be validated at build time. Casts are needed everywhere, which has the same effect.
    Besides, this makes custom component code really ugly.
    [2] no good solution for component rendering
    - Servlet-style inline HTML rendering sends us way back to the 90s. Hard to write, hard to read, hard to maintain.
    - no support for HTML/CSS developers: they would have to work inside the renderer (Java code) but it's THEIR domain
    - no simple strategy for creating first-class composite components
    (by "first-class" i mean components with a Java-side behaviour (methods); Facelets compositions are cool but you cannot add logic)
    Please don't get me wrong - I'd love to use JSF but I'm not eager to recommend it if every developer in my department will hate me for it.
    So if anyone can show me that I'm wrong, it would make me happy!

    I don't know what your requirements are, but I have written a couple dozen JSF applications over the last several years.
    At least half of these have been commercial applications for the company I work for.
    Some have been very simple - maybe half a dozen pages or so, and some have been VERY complex - upwards of 30 or more pages with very complex logic behind the scenes.
    My background is from the application world, and I have been frustrated to some extent with JSF.
    However, being able to create a page with a minimum amount of pain and being able to tie them into the backing beans for complex logic has been quite useful.
    In several applications, I generate components dynamically in the backing bean code - that works fine.
    I do not create custom components, since I have not found the need to do so.
    All the basic functionality is in the standard JSF component libraries - although there are some things I would like to see.
    I have found some things lacking, when compared to a strict Java (Swing) application environment, but have usually found adequate workarounds.
    I have found that third party libraries - particularly ICEfaces makes the pages quite useful without having to do a bunch of JavaScript code.
    There are third party libraries with some pretty robust components.
    You may find that some of these have the functionality you need rather than developing your own custom components.
    I don't know your requirements for custom components, but if you can get by with the standard libraries, or third party components, I do not think you will find an easier environment.
    I am not sure why you are concerned so much about Casts.
    This is basic to Java and most other programming languages, including C, C++, C## and to some extent Fortran and VB.
    I guess some scripting languages are exceptions.
    At any rate, for Java based web applications, I don't think there is an easier environment.
    If you are going to be doing web applications, I think the only serious options are JSF or .NET.
    I've used .NET a bit (not as much as JSF) and, IMHO, .NET probably has more flexibility and more robust components, but it was harder for me to use.
    That may have just been the learning curve.

  • JSF Phase listeners

    What is a phase listener? Will every request goes through these phase listeners?

    With a PhaseListener you can hook on one or more phases of the JSF lifecycle. Useful if you want to do some handlings before or after a certain phase. Only a request which is been passed through the FacesServlet will go through the PhaseListener.
    You can see them like as a javax.servlet.Filter specific for JSF.

Maybe you are looking for

  • Help Urgent Toshiba 5005-S504

    I have a Toshiba 5005-S504 and tried updating the bios but  now be4 I tried updating it it turned off quite often I thought it might be the bios too and well I never updated but now when I try turning it on it starts loading windows normally and inte

  • Best way to manage 100gb of pics

    I have about 100gb of photos in about a dozen different iphoto albums. I split them up because I was running out of disk space and needed to offload some. Now I have a much larger hard drive. What is the best way to manage this volume of pics? IPhoto

  • Checkbox GONE! No opt-out for McAfee now! WHAT???

    I can't belive this! I just updated my Flash Player to v. 11.7.700.169  I've been using FP for over ten years, and have long despised the perpetual attempt to install McAfee Security Crap as some bundled "feature". BUT having the ability to uncheck t

  • Printing Email Message without List of Recipients

    I consistently receive email messages with dozens of recipients. How do I print the message without printing the complete list of recipients. It is especially problematic when the email is forwarded from another email with dozens of recipients, which

  • TS1717 Got message that song purchased from itunes can't be located.  How do I get it back?

    Purchased songs from iTunes and they uploaded to my library.  All songs still their except from on artist.  Now says can't locate them.  How do I get the download back?