Huge performance differences between a map listener for a key and filter

Hi all,
I wanted to test different kind of map listener available in Coherence 3.3.1 as I would like to use it as an event bus. The result was that I found huge performance differences between them. In my use case, I have data which are time stamped so the full key of the data is the key which identifies its type and the time stamp. Unfortunately, when I had my map listener to the cache, I only know the type id but not the time stamp, thus I cannot add a listener for a key but for a filter which will test the value of the type id. When I launch my test, I got terrible performance results then I tried a listener for a key which gave me much better results but in my case I cannot use it.
Here are my results with a Dual Core of 2.13 GHz
1) Map Listener for a Filter
a) No Index
Create (data always added, the key is composed by the type id and the time stamp)
Cache.put
Test 1: Total 42094 millis, Avg 1052, Total Tries 40, Cache Size 80000
Cache.putAll
Test 2: Total 43860 millis, Avg 1096, Total Tries 40, Cache Size 80000
Update (data added then updated, the key is only composed by the type id)
Cache.put
Test 3: Total 56390 millis, Avg 1409, Total Tries 40, Cache Size 2000
Cache.putAll
Test 4: Total 51734 millis, Avg 1293, Total Tries 40, Cache Size 2000
b) With Index
Cache.put
Test 5: Total 39594 millis, Avg 989, Total Tries 40, Cache Size 80000
Cache.putAll
Test 6: Total 43313 millis, Avg 1082, Total Tries 40, Cache Size 80000
Update
Cache.put
Test 7: Total 55390 millis, Avg 1384, Total Tries 40, Cache Size 2000
Cache.putAll
Test 8: Total 51328 millis, Avg 1283, Total Tries 40, Cache Size 2000
2) Map Listener for a Key
Update
Cache.put
Test 9: Total 3937 millis, Avg 98, Total Tries 40, Cache Size 2000
Cache.putAll
Test 10: Total 1078 millis, Avg 26, Total Tries 40, Cache Size 2000
Please help me to find what is wrong with my code because for now it is unusable.
Best Regards,
Nicolas
Here is my code
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.tangosol.io.ExternalizableLite;
import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;
import com.tangosol.util.Filter;
import com.tangosol.util.MapEvent;
import com.tangosol.util.MapListener;
import com.tangosol.util.extractor.ReflectionExtractor;
import com.tangosol.util.filter.EqualsFilter;
import com.tangosol.util.filter.MapEventFilter;
public class TestFilter {
      * To run a specific test, just launch the program with one parameter which
      * is the test index
     public static void main(String[] args) {
          if (args.length != 1) {
               System.out.println("Usage : java TestFilter 1-10|all");
               System.exit(1);
          final String arg = args[0];
          if (arg.endsWith("all")) {
               for (int i = 1; i <= 10; i++) {
                    test(i);
          } else {
               final int testIndex = Integer.parseInt(args[0]);
               if (testIndex < 1 || testIndex > 10) {
                    System.out.println("Usage : java TestFilter 1-10|all");
                    System.exit(1);               
               test(testIndex);               
     @SuppressWarnings("unchecked")
     private static void test(int testIndex) {
          final NamedCache cache = CacheFactory.getCache("test-cache");
          final int totalObjects = 2000;
          final int totalTries = 40;
          if (testIndex >= 5 && testIndex <= 8) {
               // Add index
               cache.addIndex(new ReflectionExtractor("getKey"), false, null);               
          // Add listeners
          for (int i = 0; i < totalObjects; i++) {
               final MapListener listener = new SimpleMapListener();
               if (testIndex < 9) {
                    // Listen to data with a given filter
                    final Filter filter = new EqualsFilter("getKey", i);
                    cache.addMapListener(listener, new MapEventFilter(filter), false);                    
               } else {
                    // Listen to data with a given key
                    cache.addMapListener(listener, new TestObjectSimple(i), false);                    
          // Load data
          long time = System.currentTimeMillis();
          for (int iTry = 0; iTry < totalTries; iTry++) {
               final long currentTime = System.currentTimeMillis();
               final Map<Object, Object> buffer = new HashMap<Object, Object>(totalObjects);
               for (int i = 0; i < totalObjects; i++) {               
                    final Object obj;
                    if (testIndex == 1 || testIndex == 2 || testIndex == 5 || testIndex == 6) {
                         // Create data with key with time stamp
                         obj = new TestObjectComplete(i, currentTime);
                    } else {
                         // Create data with key without time stamp
                         obj = new TestObjectSimple(i);
                    if ((testIndex & 1) == 1) {
                         // Load data directly into the cache
                         cache.put(obj, obj);                         
                    } else {
                         // Load data into a buffer first
                         buffer.put(obj, obj);                         
               if (!buffer.isEmpty()) {
                    cache.putAll(buffer);                    
          time = System.currentTimeMillis() - time;
          System.out.println("Test " + testIndex + ": Total " + time + " millis, Avg " + (time / totalTries) + ", Total Tries " + totalTries + ", Cache Size " + cache.size());
          cache.destroy();
     public static class SimpleMapListener implements MapListener {
          public void entryDeleted(MapEvent evt) {}
          public void entryInserted(MapEvent evt) {}
          public void entryUpdated(MapEvent evt) {}
     public static class TestObjectComplete implements ExternalizableLite {
          private static final long serialVersionUID = -400722070328560360L;
          private int key;
          private long time;
          public TestObjectComplete() {}          
          public TestObjectComplete(int key, long time) {
               this.key = key;
               this.time = time;
          public int getKey() {
               return key;
          public void readExternal(DataInput in) throws IOException {
               this.key = in.readInt();
               this.time = in.readLong();
          public void writeExternal(DataOutput out) throws IOException {
               out.writeInt(key);
               out.writeLong(time);
     public static class TestObjectSimple implements ExternalizableLite {
          private static final long serialVersionUID = 6154040491849669837L;
          private int key;
          public TestObjectSimple() {}          
          public TestObjectSimple(int key) {
               this.key = key;
          public int getKey() {
               return key;
          public void readExternal(DataInput in) throws IOException {
               this.key = in.readInt();
          public void writeExternal(DataOutput out) throws IOException {
               out.writeInt(key);
          public int hashCode() {
               return key;
          public boolean equals(Object o) {
               return o instanceof TestObjectSimple && key == ((TestObjectSimple) o).key;
}Here is my coherence config file
<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">
<cache-config>
     <caching-scheme-mapping>
          <cache-mapping>
               <cache-name>test-cache</cache-name>
               <scheme-name>default-distributed</scheme-name>
          </cache-mapping>
     </caching-scheme-mapping>
     <caching-schemes>          
          <distributed-scheme>
               <scheme-name>default-distributed</scheme-name>
               <backing-map-scheme>
                    <class-scheme>
                         <scheme-ref>default-backing-map</scheme-ref>
                    </class-scheme>
               </backing-map-scheme>
          </distributed-scheme>
          <class-scheme>
               <scheme-name>default-backing-map</scheme-name>
               <class-name>com.tangosol.util.SafeHashMap</class-name>
          </class-scheme>
     </caching-schemes>
</cache-config>Message was edited by:
user620763

Hi Robert,
Indeed, only the Filter.evaluate(Object obj)
method is invoked, but the object passed to it is a
MapEvent.<< In fact, I do not need to implement EntryFilter to
get a MapEvent, I could get the same result (in my
last message) by writting
cache.addMapListener(listener, filter,
true)instead of
cache.addMapListener(listener, new
MapEventFilter(filter) filter, true)
I believe, when the MapEventFilter delegates to your filter it always passes a value object to your filter (old or new), meaning a value will be deserialized.
If you instead used your own filter, you could avoid deserializing the value which usually is much larger, and go to only the key object. This would of course only be noticeable if you indeed used a much heavier cached value class.
The hashCode() and equals() does not matter on
the filter class<< I'm not so sure since I noticed that these methods
were implemented in the EqualsFilter class, that they
are called at runtime and that the performance
results are better when you add them
That interests me... In what circumstances did you see them invoked? On the storage node before sending an event, or upon registering a filtered listener?
If the second, then I guess the listeners are stored in a hash-based map of collections keyed by a filter, and indeed that might be relevant as in that case it will cause less passes on the filter for multiple listeners with an equalling filter.
DataOutput.writeInt(int) writes 4 bytes.
ExternalizableHelper.writeInt(DataOutput, int) writes
1-5 bytes (or 1-6?), with numbers with small absolute
values consuming less bytes.Similar differences exist
for the long type as well, but your stamp attribute
probably will be a large number...<< I tried it but in my use case, I got the same
results. I guess that it must be interesting, if I
serialiaze/deserialiaze many more objects.
Also, if Coherence serializes an
ExternalizableLite object, it writes out its
class-name (except if it is a Coherence XmlBean). If
you define your key as an XmlBean, and add your class
into the classname cache configuration in
ExternalizableHelper.xml, then instead of the
classname, only an int will be written. This way you
can spare a large percentage of bandwidth consumed by
transferring your key instance as it has only a small
number of attributes. For the value object, it might
or might not be so relevant, considering that it will
probably contain many more attributes. However, in
case of a lite event, the value is not transferred at
all.<< I tried it too and in my use case, I noticed that
we get objects nearly twice lighter than an
ExternalizableLite object but it's slower to get
them. But it is very intersting to keep in mind, if
we would like to reduce the network traffic.
Yes, these are minor differences at the moment.
As for the performance of XMLBean, it is a hack, but you might try overriding the readExternal/writeExternal method with your own usual ExternalizableLite implementation stuff. That way you get the advantages of the xmlbean classname cache, and avoid its reflection-based operation, at the cost of having to extend XMLBean.
Also, sooner or later the TCMP protocol and the distributed cache storages will also support using PortableObject as a transmission format, which enables using your own classname resolution and allow you to omit the classname from your objects. Unfortunately, I don't know when it will be implemented.
>
But finally, I guess that I found the best solution
for my specific use case which is to use a map
listener for a key which has no time stamp, but since
the time stamp is never null, I had just to check
properly the time stamp in the equals method.
I would still recommend to use a separate key class, use a custom filter which accesses only the key and not the value, and if possible register a lite listener instead of a heavy one. Try it with a much heavier cached value class where the differences are more pronounced.
Best regards,
Robert

Similar Messages

  • Difference between field staus group for posting key and GL account

    Hi all,
    can anyone tell me what is the difference of usage for field status group in posting key and GL account as i notice the fileds are the same. during data entry, system will check both field status or how?
    thanks.

    Hi
    Both are to control the field status of the line item.
    But, the FSG of the Posting Key and the GL FSG status should not clash like below.
    Take 'Assignment' field as example :
    Posting key FS - Suppress & GL FS - Required    - will give you error message at the time of posting
    Posting key FS - Required & GL FS - Suppress    - will give you error message at the time of posting
    Otherthan the above, all other combination works
    VVR

  • Logic Pro X performance difference between iMac i7 3.5ghz (non-Retina) and the i7 4.0 ghz (Retina)?

    Hello - on the verge of getting an iMac - it's for Logic Pro and some video editing with Premiere Pro (don't *really* need the Retina screen though) - i'd just like to get an idea of the performance difference (especially in Logic Pro X) between the quad i7 3.5ghz (non-retina) and the quad i7 4.0ghz (retina)?
    I use loads of plugin instruments (incl. big Kontakt libraries) and effects with just a few audio tracks (only ever record max a couple of audio tracks at a time)
    Thanks!

    I owned the imac and then returned it for the 2.6 MacBook Pro. After using both there is a noticeable speed difference between the 2. Not a huge difference but there is certainly more lag using the MacBook Pro. I found that lots of the lag went away when I attached to an external display though. At the end of the day I think you just need to decide if you need the portability or not. At first I thought I would keep the imac and then get a cheap MacBook Pro to use on the road but the thought of having multiple Lightroom catalogs sounds very annoying to me. Plus all the transferring back and forth. I will say also that I've been getting a lot of freezes in Photoshop on my mbp and weird errors like the sleep wake failure error some people are talking about when connected to a USB device. I didn't have any of these problems with the imac

  • Difference bet terms of Payment for Installment Plan and Installment Plan

    Dear All,
                       what is the functionality difference between  terms of Payment for Installment Plan and Installment Plan? please pour your thoughts.
    thanks in advance

    Hi Vinay,
    Terms of payment :-this is nothing but when vendor will pay the amount to party.
    Installment payment :-This is nothing but when vendor will pay no .of terms
    Funtionally we can use for both T.codes OBB8,OBB9
    May be you can understand what i told
    Regards
    Surya

  • Graph axes assignment: performance difference between ATTR_ACTIVE_XAXIS and ATTR_PLOT_XAXIS

    Hi,
    I am using a xy graph with both x axes and both y axes. There are two possibilities when adding a new plot:
    1) PlotXY and SetPlotAttribute ( , , , ATTR_PLOT_XAXIS, );
    2) SetCtrlAttribute ( , , ATTR_ACTIVE_XAXIS, ) and PlotXY
    I tend to prefer the second method because I would assume it to be slightly faster, but what do the experts say?
    Thanks!  
    Solved!
    Go to Solution.

    Hi Wolfgang,
    thank you for your interesting question.
    First of all I want to say, that generally spoken, using the command "SetCtrlAttribute"is the best way to handle with your elements. I would suggest using this command when ever it is possible.
    Now, to your question regarding the performance difference between "SetCtrlAttribute" and "SetPlotAttribute".
    I think the performance difference occures, because in the background of the "SetPlotAttribute" command, another function called "ProcessDrawEvents" is executed. This event refreshes your plot again and again in the function whereas in the "SetCtrlAttribute" the refreshing is done once after the function has been finished. This might be a possible reason.
    For example you have a progress bar which shows you the progress of installing a driver:
    "SetPlotAttribute" would show you the progress bar moving step by step until installing the driver is done.
    "SetCtrlAttribute" would just show you an empty bar at the start and a full progress bar when the installing process is done.
    I think it is like that but I can't tell you 100%, therefore I would need to ask our developers.
    If you want, i can forward the question to them, this might need some times. Also, then I would need to know which version of CVI you are using.
    Please let me now if you want me to forward your question.
    Have a nice day,
    Abduelkerim
    Sales
    NI Germany

  • Is there a performance difference between Automation Plug-ins and the scripting system?

    We currently have a tool that, through the scripting system, merges and hides layers by layer groups, exports them, and then moves to the next layer group.  There is some custom logic and channel merging that occasionally occurs in the merging of an individual layer group.  These operations are occuring through the scripting system (actually, through C# making direct function calls through Photoshop), and there are some images where these operations take ~30-40 minutes to complete on very large images.
    Is there a performance difference between doing the actions in this way as opposed to having these actions occur in an automation plug-in?
    Thanks,

    Thanks for the reply.    I ended up just benchmarking the current implementation that we are using (which goes through DOM from all indications, I wasn't the original author of the code) and found that accessing each layer was taking upwards of 300 ms.  I benchmarked iterating through the layers with PIUGetInfoByIndexIndex (in the Getter automation plug-in) and found that the first layer took ~300 ms, but the rest took ~1 ms.  With that information, I decided that it was worthwhile rewriting the functionality in an Automation plug-in.

  • Is there a big performance difference between HD's

    Hi All
      Is there a big performance difference between a 5400 & 7200 Rpm hardrive? I'm asking because I want to pick up a new Imac and am stuck between choosing the higher end 21.5" and lower end 27" and am trying to determine if the difference in price is worth the extra sheckles.

    I was wanting to know the same question (5400rpm vs. 7200rpm) in a 15" standard MBP, deciding on whether to get a 1TB serial ATA drive @ 5400rpm vs. a 750GB serial ATA drive @ 7200rpm. (Sorry to jump in)
    For the most part, I'm a general user - web surfing/research, Word processing/Excel/Powerpoint (pretty basic), etc. BUT I do like to take alot of photos and plan on doing some editing on them (nothing advanced) and creating slideshows with my photos/music (ex. my Europe trip of photos or a slideshow of the grandchildren as a gift to my parents, etc.)
    Some folks mention "video editing" in reference to gonig with the faster speed (7200rpm) if that's what you plan on doing. But, what do they exactly mean by "video editing"? Is slideshow creation the same? 
    Just wondering for my needs, whether I should go with the 750GB serial ATA drive @ 7200 rpm or the 1TB serial ATA drive @ 5400rpm ($50 more yet with more storage space which would help with my increasing photo files every year).
    Thanks

  • Performance difference between 3.33 6 core and dual 2.4 quad core.

    Sorry if this seems like a silly question to the technically savvy out there, but I am looking to replace my older Mac Pro. I was wondering what the performance difference between those two machines.
    I am a film editor and run Final Cut as well as Avid Media Composer, plus I do effects work in After Effects. Which of the two would be bettervforvtgatbwork? Media storage issues aside, would I get better performance for video work from the lower ghz dual core or the larger ghz 6 core?
    Both machines are essentially the same cost. So I wonder if there is a better choice amongbthe two, and why.
    I tried some research, but couldn't find a direct comparison or a general guide that seemed to correspond to those configuration differences.

    Hello nibford,
    For photo editing and digital imaging I would recommend the 6-Core 3.33GHz as the better buy, but then I do not use Final Cut, Avid Media Composer, or After Effects.
    The following article, from the legendary, and much quoted, Mac Performance Guide, gives an excellent insight into the new 2010 range of Mac Pros:
    http://macperformanceguide.com/Reviews-MacProWestmere.html
    Unfortunately, from your point of view, but not mine, the performance tests are predominantly photography related, but there is a comparison of Performance with Adobe After Effects on Page 28:
    http://macperformanceguide.com/Reviews-MacProWestmere-AfterEffects.html
    There is virtually no difference in performance between the 6-Core 3.33GHz and the 8-Core 2.4GHz in those tests.
    However, in the Performance with Handbrake Video Encoding on Page 29, the 6-Core 3.33GHz is only marginally slower than the 8-Core 2.93GHz, which would indicate that it would be substantially faster than the 8-Core 2.4GHz for this process:
    http://macperformanceguide.com/Reviews-MacProWestmere-Handbrake.html
    Again the 6-Core 3.33GHz outperforms the 8-Core 2.4GHz in the Cinebench tests on Page 30:
    http://macperformanceguide.com/Reviews-MacProWestmere-Cinebench.html
    The only advantage that the 8-Core 2.4GHz currently appears to have over the 6-Core 3.33GHz is that it has twice the number of memory slots, and can accommodate a maximum of 64GB RAM compared to the 32GB of the latter.
    In the future, applications might take full advantage of the 8-Core 2.4GHz's additional cores, but at the moment, in my opinion, the 6-Core's much faster processor tips the scales in its favour.
    Regards,
    Bill

  • Difference between Nokia Maps 3.06(688) & Map vers...

    Hello
    can anybody tell me whats the difference between "Nokia Maps 3.06(688) & Map version 0.2.4.4.110" & Ovi Maps 3.06(688),
    My software list is showing all this Map versions..!
    Solved!
    Go to Solution.

    0.2.44.110 is currently the latest map version available for use with v3.06 & later.
    Happy to have helped forum with a Support Ratio = 42.5

  • What is difference between  Service map iview and Workset Map iview

    Hi Experts,
                        Can anyone tell me the difference between  service map iView and Workset Map iView.
    When I am creating these iViews, its seams both are same. I canu2019t find difference still, can anyone help me out of this
    Thanks in Advance
    Janardhan

    Hi,
    Service Map Iview:The Service Map iView is an ERP-specific variant of the portal Workset Map iView. It serves as a central point of entry and guided access to the services of SAP service modules such as the Manager Self Service (MSS) module, or the Employee Self Service (ESS) module.
    Workset Map iview:A Workset Map is the equivalent of a site map, providing users with explicit information on the functionality that is available in a given workset. It is based on an iView, and serves as a central point of entry and guided access to the contents of a workset.
    if you want to more info pls go thr the below thread
    Workset Map iView
    i hope it will help you
    Thanks,
    Sreeni.

  • Difference between OC4J Standalone & IIS for BI Presentation services

    Hi experts,
    i had this question in my mind for last couple of weeks and did not get good answer by self study.
    my understanding with IIS & OC4J server is,
    1.if BI Presentation services is setup to IIS Webserver, It is also using OC4J as application server, because IIS is just an HTTP Server where the presentation services also need an Application server which is OC4J for OBIEE. Is this true.
    2.if the IIS Server is only HTTP Server, what is OC4J and standlone OC4J for OBIEE.
    i think the difference between IIS and OC4J is ( true or false)
    1. oc4j or oc4j Standalone is application server( contains OC4J Instance(J2EE) and HTTP Server)
    2. oc4j itself has a an HTTP server which is used if we dont plan to deploy IIS Webserver.
    3. IIS server is only HTTP which can be used in Production environments and will still use OC4j as application server.
    MY question is how to configure IIS server and configuration files and oc4j if we plan to deploy a environment like this.
    i followed OBIEE installtion documents and did not get a clear picture.
    there is something called PLUG-IN's (iis plugin and j2ee plugin ) which is used if we deploying on IIS and OAS(WEBLOGIC)
    this is is my understanding and Please Correct me if i am wrong
    thanks
    kumar

    Please follow this up on your copy of the thread difference between OC4J Standalone & IIS for BI Presentation services

  • Difference between Oracle Enterprise Pack for Eclipse 11gR1 & Eclipse IDE

    Dear ,
    what is the difference between Oracle Enterprise Pack for Eclipse 11gR1 (link http://blogs.oracle.com/devtools/2009/08/oracle_enterprise_pack_for_ecl_2.html)
    and Eclipse IDE for Java EE Develpr (link http://www.eclipse.org/downloads/ )

    Hello,
    Thanks for your question.
    The Web Service Design View was part of the Workshop product.
    For OEPE, which was a new product starting in the summer of 2008, we don't have a Web Service Design view.
    The Web Service Design View and Properties view for Workshop supported a lot of JAX-RPC features.
    Given enough interest we will certainly consider a Design View for OEPE that would support the JAX-WS web service platform.
    Regards,
    Andrew

  • Difference between Service Pack 5 for CR-XI (R2) and BOE-XI (R2)

    Difference between "Service Pack 5" for CR-XI (R2) and BOE-XI (R2)
    ========
    There are two different "Service Pack 5" files available for download...
    CRYSTAL REPORTS XI (R2) = crxir2win_sp5.exe
    BUSINESS OBJECTS ENTERPRISE XI (R2) = boxir2win_sp5.exe
    If we have workstations that have both CRYSTAL REPORTS XI and the BUSINESS OBJECTS ENTERPRISE "Client Tools" installed locally on them do I need to run both versions of the "Service Pack 5" - or will running just one (1) of them update all the installed desktop tools...?
    Thanks in advance!

    I think the CR patch has client issues only.
    The enterrpsie one is sufficient in most cases. Is that CR XIR1 or CR XIR2 client you have installed? Make sure it's CR XIR2 or you could run into issues
    Regards,
    Tim

  • What is the performance difference between an Oct 2011 i5 and a June 2012 i7 in performance if they both have 16GB RAM

    what is the performance difference between an Oct 2011 i5 and a June 2012 i7 in performance if they both have 16GB RAM

    At least. The Core i7 can drive up to 8 concurrent 64-bit threads, more than an i5. Plus the 2011 models used the Sandy Bridge family of Intel chips, whereas the 2012 are the latest Ivy Bridge, that uses a much faster, less latency architecture.

  • What's the difference between task list release for order and release for c

    What's the difference between task list release for order and release for cost?

    Pallavi,
    The status of the task list determines in which other application areas the respective task list may be used.
    Release for costing: means that the task list can be used to calculate costs in Transaction IA16 i.e. the costs for the task list operations would be calculated if released for costing status is set.
    Release for use in the order: Released for Order means that you can use the task list in an order i.e. you could include operations from a task list in an order.
    Regards,
    Usman

Maybe you are looking for

  • No child found in WebDynproContext with name mss~eepro

    Hi ALL, We have deployed MSS 1.41 on portal 7.01 system. BP_ERP5MSS  1.41 SP8 (1000.1.41.8.0.20100916080053) In Manager self Service Role in portal under Team there is Employee Information service which contain General Information page,which contains

  • Mobile View can't open page, because of "percentcomplete" deleted

    Hi Guys, I have created a Sharepoint page and have my Fields and deleted the default one. But now the page can't be open with the mobile device (mobile view), because the "percentcomplete" field is not avaliable. Is there any workaround, so I don't h

  • Css 'nth' problem

    hello i am having a little bit of a problem with css nth. this is my css code, table#companylist tr:nth-child(odd) { background-color:#999; table#companylist tr:nth-child(even) { background-color:#0F9; this works fine, but i have now wrapped the tabl

  • Message driven beans please help

    Can anyone please provide me with a simple message driven bean example.. The examples i have found are not working..i dont know anything abt Message driven beans...i just need a sample working code because i need to deploy it on JBOSS using Ant.

  • IPad disabled cant type in password

    My daughter disabled the iPad when trying to access it without knowing the password. Are there any options to reset without loosing existing data?