How can I avoid polling for database alerts?

I am implementing a Java package that makes processing alerts from Oracle (the dbms_alert pl/sql package) easier than raw JDBC. This happens inside a servlet. My first problem is that when the servlet container such as tomcat asks the servlet to shutdown, choosing to stop listening for Oracle alerts appears to be impossible without polling Oracle for the alert events.
Specifically, I have a thread that is blocked on a call to dbms_alert.waitany. How can I wake this thread up and have it cleanly shut down? I've tried closing the JDBCConnection in the hopes it would receive a connection-closed exception which my thread could simply ignore if being asked to shut down. But the call to JDBCConnection.close() simply hangs. I've tried a few other tricks to no avail. Documentation I've studied does not discuss the problem at all.
The only "solution" I've found is to pass the dbms_alert.waitany a one-second timeout parameter when waiting for alerts. This makes the thread wake up every second, at which time it will usually just find that the timeout occurred and start waiting again. But this creates an opportunity for it to check an exit flag and terminated itself.
Aside from wasting some CPU cycles this has the serious downside that it results in a remote call to Oracle across the network every second! That will no-doubt aggravate various people in IT as a serious load and I'm not sure how to articulate a good defense.
I'm really hoping that there's some way to wake up my thread without having it wait for a timeout. Otherwise is this not a serious defect?
There are other use cases for my package that are stumped by the same root problem. If I want to register for a new alert, I'd like to wake up my blocked thread, have it make the registration call, then call dbms_alert.waitany again. But this too requires waiting for the thread to wake up based on the timeout and the resulting trade-off between wasting resources and delaying the registration - a trade-off that has no good answer.
Is there any way I can get the call to dbms_alert.waitany to unblock with an error code or exception so this impossible decision becomes irrelevant?
Thanks

>
Specifically, I have a thread that is blocked on a call to dbms_alert.waitany. How can I wake this thread up and have it cleanly shut down?
>
You wake it up the way it is designed to be woken up: signal an alert from another thread.
That thread will 'wake up' when an alert is signaled. So when you want to shutdown set a 'shutdown' variable that the thread checks wheneve it wakes up.
Then use another thread to signal an alert. That alert will wake up your blocked thread, the thread will check the 'shutdown' variable and will take action based on the setting of that variable.
See the examples in the DBMS_ALERT section of the Oracle docs:
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_alert.htm
>
WAITANY Procedure
Call this procedure to wait for an alert to occur for any of the alerts for which the current session is registered.
>
You can register for your own 'JAVA SHUTDOWN' alert in addition to the alert your thread is now registered for. Then use the method I outline above to use the SIGNAL method to generate that 'JAVA SHUTDOWN' alert. That will wake your thread up so it can shut itself down.

