UDDI is one of the core Web Service standard. It provides access to Web Service Description anguage which provides binding information and message formats required to interact with the web services listed in its directory. Enterprises that seek to optimize software or service reuse subscribe to some form of service-oriented architecture (SOA), server programs or database software licensed by some of the professed founders of the UDDI.org and OASIS.
In this article we will see some of the existing UDDI clients and UDDI servers. Then we will move a head with introduction about juddi also called as judy. JUDDI’s features, Configuration.
UDDI clients
- uddi4j: UDDI for Java
- UDDI.NET SDK: UDDI for Microsoft .NET
- uddi4r: UDDI for Ruby
- uddi4py: UDDI for Python
- UDDI::Lite: UDDI for Perl
UDDI servers
- Apache jUDDI: Open-Source UDDI Server
- BEA Aqualogic Service Registry
- Novell nSure UDDI Server: Open-Source UDDI Server
- Microsoft Enterprise UDDI Server: Part of Windows 2003 Server
- Systinet Registry
- Oracle Service Registry
- Software AG CentraSite
- SAP Enterprise SOA PI7.1
What is JUDDI ?
jUDDI is an open source Java implementation of the Universal Description, Discovery, and Integration (UDDI) specification for Web Services. jUDDI is a pure java web application which can be deployed on any application server or a servlet engine supporting version 2.1 and above. UDDI needs to persist the registry data it manages. jUDDI uses an external database for persistence. Some of the relational database management systems like MySQL, HSQL, Oracle or DB2.
jUDDI Features
- jUDDI is an open source Java implementation
- Plateform Independent
- Supports JDK version 1.3.1 and above
- UDDI version 2.0 compliant implementation
- Use with external database for persistence (RDBMS like MySQL, HSQL, Oracle or DB2)
- jUDDI is a pure java web application which can be deployed on any application server or a servlet engine version 2.1 and above (Jakarta Tomcat, JOnAS, WebSphere, WebLogic, Borland Enterprise Server, JRun, etc.)
- jUDDI easily integrates with existing authentication systems
- jUDDI registry supports a clustered deployment configuration
UDDI Specifications
- UDDI.org(http://www.uddi.org/)
- UDDI Version 1.0 Specification(http://www.oasis-open.org/committees/uddi-spec/doc/contribs.htm#uddiv1)
- UDDI Version 2.0 Specification(http://www.oasis-open.org/committees/uddi-spec/doc/contribs.htm#uddiv2)
- UDDI Version 3.0 Specification(http://www.oasis-open.org/committees/uddi-spec/doc/contribs.htm#uddiv3)
Prerequisite
This document assumes the reader of this document already has some femiliarity about java web applications, and web application deployment. Also assumes that the user has some knowledge about database and datastore.
Software used
- jUDDI version 0.9rc4 (Release Candidate #4 for Version 0.9.)
- MySQL for Persistence
- JBOSS application server version 4.0.x
- JDK 1.5.x
jUDDI Datastore
jUDDI is pre-configured to use JDBC and any one of the several DBMS listed below. Setting up of the database is very easy. Once you download the package jUDDI version 0.9, Unzip it and inside the package you can find a folder by name “sql”. Inside that folder you can find support for the following database.
- MySQL
- HSQLdb (HypersonicSQL)
- PostreSQL
- Oracle
- Sybase
- DB2
- TotalXML
- JDataStore
To complete the DataStore set up you’ll need to configure a JNDI Datasource with a name of ‘jdbc/juddiDB’ in the application server or servlet engine that you’re deploying to. we will see how to set this up with JBOSS application server later in this document.
System / Sub-system Architecture
The above diagram shows the logical architecture of the components. Any
operating system (here we are using windows xp)along with Jboss application server forms the foundation. jUDDI web application is deployed in jBoss application server. Web Services are registered in the jUDDI web application.
Configuring jUDDI with JBOSS and MySQL
UDDI needs persistent storage as mentioned in above section. Here we use MySQL for persistents.
Step 1:
Download MySQL-5.0.26 and install MySQL. Set the root password to password.
Step 2:
Install Jboss application server. Jboss version 4.0.5 is used for investigation.
Step 3:
MySQL driver installation: Download the corresponding drivers from the Internet and place it in <jboss_home>\server\default\lib folder. Driver used here is mysql-connector-java-5.0.4-bin.jar.
</jboss_home>
Step 4:
jUDDI Deployment:
- Download JUDDI version 0.9rc4
- Unzip the file to some folder, say JUDY. There will be a folder inside the unzipped package named juddi. This folder has the folder structure as of web applications. Copy the folder and place it inside
<JBOSS_HOME>\server\default\deploy. Rename the folder to
juddi.war. - Inside JUDY where we have unzipped juddi download there is a folder called “sql”. There we can find the sql scripts for many databases. In that we do have sql script for creating juddi schema for MySQL. Run that script in installed MySQL and create the database and the tables.
- Create juddi.xml: Create a file named juddi.xml in the folder <JBOSS_HOME>\server\default\conf and with in that copy and past the following code. The password in the following code should be set to the MySQL database password.
<? Xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.0//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-web-jar.dtd"> <Context path="/juddi" docBase="juddi" debug="5" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_juddiDB_log" suffix=".txt" timestamp="true"/> <Resource name="jdbc/juddiDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="juddi" password="password" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc: mysql://localhost:3306/juddi?autoReconnect=true" /> </Context>
- Edit juddi.properties file located at <JBOSS_HOME>\server\default\deploy\juddi.war\web-inf\juddi.properties. Match the email address used with in the insert-publisher.sql. This should match the domine name used for the email address with in JUDDI’s insert-publisher.sql file
juddi.operatorEmailAddress = yourEmail@aDomain.com
- Create juddi-da.xml and place it in <JBOSS_HOME>\server\default\deploy. Copy the following code to it and save the file.
<?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>juddiDB</jndi-name> <connection-url>jdbc:mysql://localhost:3306/juddi</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>password</password> <min-pool-size>1</min-pool-size> <max-pool-size>50</max-pool-size> </local-tx-datasource> </datasources>
- Edit juddi-user.xml file located at <JBOSS_HOME>\server\default\deploy\juddi.war\web-inf\juddi-user.xml and change the password for the user juddi to MySQL root password (i.e., password)
- Run Jboss. Enter the URL http://<hostname>:8080/juddi/. We will get the juddi home page.
Click on validate link. If there are any errors found in the validation page, Please follow all the steps above and validate again. If there are no errors then it means juddi is configured successfully.
Once jUDDI is configured, its time to publish Web Service Description Language(WSDL). To publish there are some ways to do so. One of the way is to use the jUDDI API’s and write a CLI application to register the service in the
registory. We also have some GUI UDDI tools through which we can register the services. These informations are not in the scope of this document.
References
Conclusion
Though this document stops with jUDDI configuration, there is a lot to learn and not covered under this document. we will conclude this document saying UDDI registry will help the feature B2B Internet web applications to a great extent to solve most of their current problems.