Threads & Scope

I'm trying to write a multi-threaded program where each Thread quite expectedly are performing their own separate tasks. However, I'm not sure of if I'm implementing them in the correct way in order to do my bidding.
Usually, I have a main thread (the class whose public static void main() is run) and then create instances of another class that extend Thread and call them to start. I.E.:
The main class whose main() is run:
public class TheMainClass
    ThreadedClass secondThread = new ThreadedClass();
    ThreadedClass thirdThread = new ThreadedClass();
    public static void main(String args[])
        // Start the second and third threads
        secondThread = new ThreadedClass();
        thirdThread = new ThreadedClass();
        secondThread.start();
        thirdThread.start();
        // Assign Threads tasks
        // This is the part I'm not sure that is correctly implemented
        secondThread.makeConnection();
        thirdThread.makeConnection();
}The second class that extends Thread:
public class ThreadedClass extends Thread implements Runnable
    public void run()
        // Code to run when started
   public void makeConnection()
        // Code to connect to a pre-defined socket
}The goal in this specific example is to create two threads and assign each to run their makeConnection() method. Lets assume that this method connects to a server based on a set values unqiue to each instance of ThreadedClass.
What I would like it do:
- Create two threads
- Each thread object calls their own makeConnection() method simultaneuosly and establish connections to their respective servers.
What I'm afraid it will do:
- I'm afraid that calling the methods in each of these thread objects from the scope of the main thread instead of calling of from within the scope of each thread (i.e. their respective run() methods) will only result in the main thread executing each call makeConnection() one at a time, leaving the instances of ThreadedClass to sit idle.
So it boils down to: how do I control assign each thread methods to execute properly?

Ok, I guess generalizing my question isn't working. I'll try to apply it to what I'm really working on.
I'm writing a server browser of sorts; a window with a list of a bunch of servers that you can connect to. In this application, I want the browser to send short queries to the server to request basic info, like it's name, number of clients connected, etc...
Where my question about threads and scope comes in is with these queries. When the user presses the button to "refresh all" I don't want the server browser to go down the list one by one, waiting 10 seconds for each to timeout if it can't connect. That'd take forever. Instead, I want it to make a thread for each server to make the connections and update the info on the screen accordingly.
So, I have a class called Connection, which is a thread. One instance of Connection is assigned each server. Then, at any point, I want to be able to call a method inside each instance of Connection called query(). The problem is, if I call this method with say, connection1.query(), it's going to execute in my main scope and do updates one by one...
So, how do I get a thread to execute something in its own scope from the scope of the main thread? The only way I've managed to do this is by setting boolean variables in the instance of Connection to control what it does, but this gets horribly sloppy very quickly. Is there a better, cleaner way to do this such as calling it like a method?
EDIT:
The previous reply contains a perfect example of how I've been working around by using booleans to call my methods. However, I'm looking for a cleaner, neater solution.

