[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.
Install and start SOA-P 4.3
1.) Download and install UDDI Browser
2.) Configure UDDI Browser to access SOA-P 4.3 UDDI registry
3.) Query the registry
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:
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
Now to start the UDDI Browser, we just run the ub.sh file.
It's worth keeping the console window handy as it will print out the UDDI inquiries and responses, which is interesting to look at.
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"
Click "Add" to add the SOA-P registry and enter the Inquiry/Publish URLs that you will find at http://localhost:8080/juddi
Now select the new registry configuration and click "Connect". The dialog should go away leaving the main UDDI Browser window.
Now, we need to do a query, so select "View | Basic Find".
Leave the name blank and click "Search"
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.
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.