2 Replies Latest reply on Feb 2, 2011 11:10 AM by kconner

    I'm dumping jUDDI, have you done this?

    ryanhos

      I'm oh-so-tired of fighting jUDDI.  The duplicate EPRs and long query times are killing our system performance.  At one point, the system had 2400-ish registered EPRs, when it should have had 392 (8 homogenous ESB servers, 49 services each).  I could have spent countless hours analyzing why the duplicate EPRs were getting registered.  I suspect it has something to do with a failure to deregister when a cluster node comes down.  However,I just didn't have the time.  We still had a caching interceptor between the ESB and jUDDI, despite the fact that it was unconfigured several versions ago, because we just never saw the supposed query speed increase after the recent jUDDI version upgrade.  Even then, the cache entries expired and we were slowed by the DB performance.  Putting a "forever" timeout on the cache wouldn't work because we needed registry liveness for possible server shutdowns, crashes, and starts.  Also, a long cache timeout prevents rapid utilization of additional capacity because booted servers aren't recognized and used until one cache timeout interval (this can be mitigated by having your ESB-aware clients call an EJB deployed on the ESB server that in-turn calls ServiceInvoker for you.  Clustered EJB refs in JNDI are immediately updated when a new server comes online).

       

      I've written a registry interceptor that does not delegate to the underlying registry to answer any queries (i.e. getRegistry() is never called).  I used JBoss Cache to back it.  So far, it runs nicely in a development environment.  I'll soon know how it behaves under load on our 32-node test cluster.  JBoss Cache seemed like a natural choice because it facilitates the distribution of the EPR list, while having a low overhead for the millions of reads that will occur after the initial few writes.

       

      So, my question is: has anybody run into trouble subverting jUDDI?  I can't imagine how, since I'm providing all of the necessary features in the interceptor, but trouble always seems to come from the least expected source.  Or, perhaps you've managed to get the ESB and jUDDI to work in a large-ish environment and would like to educate me on where I went wrong.  This would be better in fact.  I like learning more than I like programming around problems.

       

      I think it would be useful to find out what percentage of the user community is actually using the features of jUDDI.  If it is found that nobody cares about discoverability or having an independent UDDI interface, it would be beneficial (and decrease deployment difficulty) if the distribution included an "org.jboss.internal.soa.esb.services.registry.JuddiFreeRegistryInterceptor" (Before you ask: mine would be of little use to you because it's built upon our abstraction of JBoss Cache, rather than the bare Cache API itself).

        • 1. I'm dumping jUDDI, have you done this?
          kcbabo

          Which version of JBoss ESB are you using?  The registry has been a source of performance problems and we have actively worked to improve in that area in the most recent productization cycle for the SOA platform.  Here's a quick list of fixed JIRAs in that area.  The explosion of registered EPRs you are seeing could definitely be due to nodes not exiting cleanly.  This issue can be mitigated by purging the registry database if you have scheduled downtime, but I'm guessing you already know that's an option.  This JIRA should help provide some relief as well.

          • 2. I'm dumping jUDDI, have you done this?
            kconner

            There is also this JIRA, SOA-2616, which is intended to provide an alternative registry implementation.  This is likely to be a clustered solution, similar to the one you have implemented.