This project has retired. For details please refer to its Attic page.
<link rel="stylesheet" type="text/css" href="css/jbossorg.css"/><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"/><link rel="home" href="index.html" title=""/><link rel="up" href="index.html" title=""/><link rel="prev" href="ch08.html" title=""/><link rel="next" href="ch10.html" title=""/><link rel="copyright" href="ln-d2e27.html" title=""/><meta xmlns:d="http://docbook.org/ns/docbook" xmlns:rf="java:org.jboss.highlight.XhtmlRendererFactory" http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head><body><p xmlns:d="http://docbook.org/ns/docbook" id="title"><a href="http://www.jboss.org" class="site_href"><strong>JBoss.org</strong></a><a href="http://docs.jboss.org/" class="doc_href"><strong>Community Documentation</strong></a></p><ul xmlns:d="http://docbook.org/ns/docbook" class="docnav"><li class="previous"><a accesskey="p" href="ch08.html"><strong/></a></li><li class="next"><a accesskey="n" href="ch10.html"><strong/></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="_extending_uddi"/></h2></div></div></div><div class="toc"><p><strong/></p><dl><dt><span class="section"><a href="ch09.html#_authentication_modules">9.1. Authentication modules</a></span></dt><dt><span class="section"><a href="ch09.html#_subscription_notification_handlers">9.2. Subscription Notification Handlers</a></span></dt><dt><span class="section"><a href="ch09.html#_keyedreference_value_set_validation_services">9.3. KeyedReference Value Set Validation Services</a></span></dt><dt><span class="section"><a href="ch09.html#_cryptographic_providers">9.4. Cryptographic Providers</a></span></dt><dt><span class="section"><a href="ch09.html#_juddi_client_transport">9.5. jUDDI Client Transport</a></span></dt></dl></div> <p>jUDDI has extensively uses the Interface/Factory pattern to enable configuration runtime options and to provide you, the developer easy insertion points to customize the behavior of jUDDI. The remaining sections of this chapter outline the different technology insertion points.</p> <div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="_authentication_modules"/></h2></div></div></div> <p>Authentication modules are used when the UDDI’s AuthToken is utilized on the Security web service. It’s function is to point to some kind of user credential store to validate users. See the User Guide for details on what’s available out of the box.</p> <p>All of the provided classes implement the interface .org.apache.juddi.v3.auth.Authenticator.. So, if you wanted something a bit more functional than what’s provided out of the box. you’ll need to implement your own Authenticator. To wire it in, edit the juddiv3.xml file, specifying your class name as the value to the property "juddi/auth/authenticator/class" and then add the class or jar containing your implementation to juddiv3.war/WEB-INF/classes or judiv3.war/WEB-INF/lib respectively.</p> </div> <div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="_subscription_notification_handlers"/></h2></div></div></div> <p>Subscription Notification Handlers are used to asynchronously notify users that something has changed in UDDI. In order to do this, a UDDI Subscription is created that references a specific Binding Template key which represents the service that will be called whens something changes. jUDDI comes with support for Email delivery and the UDDI Subscription Listener Web Service (HTTP) delivery. In addition, jUDDI comes with an example for publishing to an Apache Qpid AMQP pub/sub server, which can be used to further disseminate the change. The following is an exert from the jUDDI Blog posting on this.</p> <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"> Make a new Java library projects in your IDE of choice. Reference the juddi-core, and uddi-ws projects or JAR files or the Maven dependency equivalent </li><li class="listitem"> Create a class of your own within the following package name: org.apache.juddi.subscription.notify </li><li class="listitem"> The class name MUST follow this pattern: PROTOCOLNotifier Where PROTOCOL is the prefix of whatever URL you want users to be able to use. Here’s an example using Apache Qpid. Example URL: amqp://guest:guest@client1/development?brokerlist=<span class="emphasis"><em>tcp://localhost:5672</em></span> Class Name: AMQPNotifier. The Notification class basically takes the protocol of the Access Point’s value, splits it on the character ":" and then grabs the first token "amqp" and converts to upper case. Using this pattern you should be able to insert anything you want. </li><li class="listitem"> Our new shinny class, AMQPNotifier, must implement the interface org.apache.juddi.subscription.notify.Notifier. From there, all you need to do is to add in the jars necessary for your transport mechanism and wire in your own code. </li><li class="listitem"> Deployment is simple. Add your PROTOCOLNotifier jar and its dependencies to the juddiv3.war/WEB-INF/lib folder. </li></ol></div> <p>Note: be careful and watch for conflicting jar file versions. In general, usually moving up a version is ok, but moving down may cause the services to fail unexpectedly.</p> <p>To test, create a Service with the BindingTemplate’s Access Point’s value equal to whatever you need. Next, setup a subscription and reference the BindingTemplate key that represents your call back handler’s end point. Finally, change an item that is covered by the subscription’s filter and monitor the log files. Hopefully, you won’t see an unexpected errors.</p> </div> <div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="_keyedreference_value_set_validation_services"/></h2></div></div></div> <p>Since jUDDI 3.2.1, we now have support for the Value Set Validation Service. This allows you to define a validator that will check when a user saves a UDDI entity that references a given tModel that contains a keyed reference to uddi:uddi.org:identifier:validatedby (which points to the VSV service).</p> <p>To defined your own validator, use the following steps # Create you tModel with a named key # Implement the org.apache.juddi.validation.vsv.ValueSetValidator interface # Name your implementation class using the naming schema defined in the ConvertKeyToClass function of UDDIValueSetValidationImpl (first letter is upper, all else is lower. Numbers and letters only. Class must be in the package org.apache.juddi.validation.vsv # Update your saved tModel and add a keyed reference for uddi:uddi.org:identifier:validatedby using the value of uddi:juddi.apache.org:servicebindings-valueset-cp # Get your class in the class path of jUDDI and give it a shot</p> </div> <div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="_cryptographic_providers"/></h2></div></div></div> <p>jUDDI provides cryptographic functions via (Java) juddi-client.jar/org.apache.juddi.v3.client.cryptor and implement the Cryptor interface which provides two simple functions, encrypt and decrypt. (Note: .NET has similar functionality).</p> </div> <div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="_juddi_client_transport"/></h2></div></div></div> <p>The juddi-client’s Transport class is an abstract class that you can you alter the transport mechanism used by jUDDI’s client APIs. Included is what would be used in most cases, such as JAXWS, RMI, and InVM (Embedded mode). This can be extended to use whatever you may need.</p> </div> </div><ul xmlns:d="http://docbook.org/ns/docbook" class="docnav"><li class="previous"><a accesskey="p" href="ch08.html"><strong/></a></li><li class="up"><a accesskey="u" href="#"><strong/></a></li><li class="home"><a accesskey="h" href="index.html"><strong/></a></li><li class="next"><a accesskey="n" href="ch10.html"><strong/></a></li></ul></body></html>