Version 2

    [See more SOA-P examples/tutorials here:  http://www.jboss.org/community/wiki/SOA-P]

     

    If you're familiar with the JBoss SOA Platform, you probably know that all ESB services are automatically registered in a UDDI registry.  By default, this is in the jUDDI registry that is delivered with SOA-P 4.3.

     

    Some have asked how they can see the contents of that registry via a third pary UDDI browser.  So, this tutorial will help show how you can do that.

     

    Prerequisites:

    Install and start SOA-P 4.3

     

    General Steps:

    1.)  Download and install UDDI Browser

    2.)  Configure UDDI Browser to access SOA-P 4.3 UDDI registry

    3.)  Query the registry

     

    Step #1:

     

    We need to download and install the UDDI Browser.  So, go here:  http://uddibrowser.org/  Click on the "UDDI Browser Binaries" link for UDDI Browser 0.2:  http://prdownloads.sourceforge.net/uddibrowser/ub-0.2-bin.zip?download

     

    Extract that zip file where you want UDDI Browser installed.  In the "bin" directory of that installer, there is a ub.bat.  I'm running linux, so had to make a linux version of that.  Here's what mine looks like:

     

    ------------------------------------------------------------------------

    #!/bin/sh

     

    export LIB_HOME=lib
    cd ..
    java -Xmx30m -cp $LIB_HOME/activation.jar:$LIB_HOME/BCEL.jar:$LIB_HOME/bsf.jar:$LIB_HOME/imap.jar:$LIB_HOME/java_cup.jar:$LIB_HOME/JLex.jar:$LIB_HOME/mailapi.jar:$LIB_HOME/pop3.jar:$LIB_HOME/regexp.jar:$LIB_HOME/runtime.jar:$LIB_HOME/servlet-2_3-fcs-classfiles.zip:$LIB_HOME/smtp.jar:$LIB_HOME/soap.jar:$LIB_HOME/uddi4j.jar:$LIB_HOME/xalan.jar:$LIB_HOME/xalanservlet.jar:$LIB_HOME/xercesImpl.jar:$LIB_HOME/xmisoap.jar:$LIB_HOME/xml-apis.jar:$LIB_HOME/xmlParserAPIs.jar:$LIB_HOME/xsltc.jar:$LIB_HOME/jsse.jar:$LIB_HOME/ub.jar:/me/dev/uddi4j/samples org.uddibrowser.UDDIBrowser
    cd bin

    ------------------------------------------------------------------------

     

    Now to start the UDDI Browser, we just run the ub.sh file.

     

    ub1.png

     

    It's worth keeping the console window handy as it will print out the UDDI inquiries and responses, which is interesting to look at.

     

    Step #2:

     

    Now we need to configure UDDI Browser to look at SOA-P 4.3's UDDI registry (jUDDI).  It's actually pretty easy.  Choose "Edit | UDDI Registries"

     

    ud2.png

     

    Click "Add" to add the SOA-P registry and enter the Inquiry/Publish URLs that you will find at http://localhost:8080/juddi

     

    ud3.png

     

    Click "OK"

     

    ud4.png

     

    Now select the new registry configuration and click "Connect".  The dialog should go away leaving the main UDDI Browser window.

     

    Step #3:

     

    Now, we need to do a query, so select "View | Basic Find".

     

    ud6.png

     

    Leave the name blank and click "Search"

     

    ud7.png

     

    Expand the search results.  You probably won't have all the services that I have deployed, but should have at least the DeadLetterService.  The little house icon is a binding and by clicking on it you can see the access point which in this case is "jms://localhost:1099/queue/DeadMessageQueue".  If you have multiple non-gateway listeners (or the same service has a non-gateway listener and is deployed on multiple ESB instances), you should see multiple bindings, which is how the ESB knows to do load balancing for clustered or federated ESB services.

     

    The next screen shot is what a JBR/HTTP gateway listener looks like.  I'm not actually sure why we should the JBR/HTTP gateway in the registry since service invoker is never going to route to a gateway, but it's there.

     

    ud8.png

     

    Couple things to note:

     

    1.)  InVM listeners do not appear to be stored in the registry.  This makes sense for the most part since you couldn't route to an InVM listener on another host anyhow, so it probably shouldn't be in the registry.

     

    2.)  JMS gateway listener endpoints do not appear to be stored in the registry.  Again, this makes sense because the ESB is not going to route to a "gateway" listener.

     

    3.)  The JBR/HTTP gateway listener endpoints do show up in the registry, not sure why this would be.  JBR/HTTP non-gateway listeners are not supported, so they don't show up in the registry.

     

    4.)  Haven't looked at the file and FTP listeners in the registry, will leave that as an exercise for the reader.

     

    5.)  You should only see endpoints if the service is deployed.  You can deploy/undeploy your own ESB services and click refresh on the UDDI Browser toolbar to see this.

     

    6.)  You may have noticed in the "View | Basic Find..." dialog that you can also query for the tmodels.  This is also left as an exercise for the reader.

     

    7.)  Lastly, jUDDI persists its state in a database.  By default it is in the hypersonic database at:  "<SOA-P_4.3_HOME>/jboss-as/server/<config>/data/hypersonic/juddiDB.*".  In a production environment, one should use an enterprise database rather than hypersonic.