Similar Messages

  • How can we avoid duplication of records in database while inserting records

    Hi,
    In my scenerio,while inserting the same records through idoc duplication of records is happening in database.How can i avoid this.

    Divya,
    First its a wrong data, because you cannot have the same data for any condition. Probably its a data problem. Please check with the datbase team and ask them why is it so? They should handle on their end.
    Anyways if the above dont work and if you ahve duplicate records then probably you need to come up with a query using select distinct. If this doesnot work then if the duplicates comes into mapping, you might selecting some fields which are common. So you can use a splitbyvalue(on value change) for those records, so even if there are three records it takes only one record. If you have 4 or 5 common values then you can concat them and then use the splitbyvalue change.
    Else an adapter module should help you out in sender comm. channel after picking the records.
    For an idea can you rajs response in this thread:
    Duplicate records
    Regards,
    ---Satish

  • How can I avoid duplicates on contacts and how do I get contacts created on iPhone/ipad synchronized on my mac? so far it doesn't work correctly, just sometimes. same for icalendar

    how can I avoid duplicates on contacts and how do I get contacts created on iPhone/ipad synchronized on my mac? so far it doesn't work correctly, just sometimes. same for icalendar

    On your Mac, for duplicates, switching Contacts off then back on in System Preferences > iCloud may prevent duplicates.
    On the iPhone / iPad tap Settings > iCloud. Make sure Contacts and Calendars are swtiched on.
    Try restarting your Mac and your iOS devices when items won't sync as they should.
    To restart an iOS device:  Hold the On/Off Sleep/Wake button down until the red slider appears. Slide your finger across the slider to turn off iPhone. To turn iPhone back on, press and hold the On/Off Sleep/Wake button until the Apple logo appears.

  • How can i avoid leading zeros for a field in smartform?

    how can i avoid leading zeros for a field in smartform?

    Hi,
    Using the Symbols.
    &symbol(Z)&  Omit Leading Zeros  &symbol(S)&  Omit Leading Sign 
    &symbol(<)&  Display Leading Sign to the Left 
    &symbol(>)&  Display Leading Sign to the Right 
    &symbol(C)&  Compress Spaces 
    &symbol(.N)&  Display upto N decimal places 
    &symbol(T)&  Omit thousands separator 
    &symbol(R)&  Right justified 
    &symbol(I)&  Suppress output of the initial value 
    Regards,
    Shiva Kumar

  • How can I avoid query result overlapping in Analysis for Office?

    Hello everybody
    I have a question relating to Analysis for Office. If I've a workbook with for example two queries, how can I avoid that the query above the other one overlaps the query results of the lower query?
    The lower query result should adapt according the the query results of the first query.
    Does anybody have an idea? In Bex Analyzer I have the Option to insert a scrollbar for a workbook- is this function available in Analysis für Office? (But that way isn't the way I prefer).
    Thank you in advance.
    Kind regards
    Heike

    Not sure about this - could you take a look at this thread that suggests VBA Placing two tables in Analysis for office without overlap
    I am wondering if the next release might help?  See Figure 1 of Analysis Roadmap Update - Beta Preview, Part 2

  • Can we poll for database view

    Can we poll for database view using Datbase Adapter?
    Thanks
    Vivek.

    It is recommended NOT to use triggers, without going into too much detail this link provides a very good examples of why not to use triggers
    http://www.oracle.com/technology/oramag/oracle/08-sep/o58asktom.html
    The reason the adapter provides functionality for polling is for the very reason of no dependency in the source system.
    cheers
    James

  • Some snaps show up as black screens when I try to view them as single pictures.Even when I run them in slideshows they show up as black screens.These are jpeg files.How can I avoid this happening?

    Some snaps show up as black screens when I try to view them as single pictures.Even when I run them in slideshows they show up as black screens.These are jpeg files.How can I avoid this happening?

    There are several possible causes for the Black Screen issue
    1. Permissions in the Library: Back Up and try rebuild the library: hold down the command and option (or alt) keys while launching iPhoto. Use the resulting dialogue to rebuild. Include the option to check and repair permissions.
    2. Minor Database corruption: Back Up and try rebuild the library: hold down the command and option (or alt) keys while launching iPhoto. Use the resulting dialogue to rebuild.
    3. A Damaged Photo: Select one of the affected photos in the iPhoto Window and right click on it. From the resulting menu select 'Show File (or 'Show Original File' if that's available). Will the file open in Preview? If not then the file is damaged. Time to restore from your back up.
    4. A corrupted iPhoto Cache: Trash the com.apple.iPhoto folder from HD/Users/Your Name/Library/ Caches...
    5. A corrupted preference file: Trash the com.apple.iPhoto.plist file from the HD/Users/ Your Name / library / preferences folder. (Remember you'll need to reset your User options afterwards. These include minor settings like the window colour and so on. Note: If you've moved your library you'll need to point iPhoto at it again.)
    If none of these help:
    As a Test:
    Hold down the option (or alt) key key and launch iPhoto. From the resulting menu select 'Create Library'
    Import a few pics into this new, blank library. Is the Problem repeated there?

  • How can I use OCCI for oracle8.1.6?

    my database is oralce8.1.6 for solaris8.
    I want to develop database application by OCCI .
    But only oracle9i has OCCI.
    How can I do?
    Where can I get OCCI ,and how can I use it for oralce8.1.6?
    thank you very much!!

    OCI is available for all versions of Oracle including Oracle
    7/8/8i etc. However it is not installed by default with these
    versions. I am assuming that the default 9i installation
    includes OCI. You should be able to install OCI for other
    versions through one of the development platforms e.g. ProC/C++
    etc.

  • How can i avoid restarting tomcat server when servlet is modified?

    please advice me that how can i avoid restarting the tomcat server, whenever a servlet file is modified in my application. is their any way ?

    No probs. Here's how I do things...
    1. Install tomcat as normal (e.g. I install to C:\Apps\jakarta-tomcat-5.5.4)
    2. Create a webapps directory in your eclipse project with the following directory structure
    MyEclipseProject
       - src
       - conf
       - webapps
          - MyApplication
             - META-INF
             - WEB-INF
                - classes
                - lib
                - pages3. Set the project's output folder (e.g. bin folder) to webapps/MyApplication/WEB-INF/classes
    4. Put all your jar files in the lib directory
    5. Put JSPs / HTML in the pages directory (you may also want to create additional directories for TLDs, config files etc)
    6. Ensure your web.xml is in the WEB-INF directory
    7. Although it isn't essential I create a context.xml file and store it in META-INF, e.g.
    <Context reloadable="true">
        <!-- Default set of monitored resources -->
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
         <WatchedResource>WEB-INF/conf/struts/struts-config.xml</WatchedResource>
         <WatchedResource>WEB-INF/conf/struts/tiles-defs.xml</WatchedResource>
         <WatchedResource>WEB-INF/conf/struts/validation.xml</WatchedResource>     
    </Context>I use this to set monitored resources that will trigger an automatic appliation reload and to configure JAAS (not shown). See the Tomcat documentation for additional information.
    8. In the 'conf' directory I create a server.xml file used to configure Tomcat (you can copy the one from your <TOMCAT_HOME>/conf/server.xml).
    After copying the file change appBase attribute in the host element to be the full path to the webapps directory. You can also change the HTTP and HTTPS ports if you wish
    9. Download and install the Tomcat Launcher plugin from Sysdeo.
    10. In Eclipse's Preferences menu you will see a new entry for Tomcat. Click this then
    a. Set your Tomcat Version
    b. Set your Tomcat Home
    c. Set "Context declaration mode" to server.xml
    d. Set the configuration file to the full path to your server.xml file created in step 8
    On the "Advanced " sub page select all relevant projects to add to the Tomcat classpath
    On the "JVM Settings" page add all the jars in your WEB-INF lib directory to the class path
    On the "Source Path" page select all relevant projects
    Now if you start Tomcat using the Tomcat icon, you will be able to remote debug your application. If you change web.xml (or any other file in your context.xml watched resources) it will automatically reload. Any changes to JSPs will automatically be picked up (providing your tell your browser not to use the page in cache - e.g. CTRL+F5 in IE)
    There are some limitations that I'm still working on however. Primarily that I haven't included the Tomcat Manager application in my webapps directory, so Sysdeo cannot perform a reload. This means that if I change a source file, and eclipse auotmatically rebuilds, Tomcat doesn't pick up the change unless I either change a watched resource file (e.g. web.xml) or stop and restart Tomcat.
    There's no reason why this can't be fixed, I just haven't got round to it yet.
    I'm sure there are lots of other (probably better) ways of achieving the same thing. This was the first method I tried and it worked, so I stuck with it. I'm not a Tomcat config guru and I'm sure other forum users could provide some improvements should they wish.
    Post if you get into trouble, however I won't be able to respond until next week.
    Cheers,
    Steve

  • I have made a book of my I Photo pictures. In certain layouts there is a textframe. How can I avoid the frame becoming visible in the print if I don't want to write anything? Should I just leave it or should I delete the text "Write your text here" ?

    I have made a book of my iPhoto pictures. In certain layouts there is a text frame. How can I avoid the frame becoming visible in the print if I don't want to write anything?  Should I just leave it untouched or should I delete the instructing text "Write your text here"?

    Most pages have layouts for pictures only or pictures with text boxes. Either select the same layout for that page but the one without the text box or put a space in the text box.
    Putting a space in the text box will avoid getting the warning when ordering that there's an unfilled text box in the book. The box will not be visible in the final product.  You can and should check the book before ordering by previewing it as described in this Apple document: iPhoto '11: Preview a book, card, or calendar before you order or print it
    Happy Holidays

  • DBCA can not use ASM for database storage due to following reason: Could no

    Hi
    I've a recently installed RAC11gR2(11.2.0.3) on HP-UX
    I installed Grid Infrastructure with grid user:
    Node1: # id grid
    uid=1100(grid) gid=1000(oinstall) groups=1031(dba),1021(asmdba)
    Node2: # id grid
    uid=1100(grid) gid=1000(oinstall) groups=1031(dba),1021(asmdba)
    I installed the Oracle Server with oracle user:
    Node1: # id oracle
    uid=1101(oracle) gid=1000(oinstall) groups=1031(dba),1021(asmdba),1033(oper)
    Node2: # id oracle
    uid=1101(oracle) gid=1000(oinstall) groups=1031(dba),1021(asmdba),1033(oper)
    All related Grid Infrastructure is functioning well in both nodes:
    $ crs_stat -t
    Name Type Target State Host
    ora.DATA.dg ora....up.type ONLINE ONLINE node03
    ora.FRA.dg ora....up.type ONLINE ONLINE node03
    ora....ER.lsnr ora....er.type ONLINE ONLINE node03
    ora....N1.lsnr ora....er.type ONLINE ONLINE node04
    ora.asm ora.asm.type ONLINE ONLINE node03
    ora.cvu ora.cvu.type ONLINE ONLINE node04
    ora.gsd ora.gsd.type OFFLINE OFFLINE
    ora....network ora....rk.type ONLINE ONLINE node03
    ora.oc4j ora.oc4j.type OFFLINE OFFLINE
    ora.ons ora.ons.type ONLINE ONLINE node03
    ora.scan1.vip ora....ip.type ONLINE ONLINE node04
    ora....SM1.asm application ONLINE ONLINE node03
    ora....03.lsnr application ONLINE ONLINE node03
    ora....d03.gsd application OFFLINE OFFLINE
    ora....d03.ons application ONLINE ONLINE node03
    ora....d03.vip ora....t1.type ONLINE ONLINE node03
    ora....SM2.asm application ONLINE ONLINE node04
    ora....04.lsnr application ONLINE ONLINE node04
    ora....d04.gsd application OFFLINE OFFLINE
    ora....d04.ons application ONLINE ONLINE node04
    ora....d04.vip ora....t1.type ONLINE ONLINE node04
    $
    The ASM instance are running well in both nodes
    Connected with oracle user, the listener has registered perfectly the ASM instance in each node:
    $
    $ lsnrctl status
    LSNRCTL for HPUX: Version 11.2.0.3.0 - Production on 16-MAY-2012 15:41:06
    Copyright (c) 1991, 2011, Oracle. All rights reserved.
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    STATUS of the LISTENER
    Alias LISTENER
    Version TNSLSNR for HPUX: Version 11.2.0.3.0 - Production
    Start Date 16-MAY-2012 15:24:19
    Uptime 0 days 0 hr. 16 min. 47 sec
    Trace Level off
    Security ON: Local OS Authentication
    SNMP OFF
    Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
    Listener Log File /u01/app/grid/diag/tnslsnr/node03/listener/alert/log .xml
    Listening Endpoints Summary...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=16.0.0.133)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=16.0.0.136)(PORT=1521)))
    Services Summary...
    Service "+ASM" has 1 instance(s).
    Instance "+ASM1", status READY, has 1 handler(s) for this service...
    The command completed successfully
    $
    $
    DATA & FRA disk group are created:
    $
    $ echo $ORACLE_SID
    +ASM1
    $
    $ asmcmd
    ASMCMD>
    ASMCMD> ls -lt
    State Type Rebal Name
    MOUNTED EXTERN N DATA/
    MOUNTED EXTERN N FRA/
    ASMCMD>
    ASMCMD>
    The big issue is... that the DBCA can not see the diskgroups. When I choose ASM Storage it can not see them. It shows the chart in blank and if i try to write the disk group, so the following message appears: can not use ASM for database storage due to following reason: Could not connect to ASM due to following error: ORA-01034 ORACLE not available
    What can be passing in this case... ?
    Thanks in advance

    Thanks both
    Really the problem initially was because of this:
    [INS-06006] Passwordless SSH connectivity not set up between the following node(s): [node1, node2]. CVU may reports "PRVF-4007 : User equivalence check failed for user "user"" for same error
    and I had to install node1 first and after node2 manually and perhaps for this the product was not well linked.
    I resolved the problem establishing the keys with the wizard and after copying the following files from node1 to node2
    /home/grid/.ssh -------> /home/grid/.ssh
    authorized_keys
    known_hosts
    This is the procedure if you run the wizard at the node1.
    The problem is that the wizard creates the keys incompletely...
    Thanks

  • How can I avoid (on a mac) getting called on Skype...

    How can I avoid (on a mac) getting called on Skype when I'm not signed in?
    It's really annoying.
    I'm not sure if it's supposed to be that way, but suddenly I get the skype-calling-sound, and I have to log into the skype app to abort the call. The persistent calling bastards kept on calling after I aborted the call and left the app, so I ended up muting my speakers for a while. It really shouldn't have to be this troublesome.

    That's like asking how many cows can I get into a field.  It depends on the size of the field, size of the cows, the terrain of the field, etc.  We could use a bit more information on what you're trying to accommplish:
    1 - where are the photos being downloaded from.
    2 - how big are the photos?
    3 - where are you going to put the photos, i.e. into folders, into an iPhoto library?
    4 - how big is the hard drive in the Mac Pro and how much free space do you have on it?
    etc., etc, etc......

  • How can i avoid displaying runtime error in intractive report

    hi gurus
    my question is, in interactive report when i reach 20th secondary list after that am getting runtime error when i click again. So i wanted to know how can i avoid that run time error.
    regars
    imran

    Hi Imran,
    Basically we can have one basic list and 20 interactive lists.
    Once when we reached to 20th list then it goes to shortdump.
    So, inorder to avoid that we can modify the system field
    SY-LSIND.
    Just see this example and try this. I hope this will be useful for you.
    REPORT  ZSAMPLE1111.
    data: begin of itab occurs 0,
            matnr like mara-matnr,
            mtart like mara-mtart,
            mbrsh like mara-mbrsh,
            end of itab.
    data: begin of jtab occurs 0,
          maktx like makt-maktx,
          spras like makt-spras,
          end of jtab.
    select matnr mtart mbrsh into table itab from mara up to 10 rows.
    loop at itab.
    write:/ itab-matnr, itab-mtart, itab-mbrsh.
    hide itab-matnr.
    endloop.
    at line-selection.
    select maktx spras into table jtab from makt where spras = 'EN' .
    case sy-lsind.
    when '1'.
    loop at jtab.
    write:/ jtab-maktx, jtab-spras.
    endloop.
    when '20'.             * changes see here.
    sy-lsind = 1.
    when others .
    write:/ 'name',sy-lsind.
    endcase.
    I hope this will be helpful for you.
    <REMOVED BY MODERATOR>
    Cheers,
    Swamy kunche
    Edited by: Alvaro Tejada Galindo on Apr 15, 2008 4:01 PM

  • How can I download a new text alert from i tunes?

    I have an Iphone 4, How can I download a new text alert from I tunes?  I can download a ringtone, but not a text alert?

    ok thanks for that, it just seems daft that for such an advanced phone it wont let you do anything as basic as changing a text alert
    on a similar gripe, would you be able to tell me why the bluetooth doesn't appear to work either?

  • Every time I sync my iCal computer with my iPhone 4 or iPad, duplicate entries are generated on both systems. What am I doing wrong or how can I avoid the duplications?

    Every time I sync my iCal on my computer through iTunes with my iPhone 4 or iPad, duplicate entries are generated on both systems. What am I doing wrong or how can I avoid the duplications? I have been doing this for several years and this problem is a more recent issue, like in the last 6 months. I have been deleting the duplicate entries, on both systems, but some duplicates reappear through "general" entries that are connected to the correct color for a Calendar, but not the name. I am going nuts and wasting tons of hours trying to get the 3 calendars to sync without generating duplicate entries.

    Choose one of the Calenders on ONE of the computers OR the MobileMe as the Master / correct account.
    The REINITAILISE the data of MobileMe within preferences on the computer defining the datatransfer correctly (in the advanced box of preferences). The synchronise iphone contacts and calender directly on-line to MobileMe.
    I posted a question on this today, and gave my own reply !
    Regards,
    Kevin

Maybe you are looking for

  • What are some cool ways to use my iPhone 5 with my MacBook Pro ?

    I just bought a new MacBook Pro and was wondering what types of cool ways I could use my iPhone 5 with my new Mac.

  • Transfer Duty Values from Customs Declaration to ECC

    Does anyone have any experience in transferring duty values to a document in ECC  (i.e. a Purchase Order) after calculating it in a Customs Declaration? I see in the IMG where you can assign duty types in the Customs Declaration to pricing condition

  • Organizing some photos for use on iPad

    I have thousands of pictures in iPhoto. I have an iPad that I would like to display 200 - 300 of my favorite photos on. How can I select these photos for syncing in iTunes without moving the photos from their current event? I started to create an eve

  • Using runtime to invoke IE

    2 questions: 1. I'm trying to do this:           try {                Runtime.getRuntime().exec("iexplore -new \"http://www.google.com\"");           } catch (IOException iox) {But I get an IOException saying java.io.IOException: CreateProcess: iexpl

  • How to install a what's app in my iPad mini?

    HHow to install  a what's app in my iPad , coz I didn't saw the whats app icon