Similar Messages

  • Stuck Thread causing heap to grow steeply and resulting in crash

    Hi,
    We have an ADF application deployed in weblogic 10.3.2.
    We have few PL/SQL's and SQL's which are complex and take around 5 minutes of time to complete at times. We also have the script running in database to kill long running queries so that it helps us to get rid of weblogic stuck threads to some extent.
    Now when ever there is an SQL running for long time , we see a stuck thread casuing heap to grow very fast and casuing server to crash.
    I know after a particular point of idle time thread is marked as stuck , but why does it filling the heap space - does stuck threads always causes heap to grow or is it just my specific case
    any pointers on how to debug this issue to find the root cause.
    Thanks,
    Naresh

    I think this setup needs profiling. To start-off, i would recommend collecting heap dump or jrf (if jrockit), instructions for them are available on net, as it varies with jvm versions and vendors.
    Post that you should look for the thread which you believe is stuck and a possible cause using OQL in memory analyzer tool over the heap dumps.
    Conceptually, till the time the objects (or data if you say) is being referenced, JVM cannot garbage collect it. So, I would say we need to figure out what are the contents of the heap, before coming to a conclusion that the threads which are stuck is causing the issue. Why I say so it that, I have seen in past that many-a-times, we suspect stuck threads to be an issue but it turns out to be that we are "knocking the wrong door".
    Long running threads (aka STUCK thread in WLS), will normally cause memory issues, if the references/task that its trying to perform has a large local data (i.e. data with the thread scope), so it the time the thread is not released the data is alive (irrespective of the fact that the data is used or not).
    Now, my first thought of this situation is that stuck thread is not an issue, considering that you are not able to replicate this in UAT post simulating stuck threads. Thus please collect some heap dumps (may be when you start observing memory increase) and then review them comparatively, I think that should be helpful.
    AJ

  • Creating multiple libraries and using an external drive for data

    I'm a recent switcher and new to iphoto. On the windows platform, I used adobe album. I have a around 10k of images that I put on an external drive which is attached to my new imac. I deleted the iphoto folder and redirected it to my images on my external. All is working great. I'm looking for some advise on work flow of file/iphoto management. i.e. I'm assuming the more images I accumulate, the slower I photo is going to run? I hear you can create multiple iphoto libraries. Will that only load the photos that are associated with the library and I'm assuming optimize iphoto's performance versus always loading every photo you have taken every time you work in iphoto? If adding libraries is the way to go, can someone direct me to instruction on how to do this?
    This may be beyond this threads scope but I plan to put all my data (iphoto, imovies, itunes) onto an external drive in order to keep the imac main drive as clean a possible. Is my thinking correct in doing so. Any negative repercussion in doing so?

    Joe:
    I'm assuming the more images I accumulate, the slower I photo is going to run?
    You'll have to get quite a lot of photos into iPhoto before you start to see a real slowdown in performance. Users have reported libraries of 40K files and they perform just fine. However, do not keep all of rolls open as that will really do a job on the performance. Just open the rolls you need and close them all before quitting.
    Yes, you can use multiple libraries and only load what's in each. I use iPhoto Library Manager to manage and move quickly between 10 libraries. With the paid version of iPLM you can move albums and/or rolls between libraries as needed and keep the keywords, ratings, and comments intact.
    Using an external HD in order to maintain sufficient free space (10G minimum is what I recommend) on the boot drive to help optimize performance is a very good idea.
    As far as any negative aspects, it would be a good idea to have a second external HD as a backup to the working external HD. You can't be too careful with those image files (and other important files) that can't be replaced.
    Do you Twango?
    TIP: For insurance against the iPhoto database corruption that many users have experienced I recommend making a backup copy of the Library6.iPhoto database file and keep it current. If problems crop up where iPhoto suddenly can't see any photos or thinks there are no photos in the library, replacing the working Library6.iPhoto file with the backup will often get the library back. By keeping it current I mean backup after each import and/or any serious editing or work on books, slideshows, calendars, cards, etc. That insures that if a problem pops up and you do need to replace the database file, you'll retain all those efforts. It doesn't take long to make the backup and it's good insurance.
    I've written an Automator workflow application (requires Tiger), iPhoto dB File Backup, that will copy the selected Library6.iPhoto file from your iPhoto Library folder to the Pictures folder, replacing any previous version of it. You can download it at Toad's Cellar. Be sure to read the Read Me pdf file.

  • [unixODBC][Driver Manager]Data source name not found, and no default driver

    Hi,
    I'm running
    Red Hat Linux 5, MySQL and BOXI 3.1
    I try and schedule a report in the CMC and the report fails with the error
    A database error occured. The database error text is: {Driver Manager} Data source name not found, and no default driver specified. (WIS 10901)
    I've went through the steps in the Bus Obj's Documentation outlining how to install the unixODBC (though this doco was for R2 - I'm not certain whether this install is needed for 3.1).  
    Error WIS 10901 details
    Database error: . Contact your administrator or database supplier+
    for more information. (WIS 10901)
                  The database that provides the data to this document has generated an error.
    Cause
                  Details about the error are provided in the section of the message indicated
                  +by the field code: .
                  Contact your BusinessObjects administrator with the error message
    Action
                  information or consult the documentation provided by the supplier of the
                  database.
    Any pointers suggestions on how to set up correctly the unixODBC will be looked into.
    Thanks for taking the time to view this post.
    Cheers

    Hi again Aravind,
    I hope you're not beginning to wish you had never answered that first question from me since it seems as if I'm now backing up the truck with regard to the entire question. If I'm asking too much from you let me know I don't wanna overstep the line with repect to what should and shouln't be asked in these forums'
    anyway I looked in that env.sh script. It was huge (pity I can't attach the file, I've appended it but it makes these threads somewhat lengthy)
    DEFAULT_ODBCFILE="$BOBJEDIR"defaultodbc.ini
        export DEFAULT_ODBCFILE
        +ODBC_HOME="$odbc"+
        export ODBC_HOME
    also
      # setup the mysql env variables
        if [ -d "$BOBJEDIR"/mysql ]; then
                # mysql env variables
    set up the odbc symlink to work around:*
    The DataDirect SQL Server ODBC driver on UNIX will not function properly under a*
    locale other than "en_US" due to strong dependencies on their locale files.*
                MYSQL_UNIX_PORT="$BOBJEDIR"mysql/mysql.sock
                export MYSQL_UNIX_PORT
        We want to be able to source the config file multiple times.
    fi
    if [ -d "$BOBJEDIR"/tomcat ]; then
    set the JAVA_OPTS for tomcat
    I see what you were referring to earlier with
    if [ -d "$ODBC_HOME/locale" ]; then
          the javascript files are kept here
    The machine name
    The user name
    MYLOCALE=`locale | grep LC_MESSAGES | sed -e 's|LC_MESSAGES="||g' -e 's|"$||g'`The default registry
          if [ ! -d "$ODBC_HOME/locale/$MYLOCALE" ]; then
            ln -s "$ODBC_HOME/locale/en_US" "$ODBC_HOME/locale/$MYLOCALE"
          fi
        fi
    Again cheers for your help in this matter.
    #!/bin/sh
    BOBJEDIR="/home/eberwick/BO_3_1/bobje/"
    export BOBJEDIR
    BODIR="`dirname $BOBJEDIR`/"
    export BODIR
    DEFAULTFILE="$
    check for existence of u flag, if it is there, turn it off.
    Set a flag so we don't source the environment more than once
    webi config file
    ccm.config"
    if [ -f "$DEFAULTFILE" ]; then
        . "$DEFAULTFILE"
    fi
    . "${BOBJEDIR?}setup/modify_ko_locale.sh"
    SOFTWARE=`uname -s`
    OBJECT_MODEL=`grep Platform $BODIR/setup/ProductID.txt | awk '{print $4;}'`
    [ -z "$OBJECT_MODEL" ] && OBJECT_MODEL=32
    SOFTWAREPATH=`grep SoftwarePath $BODIR/setup/ProductID.txt | awk '{print $3;}'`
    U_FLAG=0
    if [ X"$SOFTWARE" = "XHP-UX" ]; then
    unset the LANG so that we don't get the localized version of 'unlimited' if the localized system messages are installed.
    raise the ulimits to max allowed
    undo that bug workaround from above
    figure out what architecture we're on
    now that we're localized, deal with unknown architecture
    we include English, as localization may have failed
    set the JDK variable
        if [ x`echo $- | grep "u"` != "x" ]; then
            set +u
            U_FLAG=1
        fi
    fi
    if [ x"$BOBJE_ENV_SOURCED" = x ]; then
        if [ -f "$setup/boconfig.cfg" ]; then
        HKEY_LOCAL_MACHINE="$setup/boconfig.cfg"
            export HKEY_LOCAL_MACHINE
        fi
        BOBJE_ENV_SOURCED="true"
        export BOBJE_ENV_SOURCED
        BOBJEVERSION="12.0"
        export BOBJEVERSION
        LANGWAS="$LANG"
        unset LANG
        LC_ALLWAS="$LC_ALL"
        unset LC_ALL
        ulimit -Sn `ulimit -Hn` # max file descriptors
        ulimit -S -c `ulimit -H -c` # max core file size
        ulimit -S -d `ulimit -H -d` # max data segment size
        ulimit -S -f `ulimit -H -f` # max file size
        ulimit -S -s `ulimit -H -s` # max stack
        ulimit -S -t `ulimit -H -t` # max CPU time
        LANG="$LANGWAS"; export LANG
        unset LANGWAS
        LC_ALL="$LC_ALLWAS"; export LC_ALL
        unset LC_ALLWAS
        case X"$SOFTWARE" in
            XLinux) SOFTWARELC="linux"; SHAREDLIBSUFFIX=".so"; CB1LIBSUFFIX="${SHAREDLIBSUFFIX?}.12.0"; CB1SYMLINKLIBSUFFIX="${SHAREDLIBSUFFIX?}.12" ;;
            XAIX)   SOFTWARELC="aix"; SHAREDLIBSUFFIX=".so"; CB1LIBSUFFIX=".12.0${SHAREDLIBSUFFIX?}"; CB1SYMLINKLIBSUFFIX=".12${SHAREDLIBSUFFIX?}";;
            XSunOS) SOFTWARELC="solaris"; SHAREDLIBSUFFIX=".so"; CB1LIBSUFFIX="${SHAREDLIBSUFFIX?}.12.0"; CB1SYMLINKLIBSUFFIX="${SHAREDLIBSUFFIX?}.12";;
            XHP-UX)
                    SOFTWARELC="hpux";
                    if [ "$SOFTWAREPATH" = "hpux_ia64" ]; then
                            SHAREDLIBSUFFIX=".so";
                    else
                            SHAREDLIBSUFFIX=".sl";
                    fi
                    CB1LIBSUFFIX="${SHAREDLIBSUFFIX?}.12.0";
                    CB1SYMLINKLIBSUFFIX="${SHAREDLIBSUFFIX?}.12";;
        esac
        export SOFTWAREPATH
        export SOFTWARE
        export SHAREDLIBSUFFIX
        export CB1LIBSUFFIX
        export CB1SYMLINKLIBSUFFIX
        if [ "$SOFTWAREPATH" = "" ]; then
            echo "$UNKNOWNPLATFORM (unknown platform): $SOFTWARE"
            exit 1
        fi
        if [ -d "$BOBJEDIR"/jdk ]; then
          JAVA_HOME="$jdk"
          export JAVA_HOME
        fi
          JAVA_OPTS="-d$OBJECT_MODEL -Dbobj.enterprise.home=$
    fi
    setting AAHOME here so when CAD starts the value is set
    enterprise120 -Djava.awt.headless=true -Djava.net.preferIPv4Stack=false"
          if [ "$SOFTWARE" = "AIX" -o "$SOFTWARE" = "SunOS" -o "$SOFTWARE" = "Linux" -o "$SOFTWARE" = "HP-UX" ]; then
            JAVA_OPTS="$JAVA_OPTS -Xmx1024m -XX:MaxPermSize=256m"
          fi
          export JAVA_OPTS
        if [ -d "$Dashboard_Analytics_120" ]; then
            AAHOME="$Dashboard_Analytics_120"
            export AAHOME
        fi
        WCSDIR="$enterprise120/$SOFTWAREPATH/wcs/"
        export WCSDIR
        WCSBINDIR="$bin/"
        export WCSBINDIR
        WCSCOMPONENTDIR="$components/"
        export WCSCOMPONENTDIR
        BINDIR="$enterprise120/$SOFTWAREPATH/"
        export BINDIR
        LIBDIR="$enterprise120/$SOFTWAREPATH/"
        export LIBDIR
        PLUGINDIR="$enterprise120/packages/"
        export PLUGINDIR
        PLUGINDIST="$enterprise120/$SOFTWAREPATH/plugins/"
        export PLUGINDIST
        LOGDIR="$append the new valuelogging/"
        export LOGDIR
        if [ x"$BOE_LOGGER_ENVIRONMENT" = x ]; then
            BOE_LOGGER_ENVIRONMENT="-loggingPath $LOGDIR"
        else
            BOE_LOGGER_ENVIRONMENT="$BOE_LOGGER_ENVIRONMENT -loggingPath $LOGDIR"
        fi
        export BOE_LOGGER_ENVIRONMENT
        SCRIPTDIR="$enterprise120/generic/"
        export SCRIPTDIR
        JAVASCRIPTDIR="$setup/jscripts/"
        export JAVASCRIPTDIR
        MACHINENAME=`uname -n`
        export MACHINENAME
        removeUTF8SpecificsForKorean
        STRIPPEDMACHINENAME=`hostname | sed -e 's/\..*//'`
        export STRIPPEDMACHINENAME
        if [ x"$BOBJEUSERNAME" = x ]; then
          BOBJEUSERNAME=`id | sed -e "s|).\$||" -e "s|^.(||" `
          export BOBJEUSERNAME
        fi
        restoreUTF8SpecificsForKorean
        DEFAULT_REGFILE="$BOBJEDIR"setup/.defaultreg
        export DEFAULT_REGFILE
        REGFILE="$BOBJEDIR"data/.bobj
        export REGFILE
        BOE_REGISTRYHOME="$REGFILE/registry"
        export BOE_REGISTRYHOME
        DEFAULT_ODBCFILE="$BOBJEDIR"defaultodbc.ini
        export DEFAULT_ODBCFILE
        ODBC_HOME="$odbc"
        export ODBC_HOME
    the PID file location
        PIDDIR="$BOBJEDIR"serverpids
        export PIDDIR
        SQLRULEDIRECTORY="$LIBDIR"
        export SQLRULEDIRECTORY
        PATH="$BINDIR:$crpe/xvfb:$PATH"
        export PATH
        CRPEPATH="$enterprise120/$SOFTWAREPATH/crpe/"
        export CRPEPATH
        MWHOME="$mw/"
        export MWHOME
        BOBJEXVFBPATH="$xvfb/"
        export BOBJEXVFBPATH
        MWUSER_DIRECTORY="$once the crpe is in, we should exit if this file doesn't exist.
    Uncomment this to turn off Xvfb security and allow connections from
    everyone. 
    MW_XVFB_AC="1"
    export MW_XVFB_AC
    Use a seperate .Xauthority file.  Comment out this line if you want
    to use the user's .Xauthority file for storing the Xvfb authentication
    tokens.
    registry/"
        export MWUSER_DIRECTORY
        MWRT_MODE="professional"
        export MWRT_MODE
        MWREGISTRY=":$MWUSER_DIRECTORY/hklm_$
    Mainwin can deadlock unless this is set
    Prevents Mainwin from popping up dialogs in some situations, causing a deadlock
    variables merged from RAS
    XVFB Manager
    Environment Variables:
          MW_XVFB_EXE         = Name of the Xvfb exe.
                                Default is 'Xvfb'.
          MW_XVFB_DAEMON      = Name of the XvfbDaemon exe.
                                Default is 'XvfbDaemon'.
          MW_XVFB_DAEMON_PORT = Port number that Xvfb Daemon will listen too.
                                Default is 5222.
          MW_XVFB_DAEMON_HOST = Host on which the XvfbDeamon is running.
                                Default is Local host.
          MW_XVFB_DAEMON_XVFB = Number of Xvfb to run.
                                Default is '5'.
          MW_XVFB_DAEMON_DISPLAY = Starting display number for Xvfb.
                                Default is '1'.
          MW_XVFB_DAEMON_PROFILE = Path to the Security Profile for Xvfb.
                                Default is 'SecurityProfile'.
          MW_XVFB_DAEMON_TRACE = Set to turn on tracing information.
                                Default is undefined.
          MW_XVFB_DAEMON_DIE  = Turn off the exit code if no more connections.
                                Default is undefined.
          MW_XVFB_FONT = Locations from which to load font
    By this symbol being defined, the checking for a current set display is disabled.
    Set to turn on tracing info when defined.  Default is undefined.
    MW_XVFB_DAEMON_TRACE=defined
    export MW_XVFB_DAEMON_TRACE
    RAS Home
    .bin"
        export MWREGISTRY
        MWCORE_PRIVATE_DATA="$MWUSER_DIRECTORY/core_data"
        export MWCORE_PRIVATE_DATA
        if [ -f "$MWHOME"setmwruntime ]; then
            . "$MWHOME"setmwruntime
        fi
        MWNT_OLE_DOCS=true
        export MWNT_OLE_DOCS
        MWPRINTER_DPI=600
        export MWPRINTER_DPI
        MWVISUAL_CLASS="TrueColor"
        export MWVISUAL_CLASS
        if [ "$SOFTWAREPATH" = "hpux_ia64" ]; then
            MWTHREAD_STACK="200000"
        else
            MWTHREAD_STACK="FA000"
        fi
        export MWTHREAD_STACK
        MWFONT_DIR_PATH="$fonts/"
        export MWFONT_DIR_PATH
        MW_XVFB_DAEMON_FONT="$misc/"
        export MW_XVFB_DAEMON_FONT
        XAUTHORITY="$xvfb/.Xauthority"
        export XAUTHORITY
        MWDEBUG_LEVEL=0
        export MWDEBUG_LEVEL
        MWINVISIBLE_DISPLAY=1
        export MWINVISIBLE_DISPLAY
       MWNO_SIGCHLD_IGNORE=1
       export MWNO_SIGCHLD_IGNORE
       MWLOOK=motif
       export MWLOOK
            MW_XVFB_DAEMON_PROFILE="$BOBJEXVFBPATH/SecurityPolicy"
            export MW_XVFB_DAEMON_PROFILE
            MW_XVFB_DAEMON_IGNORE_DISPLAY="true"
            export MW_XVFB_DAEMON_IGNORE_DISPLAY
            if [ "$SOFTWARE" = "HP-UX" ]; then
                MW_XVFB_DAEMON_XVFB=10
            else
                MW_XVFB_DAEMON_XVFB=5
            fi
            export MW_XVFB_DAEMON_XVFB
            MWNO_FILE_LOCKING=true
            export MWNO_FILE_LOCKING
            MWNO_SIGNAL_CATCHING=true
            export MWNO_SIGNAL_CATCHING
        RASHOME="$enterprise120/$SOFTWAREPATH/ras/"
        export RASHOME
        LIBRARYPATH="$LIBDIR:$WCSCOMPONENTDIR:$PLUGINDIST/auth/secEnterprise:$enterprise120/$SOFTWAREPATH/crpe:$:$PLUGINDIST/desktop/CrystalEnterprise.Report:$enterprise120/$SOFTWAREPATH/ras:$
    May optionally be set to MALLOCMULTIHEAP=heaps:n[,considersize]
    where n is scaled to the number of CPUs (usually 2x).
    Setting to MALLOCMULTIHEAP=1 enables system defaults.
    setting MALLOCMULTIHEAP to 'considersize' fixes an AIX memory leak and significantly reduces the memory footprint.
    env variable to fix the default cpu affinity
    env variable to fix dlopen/dlclose behaviour to be more like ELF-based systems
    aix thread stack overflow guarding : won't catch if overflow is more than 4k, but better than nothing
    aix specific ulimit changes
    unset the LANG so that we don't get the localized version of 'unlimited' if the localized system messages are installed.
    undo that bug workaround from above
    set the aix thread scope to system (1:1)
    better core naming for aix 5
    Check if memory windows is enabled in the kernal parameters
    We will support memory windows, either through the "BOE120_HP_MEMWIN_ID" environment variable,
    or through the "BusinessObjectsEnterprise120" memory window key in /etc/services.window
    Use memory windows if available on HP-UX.
    For both HPUX Itanium and PA-RISC
    Reduce the number of arenas from 8 (default) to 1 (min) which solves memory blowup issue.
    Enable the thread local cache to compensate.
    http://www.docs.hp.com/en/B2355-60130/malloc.3C.html
    mysql/lib"
        if [ "$SOFTWARE" = "AIX" ]; then
            LIBPATH="$LIBRARYPATH:$LIBPATH"
            export LIBPATH
            if [ x"$MALLOCMULTIHEAP" = x ]; then
                CRConfig env variable for DCP
                MALLOCMULTIHEAP="considersize"
                export MALLOCMULTIHEAP
            fi
            RT_GRQ=ON
            export RT_GRQ
            LDR_CNTRL=IGNOREUNLOAD
            export LDR_CNTRL
            AIXTHREAD_GUARDPAGES=1
            export AIXTHREAD_GUARDPAGES
            LANGWAS="$LANG"
            unset LANG
            LC_ALLWAS="$LC_ALL"
            unset LC_ALL
            ulimit -S -m `ulimit -H -m` # max memory
            LANG="$LANGWAS"; export LANG
            unset LANGWAS
            LC_ALL="$LC_ALLWAS"; export LC_ALL
            unset LC_ALLWAS
            AIXTHREAD_SCOPE="S"
            export AIXTHREAD_SCOPE
            Version=`uname -v`
            Release=`uname -r`
            if [ "$Version" -gt 4 ]; then
                CORE_NAMING=ON
                export CORE_NAMING
            fi
            AIXTHREAD_MUTEX_DEBUG=OFF
            export AIXTHREAD_MUTEX_DEBUG
            AIXTHREAD_COND_DEBUG=OFF
            export AIXTHREAD_COND_DEBUG
            AIXTHREAD_RWLOCK_DEBUG=OFF
            export AIXTHREAD_RWLOCK_DEBUG
        elif [ "$SOFTWARE" = "HP-UX" ]; then
            if [ "$SOFTWAREPATH" = "hpux_ia64" ]; then
                SHLIB_PATH="$LIBRARYPATH:$SHLIB_PATH:$JAVA_HOME/jre/lib/IA64W.0/server"
            else
                SHLIB_PATH="$LIBRARYPATH:$SHLIB_PATH:$JAVA_HOME/jre/lib/PA_RISC2.0/server"
            fi
            export SHLIB_PATH
            MAX_MEM_WINDOW=`/usr/sbin/kctune | grep max_mem_window | awk '{print $2}'`
            if [[ "$MAX_MEM_WINDOW" != "0" ]]; then
                if [[ "$BOE120_HP_MEMWIN_ID" = "" && -r "/etc/services.window" && -x "/usr/bin/getmemwindow" ]]; then
                  BOE120_HP_MEMWIN_ID="`/usr/bin/getmemwindow BusinessObjectsEnterprise120`"
                  export BOE120_HP_MEMWIN_ID
                fi
                if [[ -x "/usr/bin/setmemwindow" ]]; then
                    if [[ "$BOE120_HP_MEMWIN_ID" != "" ]]; then
                        CE_CMDLINE_PREFIX="/usr/bin/setmemwindow -f -i $BOE120_HP_MEMWIN_ID "
                    fi
                fi
                export CE_CMDLINE_PREFIX
            fi
            export MARENA_OPTS=1:8
            export MCACHE_OPTS=100:8:0
        elif [ "$SOFTWARE" = "Linux" ]; then
            LD_LIBRARY_PATH="$LIBRARYPATH:$perl/lib/5.8.0/i386-linux-thread-multi/CORE:$LD_LIBRARY_PATH"
            export LD_LIBRARY_PATH
        else
            LD_LIBRARY_PATH="$LIBRARYPATH:$LD_LIBRARY_PATH"
            export LD_LIBRARY_PATH
        fi
        CRCONFIGFILE="$java/CRConfig.xml"
        if [ -f "$CRCONFIGFILE" ]; then
          CRConfig11="$CRCONFIGFILE"   
          export CRConfig11
        fi
        if [ -d "$ODBC_HOME/locale" ]; then
    set up the odbc symlink to work around:
    The DataDirect SQL Server ODBC driver on UNIX will not function properly under a
    locale other than "en_US" due to strong dependencies on their locale files.
          MYLOCALE=`locale | grep LC_MESSAGES | sed -e 's|LC_MESSAGES="||g' -e 's|"$||g'`
          if [ ! -d "$ODBC_HOME/locale/$MYLOCALE" ]; then
            ln -s "$ODBC_HOME/locale/en_US" "$ODBC_HOME/locale/$MYLOCALE"
          fi
        fi
    This was originally called TMPDIR, but now MainWin supports MW_TMPDIR, so we export MW_TMPDIR
    ADAPT00506764 tracks the original issue with TMPDIR/Essbase Connectivity
    MySQL now sets its TMPDIR in mysqlstartup.sh
    set the tmp dir locally, if the value is not already set.
        if [ x"$MW_TMPDIR" = x ]; then
          if [ ! -d "$BOBJEDIR"/tmp ]; then
            mkdir -p "$BOBJEDIR"/tmp
          fi
          MW_TMPDIR="$BOBJEDIR"/tmp
          export MW_TMPDIR
        fi
    Comment this out to turn off custom Solaris memory allocator
        if [ "$SOFTWAREPATH" = "solaris_sparc" ]; then
            LD_PRELOAD="libhoard.so.1"
            export LD_PRELOAD
    Need to set up 64-bit specific library path so that 64-bit processes will
    preload the 64-bit version of the memory allocator, and not the 32-bit version
            LD_LIBRARY_PATH_64="$enterprise120/solaris_sparcv9"
            export LD_LIBRARY_PATH_64
        fi
    setup the mysql env variables
        if [ -d "$BOBJEDIR"/mysql ]; then
    mysql env variables
                MYSQL_UNIX_PORT="$BOBJEDIR"mysql/mysql.sock
                export MYSQL_UNIX_PORT
        fi
    call env.sh from sub-directories (presumably from add-on installs)
        for dir in "${BOBJEDIR?}/setup"/*
        do
            if [ -r "${dir?}/env.sh" ]; then
                . "${dir?}/env.sh"
            fi
        done
    fi
    if [ X"$SOFTWARE" = "XHP-UX" ]; then
    check for existence of u_flag, if it is, turn it back on.
        if [ "$U_FLAG" = 1 ]; then
            set -u
        fi
    fi

  • CFScript and Initializing Java

    Hello, I am currently generating barcodes successfully in CF
    7. However, I'm trying to simply point the RBarcode reader (from
    java4less.com) to a .jpg and read the file. If anyone can help, it
    would be GREATLY appreciated.
    For the required JAR files, go to:
    http://www.java4less.com/vision/RVisionJava.zip
    (READER)
    http://www.java4less.com/rbard10.zip
    (GENERATOR)
    Someone has successfully done what I'm trying to do - but has
    done so in CF 8 (I'm using CF7). To see his code:
    http://www.stillnetstudios.com/2007/12/15/2d-barcodes-coldfusion

    aparsons wrote:
    RImageData =
    myReader.scan(myImage.init(imageIO.read(inFile)));
    return RImageData;
    I think I'm pretty close... but I keep getting the list of
    methods back from the cfscript:
    That is because scan() returns an array of BarCodeData
    objects. You have to loop through the array of java objects and
    call the desired methods to extract the data you need. If you look
    at the code for 2DBarCode_j4l.cfc, that is what the author is doing
    inside the readFromImage() function. He extracts the data and
    converts it to CF objects for easier use. Since the CFC is already
    written, have you tried adapting it to work with MX7?
    BTW, you should VAR scope all function local variables to
    prevent thread/scope conflicts.

  • Method Scope variables controls Multi-Threading !

    Hye there Experts !
    First, let me thank you all for such a brain-stuff sharing around; feel nice to be a part here.
    While browsing through the below article, found something confusing...kindly clarify.
    http://www.javaworld.com/javaworld/jw-07-2004/jw-0712-threadsafe.html?page=1
    Extract from the above discussion I understand :
    when a variable is moved to method scope instead of instance scope, synchronization is achieved.
    How is this true for servlets ???
    Method scope variables are available only during method call I think...here, since this is a servlet, there will be only one instance and if many (lets say 10) requests hits this servlet object, all these threads will read same counter as all of them enter into this only one method of this object,
    so...this should be still not thread safe I guess.
    I didn't want to execute and see results of this code, but I am trying to understand the key at first.
    Please guide me before brain blows... :-)
    Would also appreciate any references that really says true things about
    'synchronization for enterprize (handle huge requests) web apps - technques for servlets and any other stuff'
    Thanks again guys, have a wonderful time.

    feel nice to be a part here.Welcome to the mad-house ;-)
    Method scope variables are available only during method callWARNING: I'm no guru, so this may be misleading or just plain wrong.. but as I understand it:
    Yep a "local" variable exists only the context of the execution of it's containing method... so a local variable is implicitly bound to the thread that created it (by invoking the method in which the local is declared)... a local variable can't be accessed directly by another thread simply because the other thread has no access-path to the variable (you can't expose a local through getters & setters)... hence locals are thread safe.
    The important bit is that it's the thread which "owns" the local variable... not the declaring method... if the method is executed concurrently by two threads, each thread will have its own private copy of all the local variables.
    One other question though: are locals in static methods still thread safe? I'm not sure.
    package forums;
    class NonfinalLocalVariableInThreadTest
      public static void main(String[] args) {
        try {
          new Thread(new Runnable() {
            public void run() {
              System.out.println(args[0]);
          }).start();
        } catch (Exception e) {
          e.printStackTrace();
    compiler error
    C:\Java\home\src\forums>"C:\Program Files\Java\jdk1.6.0_07\bin\javac.exe" -Xlint -d c:\java\home\classes -cp c:\java\home\src;.;c:\java\home\classes c:\java\home\src\forums\NonfinalLocalVariableInThreadTest.java
    C:\Java\home\src\forums\NonfinalLocalVariableInThreadTest.java:9: local variable args is accessed from within inner class; needs to be declared final
              System.out.println(args[0]);
                                 ^
    1 error
    Output completed (0 sec consumed)

  • [JCoAPI] The context with the session id scope type [null] is currently used in thread HTTP Worker

    Hello to all SAP-experts.
    I have an error in SAP CE, and i can see in troubleshooting following information:
    [JCoAPI] The context with the session id [JCo_mMnig6B1YRWfNCWhW0pY0CgFOhzFTAHqyFEA_SAP:P3fshVcB4PLh3CzLBVbpf5lVRxzFTAHqyFEA_SAPyxuggqvaUEsNVbxNQybjvxH0] scope type [null] is currently used in thread HTTP Worker [@1902361406] [0x91].Current thread is HTTP Worker [@1590998042] [0x97].
    invoked at com.sap.conn.jco.rt.Context.checkBusy(Context.java:633)
    invoked at com.sap.conn.jco.rt.Context.getConnection(Context.java:153)
    invoked at com.sap.conn.jco.rt.RfcDestination.execute(RfcDestination.java:1466)
    invoked at com.sap.conn.jco.rt.RfcDestination.execute(RfcDestination.java:1437)
    invoked at com.sap.conn.jco.rt.AbapFunction.execute(AbapFunction.java:300)
    invoked at com.sap.conn.jco.rt.DefaultRequest.execute(DefaultRequest.java:68)
    invoked at com.sap.tc.cm.arfc2.model.ARFC2GenericModelClassExecutable.executeInternal(ARFC2GenericModelClassExecutable.java:107)
    invoked at com.sap.tc.cm.arfc2.model.ARFC2GenericModelClassExecutable.execute(ARFC2GenericModelClassExecutable.java:68)
    invoked at com.sap.tc.cm.arfc2.gci.ARFC2TypedModelClassExecutable.execute(ARFC2TypedModelClassExecutable.java:54)
    invoked at ru.sng.terminal.utt.terminals.wd.comp.utt_term.Utt_term.loadReasonsToStop(Utt_term.java:1542)
    invoked at ru.sng.terminal.utt.terminals.wd.comp.utt_term.Utt_term.wdDoInit(Utt_term.java:186)
    invoked at ru.sng.terminal.utt.terminals.wd.comp.utt_term.wdp.InternalUtt_term.wdDoInit(InternalUtt_term.java:1054)
    invoked at com.sap.tc.webdynpro.progmodel.generation.DelegatingComponent.doInit(DelegatingComponent.java:161)
    invoked at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:227)
    invoked at com.sap.tc.webdynpro.progmodel.components.Component.initController(Component.java:258)
    invoked at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:206)
    invoked at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.init(ClientApplication.java:590)
    invoked at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.doPreprocessing(ClientApplication.java:1457)
    invoked at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doPreprocessing(ApplicationSession.java:660)
    invoked at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:349)
    invoked at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:326)
    invoked at com.sap.tc.webdynpro.serverimpl.core.AbstractDispatcherServlet.doContent(AbstractDispatcherServlet.java:87)
    invoked at com.sap.tc.webdynpro.serverimpl.wdc.DispatcherServlet.doContent(DispatcherServlet.java:89)
    invoked at com.sap.tc.webdynpro.serverimpl.core.AbstractDispatcherServlet.doGet(AbstractDispatcherServlet.java:55)
    invoked at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
    invoked at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    invoked at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)
    invoked at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:38)
    invoked at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:457)
    invoked at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:210)
    invoked at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:441)
    invoked at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:430)
    invoked at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:81)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:278)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
    invoked at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)
    invoked at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
    invoked at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
    invoked at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.SessionSizeFilter.process(SessionSizeFilter.java:26)
    invoked at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:57)
    invoked at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:43)
    invoked at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
    invoked at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
    invoked at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:475)
    invoked at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:269)
    invoked at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
    invoked at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
    invoked at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)
    invoked at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
    Please, tell how can i solve this problem ?

    Hi Konstantin,
    it has nothing to do with the number of system threads. You are obviously executing several function modules statefully in multiple threads within the same session context. Stateful requests can only be executed in an ordered manner in case they should belong together. You are using ARFC2, which is part of the WebDynpro runtime. In case you are sure that the calls are independent from each other, it might be a good idea to adjust the scope type of some of your bindings. Then the requests will be executed with different scopes depending on your configuration and you can execute them concurrently
    Best regards,
    Markus

  • Scope of Threads

    Does anyone know. I want to have users be able to enter commands into a text field, and then have the text field action listener create a new thread to handle the command (because some commands are really long). My question is, after I start the newly created thread, and then return from the actionPerformed method, the newly created thread will no longer have any references pointing to it because it will have gone out of scope, so does that mean that the thread might be garbage collected while it is still running? Here is how My action listener works. Thank you.
    inputField.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent e)
                        JTextField field = (JTextField)e.getSource(); //safe cast
                        String command = field.getText();
                        field.setText("");
                        UserCommandThread userCommandThread = new UserCommandThread(infoSocket, command, console);
                        userCommandThread.start();
              });

    Actually, when a Thread is started, the instance is registered to "ThreadGroup".
    ThreadGroup holds this reference until the thread exits, i.e. until the run() method exits.

  • How to dynamically load jar files - limiting scope to that thread

    Dynamically loading jar files has been discussed a lot. I have read a quite a few posts, articles, and demo code for doing just that. However, I have yet to find a solution to my problem. Most people modify their system class loader and are happy. I have done that and was happy for a time. Occasionally, you will see reference to an application server or tomcat or some other large project that have successfully been able to load and unload jar files, allow for dynamic deployment of code, etc. However, I have not been able to achieve similar success; And my problem is much less complicated.
    I have an application that executes a thread to send a given file/message to a standard JMS Server Queue. Depending on the parameters selected by the user, this thread may need to communicate with one of a number of JMS Servers, ie. JBoss, WebLogic, EAServer, Glassfish, etc. All of which can be done with the same code, but each needs to load their own flavor of JMS Client Jar files. In this instance, spawning a separate JVM for each communication would work from a classloader perspective. However, I need to keep it in the family and run under the same JVM, albeit each JMS Server Connection will be created and maintained in separate Threads.
    I am close, I am doing the following...
    1. Creating a new URLClassLoader in the run() method of each thread.
    2. Set this threads contextClassLoader to the new URLClassLoader.
    3. Load the javax.jms.JMSException class with the URLClassLoader.loadClass() method.
    4. Create an initialContext object within this thread.
    Note: I read that the initialContext and subsequent conext lookup calls would use the Thread�s
    contextClassLoader for finding/loading classes.
    5. Perform context.lookup calls for a connectionFactory and Queue name.
    6. Create JMS Connection, etc. Send Message.
    Most of this seems to work. However, I am still getting a NoClassDefFoundError exception for the javax.jms.JMSException class ( Note step #3 - tried to cure unsuccessfully).
    If I include one of the JMS Client jar files ( ie wljmsclient.jar for weblogic ) in the classpath then it works for all the different JMS Servers, but I do not have confidence that each of the providers implemented these classes that now resolve the same way. It may work for now, but, I believe I am just lucky.
    Can anyone shine some light on this for me and all the others who have wanted to dynamically load classes/jar files on a per Thread basis?

    Thanks to everyone - I got it working!
    First, BenSchulz' s dumpClassLoader() method helped me to visualize the classLoader hierarchy. I am still not completely sure I understand why my initial class was always found by the systemClassLoader, but knowning that - was the step I needed to find the solution.
    Second, kdgregory suggested that I use a "glue class". I thought that I already was using a "glue class" because I did not have any JMSClient specific classes exposed to the rest of the application. They were all handled by my QueueAdmin class. However...
    The real problem turned out to be that my two isolating classes (the parent "MessageSender", and the child "QueueAdmin") were contained within the same jar file that was included in the classpath. This meant that no matter what I did the classes were loaded by the systemClassLoader. Isolating them in classes was just the first step. I had to remove them from my jar file and create another jar file just for those JMSClient specific classes. Then this jar file was only included int custom classLoader that I created when I wanted to instantiate a JMSClient session.
    I had to create an interface in the primary jar file that could be loaded by the systemClassLoader to provide the stubs for the individual methods that I needed to call in the MessageSender/QueueAdmin Classes. These JMSClient specific classes had to implement the interface so as to provide a relationship between the systemClassLoader classes and the custom classLoader classes.
    Finally, when I loaded and instantiated the JMSClient specific classes with the custom classLoader I had to cast them to the interface class in order to make the method calls necessary to send the messages to the individual JMS Servers.
    psuedu code/concept ....
    Primary Jar File   -  Included in ClassPath                                                      
    Class<?> cls = ClassLoader.loadClass( "JMSClient.MessageSender" )
    JMSClientInterface jmsClient = (JMSClientInterface) cls.newInstance()                            
    jmsClient.sendMessage()                                                                      
    JMSClient Jar File  -  Loaded by Custom ClassLoader Only
    MessageSender impliments Primary.JMSClientInterface{
        sendMessage() {
            Class<?> cls=ClassLoader.loadClass( "JMSClient.QueueAdmin" )
            QueueAdmin queueAdmin=(QueueAdmin) cls.newInstance()
            queueAdmin.JMSClientSpecificMethod()
        }

  • How to make a global scope component to be thread safe?

    One of my global component preserves states in its member variables, I am afraid that it's might messed up in multi-threading conditions, so how to make a nucleus global component to be thread safe?
    Edited by: user13344577 on Jul 14, 2011 9:45 AM

    Hi,
    Just to help integrate Shaik's and my own seemingly contradictory replies:
    If the member variables in your global component actually need to be globally available, so that multiple threads/sessions need to seem the same data, then you need to use synchronization or some scheme to make this data thread-safe when updating it. If the member variables are non-global data and are simply for convenience of having data available for multiple method calls or something like that, then you should do as I said (don't use synchronization) and use one of my suggestions to avoid this.
    I have seen customers frequently do what I replied about and store non-global data in a global component, and Shaik simply interpreted what "user13344577" is trying to do differently. Clarification is needed to know which of our answers better applies.
    Thanks.
    Nick Glover
    Oracle Support for ATG Products

  • Why Multiple users share the same Thread

    Hello
    <BR>
    I am developing a small application which You can like a forum
    <BR>
    When mulitiple users put their questions.I use jsp and servlets.
    <BR>
    when i open two windows of the browser then no separate question is
    present all the windows put the same question again and again with
    the same user name although i login with different names and has
    put question on different forums.
    i use session tracking for this purpose and has scope session.
    i change scope to request but nothing.
    i put all information of user name and thread in the session.setAttribute("key",value)
    and get it by using getAttribut("key") where i need it.
    <BR>
    My question is how i can solve this problem.
    In forums like jguru or sun or anyother how they maintain individual
    data for each person.
    please reply me soon as i am getting too late bcz of this problem
    ThanX

    For changing container, I mean to add a context to the new container for your application. With a little eyeballing, you can find where to add Context element in server.xml[in conf folder for Tomcat]. You need to change the bold ones.
    <Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="true" debug="5" docBase="e:/DBTest" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/DBTest" privileged="false" reloadable="true" swallowOutput="false" useNaming="true" wrapperClass="org.apache.catalina.core.StandardWrapper">
    <Logger className="org.apache.catalina.logger.FileLogger" debug="0" directory="logs" prefix="localhost_DBTest_log." suffix=".txt" timestamp="true" verbosity="1"/>
    </Context>
    I think u got rid of the problem.
    Hafizur Rahman
    SCJP

  • Logging Java objects and threads. Application sampling.

    I am using a laptop to run my application on. It uses windows XP and it is the only application running on that machine. I use TCP and serial port to communicate to other devices. My application is supposed to use up to 300M of memory but apparently it using much more than that. The laptop physical memory size is 512M. I am wondering if there is a way to sample my application periodically. What I mean by that is, after the applications runs I want to run at the same time kind of profiler that every, let us say, 10 minutes logs the number of objects created and what those objects are or what the current ones are. The number of threads running and what are their names. I want to know what is using all of this memory. The memory usage goes up to about 420M. As a result, the application throws out of memory exception. I believe I can get the number of threads running but do not know how to get their names. I need to know all of that so I would go into my code and see where it is happening and try to solve the problem. One of the ways I have in my mind now is to put a print out everywhere I create an object or thread, but that�s very expensive. Any hints or tips could be useful.
    Thank you in advance.
    P.S.:
    I do not want to run a profiler such as JProfiler because the application is running live and I do not have access to it. I want to embed these logs into the application itself and rerun it on a live system.

    As a first thought, I'm guessing that you're merely thinking that your program will not exceed 300 megabytes just based on the -Xmx300M command you may be passing your program. This is a max heap size, not the max footprint your program will take. Be aware that this can go beyond the scope of 300 MB....
    Now, if you want very detailed information about processes, memory usage, etc, you might be able to keep track of it yourself, but if you want this information from a system-level sort of thing you will not get it, as one of the major points of Java is that it does not care about a lot of system specifics.
    Now, if you're really interested in keeping track of threads, I don't see why you could not just write to a log file every time you spawn a new thread of a particular kind.

  • Multiple JSP's accessing the same thread

    I have multiple users calling multiple JSP's. I also now want to add in a connection pool, which is implemented as a Runnable (It's a thread). However, how do I set it up so that all of the JSP's get a reference to the same connection pool?
    I have done this in a Servlet, where I could have the connection pool constructed in the init() function, and then the Servlet kept a static reference to the pool. Then for each request, I pass the reference to the pool into the service() function of my supporting classes.
    How can I do this in JSP?

    There are few things.......
    I do not know which application server you are using , but almost all competitive application server provide the concept of connection pooling. You do not have to implement connection pooling yourself. And to get a handle to the connection from the pool is through JNDI namespace(as you do for EJB.)
    Now if you still want to do that yourself then, i can propose one way.
    1) Put a instance of the Java class which holds the connection pooling in the application scope.
    ie useBean= Yourclass scope="application"
    2) Now all the JSP's will be able to get to the same object.
    So Look for documentation for putting objects in different scope ie session, application etc.
    Srinivasan Ranganathan

  • Is there an idiots guide to JSF and scope somewhere?

    I am getting very confused with scope and JSF.
    I have a page that just displays customer details (from CustomerBean extends Customer) with a button that should allow the user to change the customer details. Both pages use the same backing bean (is that recommended?).
    customerDetail.jsp --> editCustomer.jsp
    If I set the scope of CustomerBean to session, editCustomer sees the same customer as customerDetail. It seems to me that I shouldn't really be using session scope as I don't want a particular customer to hang around once I have finished with him. So what should I be doing?
    Should customerBean be request scoped? If so how does editCustomer see it?
    Or should I somehow destroy the session scoped customerBean when I have finished with it?
    I also notice that some example jsps out there have a hidden field for the ID - should I simply look up the customer again from the database in editCustomer?
    I also tried to add a <h:inputHidden value="#{customerBean}"/> but that broke my jsp.
    I have bought and read the J2EE tutorial but I am still confused as to what the recommended way to drag the same Object through two jsp pages.
    It's probably very simple but it's doing my head in ;-)
    - David

    Yeah, forming a model in your head to explain something can be painful, sometimes. This question has come up before, including where I work, and I've never really seen a comprehensive answer, so I'll just write one. :)
    This is kind of a basic servlet concept, so I'll talk mostly about servlets. JSF is just flavor on top of this.
    The lifetime of the request is: from the time the user hits "submit" until the time the response is fully rendered, whatever page that is.
    So, you have a form the user has filled out and he/she hits "submit".
    The HTTP POST request goes to the server (open port 80, write some "key: value" headers to satisfy the HTTP protocol requirements, followed by a stream of text that represents the users' form field values, wait for a response) which then proceeds to process it by parsing the incoming data and making a bunch of subroutine calls. The last set of subroutine calls basically involves a bunch of println() calls to write HTML into an output stream, which is the response the requesting browser is listening for. When that stream is done, the browser displays the html.
    There's nothing that says the html that's displayed is the same as the html that originally held the form the user submitted. The first page is essentially garbage that somehow generated some form fields. The server could care less what it was, all it wants is the key=value pairs.
    You could, if you were so inclined, code all those println()s yourself. That's straight servlet programming. It's totally under your control. You could code println( "<html><body>Hi, Mom!</body></html>"); and be done.
    Or, you could write a JSP that, when compiled, turns into essentially a subroutine chock full o' println()s, and you could call that subroutine.
    You do that with RequestDispatcher.forward(). It's just a subroutine call. (But don't do any more scribbling on the output stream after it returns, 'cause the stream's essentially been closed.)
    It's all a big call tree with one thread of execution, single entry, single exit. One of the nice things about servlets is that the infrastructure makes available to you, in a contextual sorta way, the original request parameters plus whatever attributes you choose to attach to the request as your proceed w/your processing, kind of like charms on a charm bracelet (via ServletRequest.setAttribute()). (When I say "contextual", I mean the ServletRequest is passed in as a parameter to Servlet.service() so you can sling it around in your call tree.) Attributes you choose to attach while processing incoming form data are available later (for instance... in the subroutine that has all those println()s you so carefully coded up or allowed the JSP compiler to generate for you).
    When the call tree is done (you've finally printed "</html>", marked the output stream "done" somehow and shipped all that HTML back out to the browser), the ServletRequest object that held the incoming form parameters plus whatever attribute cruft it accumulated is garbage collected. (I could write something poetic about Elysium and gamboling among daisies, but... nah.) So, the lifetime of that data associated w/the ServletRequest is the duration of that request-processing call tree.
    JSF gives you a nice bunch of automatically-generated request attributes, corresponding to your request-scoped managed beans. It even very kindly transfers (via the value bindings) incoming form parameters into properties of beans which are attributed onto your ServletRequest, automagically.
    So, if, in your JSP, you bind your form data to request-scoped bean properties (not the bean itself, but the bean's properties), those exact same bean properties will be visible on whatever JSP you eventually wind up on and it will be available to whatever intervening logic you code up ("Invoke Application" phase), and when the request is done, it all vanishes into thin air.
    To be more specific to your question: yes, I believe it is recommended to have the same bean between pages. That's kind of the whole point. If you find yourself at the end of a request trying to destroy session data that was created at the beginning of that request, you should probably be using request scoping, not session.
    I could be wrong, but I don't think you can bind an entire bean to an html element value. You bind bean properties. Of course, there's nothing to say that a bean property couldn't be... another bean!
    In your particular case, I guess you have a bunch of display-only strings that come from your customer bean, plus a hidden "key" field somewhere. You could bind that hidden field to the customer.key property and Customer.setKey() would do whatever's necessary to get the rest of the data into the bean. That could be a d/b lookup or a map or array (cache) fetch. Or you could have a "current customer" in your session (that would have to be session-scoped, because you paint the detail screen w/one request and then paint the "edit" screen w/the same customer but in a different request). That "current customer" concept might cause you some problems later when you go multi-window or multi-frame in your webapp (truuuuuuuust me).
    Also, I'm not sure why you need a CustomerBean separate from Customer. Can you just make Customer a bean and be done with it?
    Holy cow, what an essay this turned out to be.
    John Lusk.

  • No preview or scopes information in Apple Color

    This is the second time I've had this issue in around 3 months. I had initially solved the issue but had to do a full clean install of OSX and also my Final Cut Studio package. It's occured again for no apparent reason and to be honest I don't want to waste another few days doing a clean install of both my operating system and editing package again.
    The issue is, my project in FCP 7 is ready for grading and when I click 'Send To > Apple Color', it brings the project over into Color and every clip can be scrubbed through on the timeline. However there are no previews showing up of the clips in the preview window, as well as no colour information/data showing up in the scopes. It's as if there is not video within my project even though there is a good 9 or 10 minutes of footage that needs to be graded!
    I want to sort this problem as soon as possible due to this being a project that is of utmost value!
    I've attached an image of the issue to this post. Thanks in advance.

    Ladies and gents I'd just like to let you know I've solved this issue! It was a bit of a eureka moment but it seemed to do the trick. I'll explain below.
    Basically I have a short section of the film that was shot on Super 8mm film. The Telecine I had meant the footage came back as a perfect 4:3 square, but I wanted a more traditional smooth/feathered/curved/rounded frame over the footage, so I'd created a PNG file with a black border and transparent centre to overlay on top.
    For no apparent reason I decided to delete this image file and try sending the project to Color. Low and behold it's worked no problem and I can now finally see my video in the video preview section, as well as the colour data and information in the scopes.
    A massive thank you to everyone who commented on this thread! Thanks for your time.

Maybe you are looking for

  • Unlimited Delivery Check box in PO

    Dear all, We are facing one issue. In service PO we found one field 'Over Delivery" field and one check box  "Unlimited Delivery". For service we are finding that by default we are getting "unlimited Del" check box checked and system is not allowing

  • What can I do for dispaly   VAT Registration Number in PO Header

    Hi ALL! Which Customizing must I do for display vat registration number in Additional Data of PO Header ? Thanks, Liza

  • How to make a external HD (FireWire or USB) spin down when no in use?

    I have a MM and want to make sure that the external HD spins down if not being used. Would this automatically happen if I tick the box 'Put HD to sleep when not in use' in the control panel? Or is there an other solution to make sure it does so? I ha

  • Limitations while conected HANA universe to design studio

    Hi All, Previously i have created number of dashboard reports in Design Studio using BEx quires. Recently we moved to HANA database. From HANA we have universe connected to Design studio. Here we are facing some problems. It is not accepting huge dat

  • Windows 10 on a partition, are other partitions safe?

    Hello there, I'm having a question about the installation of the Windows 10 Technical Preview. I want to create a partition for Windows 10 next to Windows 7 and Ubuntu 14.04, but I'm not sure about it. As I already knew, Windows 10 is unstable and is