Possible to run something in the background?

This is my situation: I have a Student class and a Clazz class. A student can belong to only 1 clazz and a clazz can have many students. These 2 classes are mapped to 2 database tables. In the following code, I remove all the JPA annotations.
class Student {
    private Clazz clazz;
    public void setClazz(Clazz clazz) {
        this.clazz = clazz;
        clazz.getStudents().add(this);
class Clazz {
    private List<Student> students;
}So to add a new student to an existing class, I do something like:
Student student = new Student();
Clazz clazz = entityManager.find(Clazz.class, clazzId);
student.setClazz(clazz);
entityManager.persist(student);Because of the line clazz.getStudents().add(this); in the Student.setClazz method, the application has to go to the DB and load all the existing students for that clazz (which takes a long time).
The Student and Clazz codes are very difficult for me to change (somebody wrote them and they don't wanna change). So I have to think of some way to load the clazz and all its student when I have the clazzId information. The duration from when I have the clazzId info until the student is saved to the db is about 1min.
This is what I did:
- I created a stateful session bean with an EXTENDED entity manager which has a method to return a clazz when we feed it a clazzId. So the returned clazz is persisted.
- I created a stateless session bean which has a timer. When I have the clazzId, I start the timer, give the timer a ClazzHolder instance.
class ClazzHolder {
    private Long clazzId;
    private Clazz clazz;
    private boolean done;
}- The timer gets the clazzId from the ClazzHolder instance, feeds that clazzId to the stateful bean, receives a persisted Clazz instance back, saves that Clazz instance in the ClazzHolder instance and turns the flag "done" to true.
It seems to me that the ClazzHolder instance the stateless session bean has is not the ClazzHolder instance that I pass to it (but the content is the same). I think it's because the ClazzHolder instance I pass to the session bean is serialized first, and then de-serialized to build an object and give to a method in the session bean.
Summary: my idea of using timer to load something before hand doesn't work.
My question is: is there any way to load something from the database and keep it persisted before hand?

Hi Naimesh,
thx for explanation. I am not sure, if I understood everything in the right way.
Where do you write the code for building the selection-screen? (PARAMETERS, SELECT-OPTIONS etc.)
If you write these commands in a class method, you will get a syntax error ( because it's forbidden per definition of ABAP objects). So, am I right assuming that you put the coding just at the beginning of the ABAP report ? And after START-OF-SELECTION-event you start the processing... ?
Furthermore, I don't really understand why you create an separate class for ALV. I found your "SAP abap help"-blog, where you explained the concept of MVC ((By the way, well done!), but you didn't mention an "ALV class" there..
Mh.. another question - have you ever combined MVC with object services?
At the moment I'm working on a software project where I use object services. I created 2 persistent classes via SE24 and one local class in my ABAP Report.
I don't really see possibility to implement MVC in this project without change very much of coding and class structure...
In my opinion the M (data&business logic) are my existing global classes and my local class is kind of Controller class?!
Thx in advance,
Anne

Similar Messages

  • Running something in the background?

    Is there away to invoke a method call as background low priority w/o waiting for return?  sort of like a fork?   i'm needing to have a viewstack draw its second child in the background while the user interacts with the first child.  by the time the user is done with the first child, the second child should be ready to display.
    i'm sort of wanting to apply video page flipping methodology to this.
    thanks in advance!
    yuliang

    creationPolicy="all" will work if you have only two children and their content never change.
    But if you have many more children or your children content change, you need to use what is called deffered instantiation.
    In that case, you use creationPolicy="none" and you explicitly tell the viewstack children to create their component by a call to
    container.createComponentsFromDescriptors(recurse:Boolean):Boolean

  • Will it be possible to run several jobs in background at the same time?

    Hi!
    The new release looks promising. Look forward to hear more in Birmingham.
    Just now we have a problem. It have to do with functionality In Toad compared to SQL Developer.
    Will it be possible to run several jobs in background at the same time. Toad allows that.
    If yes: How can we make that happen?

    "Jobs" are always background.
    But I take you mean queries. Yes, since v1.5.x you can open an Unshared SQL Worksheet (ctrl-shift-n or the toolbar button).
    Have fun,
    K.

  • Running AppleScript in the background

    Okay, yet another problem I'm having that I'm going to bug the community here with.
    Is it at all possible to run AppleScript while doing other things? For example, if I wanted my AppleScript to hop online every hour and send me back information from my site could I have it do this while I do other things? Or will I have to wait until it's completed?
    Say I wanted to create a script that hopped on my site and sent me the post number of the last post, could I have it do this while I do other things?
    Something like
    tell application "Safari" to activate
    tell application "System events"
    tell process "Safari"
    (enter code here to get post number and send it to me)
    end tell
    end tell
    I've tried doing it like this and it definitely doesn't work at all if I don't have the Safari window selected at all times, so is there any way in which I can run script in the background while I work on other things or does AppleScript require full control of my computer while it's working?

    Save this script just like the others I posted. The script will do exactly as you asked.
    <pre style="width:630px;height:auto;overflow-x:auto;overflow-y:hidden;"
    title="Copy this code and paste it into your Script Editor application.">property helloWorld : "Hello World "
    global numChars, charNum, x
    on run
    tell application "System Events" to set isRunning to exists process "TextEdit"
    if not isRunning then tell application "TextEdit" to launch
    tell application "TextEdit"
    if isRunning then make new document
    set name of window 1 to "Hello World"
    set numChars to number of characters in helloWorld
    set charNum to 0
    set x to 0
    end tell
    end run
    on idle
    try
    tell application "TextEdit"
    if x = numChars then
    set x to 1
    else
    set x to x + 1
    end if
    set charNum to charNum + 1
    set theChar to character x of helloWorld
    set character charNum of document 1 to theChar
    end tell
    on error
    quit
    end try
    return 0.1
    end idle
    on quit
    continue quit
    end quit</pre>

  • How to run form in the background from command line

    please can anybody tell me to
    how to run form in the background from command line
    vishal

    Ummm....Oracle Forms is a foreground runtime kind of thing. What you want is a database procedure (or an OS utility - it depends on what sort of processing you want to do in the background).
    Cheers, APC

  • After closing large documents (drawings) the window closes but the process runs still in the background. I open the next document, the same procedure and after dowing this several times the RAM is full the system becoms very slow. what can i do???

    after closing large documents (drawings) the window closes but the process runs still in the background. I open the next document, the same procedure and after dowing this several times the RAM is full the system becoms very slow. what can i do???

    You can always shut it down manually via the Task Manager
    (CtrlShiftEsc)...
    On Mon, Sep 1, 2014 at 3:05 PM, frank koethen <[email protected]>

  • Is it possible to run ALV report in background if Yes how?

    is it possible to run ALV report in background if Yes how?

    Hi,
    Why not?Through se38 only you create ALV report. there you can give your report name and go to program on menu bar - click - execute buton- click-Background . You will get new screen there you can choose Execute immediate or schedule.
    <REMOVED BY MODERATOR>
    Cheers,
    Chandra Sekhar.
    Edited by: Alvaro Tejada Galindo on Mar 4, 2008 2:12 PM

  • Running program in the background

    Hi everybody!
    I need to run  program in the background.
    So I need only to change the sy-batch status to 'X'?

    HI,
    if your program is runninn in the Background then the System field SY-BATCH will become 'X' otherwise it will have space ......
    it will not execute the job in the background if you put SY-BATCH = 'X'
    you need to use: Job_open , Job_submit and job_close function modules
    example:
    *Submit report as job(i.e. in background) 
    data: jobname like tbtcjob-jobname value
                                 ' TRANSFER TRANSLATION'.
    data: jobcount like tbtcjob-jobcount,
          host like msxxlist-host.
    data: begin of starttime.
            include structure tbtcstrt.
    data: end of starttime.
    data: starttimeimmediate like btch0000-char1.
    Job open
      call function 'JOB_OPEN'
           exporting
                delanfrep        = ' '
                jobgroup         = ' '
                jobname          = jobname
                sdlstrtdt        = sy-datum
                sdlstrttm        = sy-uzeit
           importing
                jobcount         = jobcount
           exceptions
                cant_create_job  = 01
                invalid_job_data = 02
                jobname_missing  = 03.
      if sy-subrc ne 0.
                                           "error processing
      endif.
    Insert process into job
    SUBMIT zreport and return
                    with p_param1 = 'value'
                    with p_param2 = 'value'
                    user sy-uname
                    via job jobname
                    number jobcount.
      if sy-subrc > 0.
                                           "error processing
      endif.
    Close job
      starttime-sdlstrtdt = sy-datum + 1.
      starttime-sdlstrttm = '220000'.
      call function 'JOB_CLOSE'
           exporting
                event_id             = starttime-eventid
                event_param          = starttime-eventparm
                event_periodic       = starttime-periodic
                jobcount             = jobcount
                jobname              = jobname
                laststrtdt           = starttime-laststrtdt
                laststrttm           = starttime-laststrttm
                prddays              = 1
                prdhours             = 0
                prdmins              = 0
                prdmonths            = 0
                prdweeks             = 0
                sdlstrtdt            = starttime-sdlstrtdt
                sdlstrttm            = starttime-sdlstrttm
                strtimmed            = starttimeimmediate
                targetsystem         = host
           exceptions
                cant_start_immediate = 01
                invalid_startdate    = 02
                jobname_missing      = 03
                job_close_failed     = 04
                job_nosteps          = 05
                job_notex            = 06
                lock_failed          = 07
                others               = 99.
      if sy-subrc eq 0.
                                           "error processing
      endif.
    Thanks
    Sudheer

  • How to run long running report in the background

    Oracle Application server 10g
    I need to run the long running reports in the background because while the report is running the cursor is loading and the control doesn't return to the user
    this feature exist in oracle 6i by set the following parameter
    RUN_PRODUCT( REPORTS, 'r_1', ASYNCHRONOUS, RUNTIME, FILESYSTEM, pl_id, NULL);
    How can I accomplish the same in OAS 10g?

    Hi,
    I've done this in 11g. I think it will be the same in 10g as well
    Following are the steps in 11g using run_report_object.
    1. Read metalink note: Using the Reports Server Queue PL/SQL Table and API - RW_SERVER_JOB_QUEUE [ID 72531.1]
    2. Implement RW_SERVER_JOB_QUEUE table as per above notes.
    3. When submitting report run it as background
    a. SET_REPORT_OBJECT_PROPERTY(lo_report_object, REPORT_EXECUTION_MODE, ASYNCHRONOUS); -
    SET_REPORT_OBJECT_PROPERTY(lo_report_object, REPORT_COMM_MODE , BATCH);
    4. Display the job_id to user (notification).
    5. Create a new form to view reports base on on RW_SERVER_JOB_QUEUE which provides you the status, etc.... (you may have to create a way to identify the username who submitted the job. This way not all users will see the jobs in RW_SERVER_JOB_QUEUE )
    6. Optionally you can use NOTIFYSUCCESS=email to notify user when the report is finished.
    Cheers
    LS

  • Is it possible to run Acrobat3D from the command line?

    I'd like to know if it is possible to run Arobat3D from the command line in batch mode. I'm interested in knowing if this is possible in either a windows or unix environment.
    My objective is to convert CAD data e.g. CATIA V5 or DXF etc to PDF, in batch mode without using the Acrobat3D interface itself.
    I know that it's possible to run a batch process from within Acrobat3D itself, therefore one solution may be to invoke those batch processes from the command line.
    I've looked through the other listings on this forum and seen this question asked previously, but I've not seen any responses that suggest this is even a feasible concept.

    As of now, it's not possible in the cmd-mode to just remain connected and not stream.
    But the reason you want to do that is because of the long start-up time. That 20 sec time can be divided into:
    1. launch time
    2. time to start encoding (after pressing start button) -> cannot be reduced even if 'connected only' feature is available in cmd-line
    Below are tips you can use to reduce this 20 sec of time:
    1. Lesser the no. of devices connected to the system, shorter is the launch time. Disable the devices which are not to be used in the session.
    2. Try using device indexes (0, 1, 2, etc) instead of device names in the profile. Indexes might change after you disable some of the devices.
    3. Use the profile with correct settings, to avoid any validation errors.
    4. Higher the video size, higher is the overall time. Small sizes take lesser time to start.
    Let me know if you see any improvement in the startup time.

  • I have a Mac mini. Suddenly there are ads running constantly in the background. Even when it's just on desktop. Anybody experience this?

    I have a Mac mini. Suddenly there are ads running constantly in the background. Even when it's just on desktop. Anybody experience this?

    Please post a screenshot that shows what you mean. Be careful not to include any private information.
    Start a reply to this message. Drag the image file into the editing window to upload it. You can also include text in the reply.

  • Run Servlet in the background (Daemon)

    Hi all ,
    I am using Apache Tomcat/5.0.25 container.
    Need some advice regarding running servlet at the background or as daemon . Below is the scope of the program :
    The servlet will do a updating in the database in the background every 5 minute.
    Any ideas how to implement such behaviour using servlet ?
    Thanks.
    Wee Tat

    hi..
    Make a thread and initialize in the init method of ur servlet.
    And make another thread so that it wakes up every five minutes and does the database processing..
    so ur servlet always has a thread which invokes the other thread(database accesing thread)..
    here is the code sample ..
    Thread t = new Thread( new Runnable() {
    public void run() {
    Thread dbHandler = new DBHAndler(..);
    dbHandler .start();
    try {
    t.start();
    catch(IllegalThreadStateException e) { }
    hopefully it works..
    regards
    Kovi

  • Run OC4J in the background

    Is there anyway I can run OC4J in the background as an NT service?
    Thanks in advance.

    I took the approach above, and my experience was only partially successful. With some scrounging around newsgroups, orionsupport.com, and Sun's website, I came up with the following solution:
    Creating an NT Service for OC4J
    OC4J by default runs as a command shell application, so it is bound to a user's login session and will die if the user who called the start command logs off of the system. Oracle has not provided a version of OC4J that runs as a service on Windows-based servers, so here is a process to create a service using the freeware utility, RunExeSvc (http://www.winwinsoft.com/goodies/RunExeSvc/index.html). This utility is more user-friendly and flexible than tools such as srvany.exe and instsrv.exe in the NT Resource Kit.
    Dependencies
    1. RunExeSvc is installed
    (Unzip the runexesvc.zip file to a directory)
    2. Sun's JDK 1.3.1 is installed.
    (JDK 1.3.1 is required because a bug in prior versions of Sun's JVM for Windows killed any JVMs initiated by a user in that login session.)
    Installation Procedure
    1. Run the RunExeSvcAdmin.exe application
    2. Create a new service by copying the example script below into the Script window of RunExeSvcAdmin.exe. Some changes to drives and/or paths may of course be needed.
    3. Save the new entry and exit the application.
    4. The service should now appear in the services control panel. Changes may be required for its startup options.
    Example Script#########################
    # This script runs OC4J
    # RunExeSvc variables
    # if true, RunExeSvc will show internal status
    debug=false
    # the starting dir of the service
    home=e:\oc4j\j2ee\home
    # Running as an http server.
    cmdline=e:\jdk1.3.1\bin\javaw.exe -Xrs -jar orion.jar -out e:\oc4j_out.log -err e:\oc4j_err.log
    null

  • How run OC4J in the background

    Hello!
    How can I run oc4j in the background(without a window open) on a solaris box?
    I have tried 'nohup java -jar oc4j.jar &' but the startup seems to hang when I do this.
    Any ideas?

    Make sure you can write to nohup.out in the current directory.
    Also, I typically start my OC4J in /etc/init.d from my solaris machine and that seems to work nicely.
    Also try putting the 2>&1 at the end instead of in the middle.
    Of you could try using CSH vs. SH, some google hits mention that makes life easier.
    Rob

  • I am trying to remove something from the background of my image how is this done.

    i am trying to remove something from the background of my image how is this done.

    jboll0820 wrote:
    how is this done.
    Generally, using a different program than Lightroom, e.g. Photoshop.
    Note: you can remove objects in Lightroom by stringing dust-spot removal bubbles across them, but that may or may not be preferrable. If you do go that route, it may be essential to position strategically *after* initial placement.

Maybe you are looking for