| This example is a command line demonstration of how to interact with JUDDI using the juddi-client. |
| In step 4 is demonstrates how to use the ServiceLocator. |
| |
| 1. Start the jUDDI-server (juddi-tomcat or juddi-bundle) |
| |
| 2. Check the settings of the META-INF/wsdl2uddi-uddi.xml, to make sure the serverName and serverPort are set correctly. |
| |
| 3. Create Joe Publisher and his keyGenerator and then register the services in wsdl/helloworld.wsdl to jUDDI. |
| it creates a businessEntity with businessKey 'uddi:uddi.joepublisher.com:business_wsdl-business' using |
| the org.apache.juddi.example.wsdl2uddi.Publish class, which is called using |
| |
| mvn -Ppublish test |
| |
| You should see the following output being written to the console: |
| |
| 1. Bring up the hello world endpoint at port 18080 |
| 2. Programmatically publish the endpoint to UDDI |
| Dec 26, 2013 5:53:26 PM org.apache.juddi.v3.client.config.UDDIClient <init> |
| INFO: jUDDI Client version - 3.2.0.SNAPSHOT |
| Dec 26, 2013 5:53:26 PM org.apache.juddi.v3.client.config.ClientConfig loadConfiguration |
| INFO: Reading UDDI Client properties file file:///Users/kstam/osc/apache/dev/juddi-patch/juddi-examples/wsdl2uddi/target/classes/META-INF/wsdl2uddi-uddi.xml |
| setting up the publisher |
| root AUTHTOKEN = authtoken:f8d3b465-dca2-4780-ba6a-4ff397784dde |
| Dec 26, 2013 5:53:27 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering tModel with key uddi:uddi.joepublisher.com:keygenerator |
| Dec 26, 2013 5:53:27 PM org.apache.juddi.v3.client.config.UDDIClerk getAuthToken |
| WARNING: Hey, I couldn't help but notice that your credentials aren't encrypted. Please consider doing so |
| publish the business |
| Dec 26, 2013 5:53:27 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering business WSDL-Business with key uddi:uddi.joepublisher.com:business_WSDL-Business |
| and the wsdl |
| Retrieving document at 'file:/Users/kstam/osc/apache/dev/juddi-patch/juddi-examples/wsdl2uddi/target/classes/wsdl/helloworld.wsdl'. |
| Dec 26, 2013 5:53:28 PM org.uddi.JAXBContextUtil getContext |
| INFO: Creating JAXB Context for org.uddi.api_v3 |
| Dec 26, 2013 5:53:28 PM org.apache.juddi.v3.client.config.UDDIClerk checkForErrorInDispositionReport |
| INFO: entityKey uddi:uddi.joepublisher.com:service_helloworld was not found in the registry |
| Dec 26, 2013 5:53:28 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering tModel with key uddi:uddi.joepublisher.com:HelloWorld |
| Dec 26, 2013 5:53:28 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering tModel with key uddi:uddi.joepublisher.com:HelloWorldSoapBinding |
| Dec 26, 2013 5:53:28 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering service HelloWorld with key uddi:uddi.joepublisher.com:service_helloworld |
| Dec 26, 2013 5:53:28 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering bindingTemplate with key uddi:uddi.joepublisher.com:binding_localhost_helloworld_helloworldimplport_18080 |
| waiting for calls into the HelloWorldImpl... |
| |
| This brought up the HelloWorld webservice, on http://localhost:18080/services/helloworld |
| You can check that it is up by navigating to this url in your browser. |
| |
| Also you can check created UDDI data structures by browsing to this business using the juddi-gui. |
| |
| 4. Lets check that we can find this business in the registry by running from Queries |
| using the org.apache.juddi.example.wsdl2uddi.Find class which is called using: |
| |
| mvn -Pfind test |
| |
| Should result in the following output: |
| |
| Dec 26, 2013 5:54:51 PM org.apache.juddi.v3.client.config.UDDIClient <init> |
| INFO: jUDDI Client version - 3.2.0.SNAPSHOT |
| Dec 26, 2013 5:54:52 PM org.apache.juddi.v3.client.config.ClientConfig loadConfiguration |
| INFO: Reading UDDI Client properties file file:///Users/kstam/osc/apache/dev/juddi-patch/juddi-examples/wsdl2uddi/target/classes/META-INF/wsdl2uddi-uddi.xml |
| Do a find business using the businessKey uddi:uddi.joepublisher.com:business_wsdl-business |
| Found business with name WSDL-Business |
| Number of services: 1 |
| Service Name = 'HelloWorld' |
| Service Key = 'uddi:uddi.joepublisher.com:service_helloworld' |
| Service Description = 'The Hello World Service registered using WSDL2UDDI' |
| BindingTemplates: 1 |
| --BindingTemplate 0: |
| bindingKey = uddi:uddi.joepublisher.com:binding_localhost_helloworld_helloworldimplport_18080 |
| accessPoint useType = endPoint |
| accessPoint value = http://localhost:18080/services/helloworld |
| description = The Hello World Binding registered using WSDL2UDDI |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| |
| |
| So we got one Service, which one binding. Note that the descriptions were provided in the wsdl file |
| using <wsdl:documentation> elements. |
| |
| 4. For extra credit we can use the ServiceLocator to obtain an accessPoint for service |
| 'uddi:uddi.joepublisher.com:service_helloworld'. And we then use this information to call |
| this WebService Endpoint. In this example we use the code in the |
| org.apache.juddi.example.wsdl2uddi.Call class, which is called using |
| |
| mvn -Pcall test |
| |
| You should see the following output: |
| |
| Dec 26, 2013 5:59:51 PM org.apache.juddi.v3.client.config.UDDIClient <init> |
| INFO: jUDDI Client version - 3.2.0.SNAPSHOT |
| Dec 26, 2013 5:59:51 PM org.apache.juddi.v3.client.config.ClientConfig loadConfiguration |
| INFO: Reading UDDI Client properties file file:///Users/kstam/osc/apache/dev/juddi-patch/juddi-examples/wsdl2uddi/target/classes/META-INF/wsdl2uddi-uddi.xml |
| The clientside of a runtime lookup usually knows the serviceKey. |
| To get updated binding information you should use the ServiceLocator with a live cache. |
| Created Cache in 1 [milliseconds] |
| Now adding a listener to the cache... |
| Dec 26, 2013 5:59:51 PM org.apache.juddi.v3.client.mapping.ServiceLocator initCache |
| INFO: Creating a UDDICLientCache |
| Retrieving document at 'jar:file:/Users/kstam/.m2/repository/org/apache/juddi/juddi-client/3.2.0-SNAPSHOT/juddi-client-3.2.0-SNAPSHOT.jar!/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListener.wsdl'. |
| Dec 26, 2013 5:59:51 PM org.apache.juddi.v3.client.config.UDDIClerk getAuthToken |
| WARNING: Hey, I couldn't help but notice that your credentials aren't encrypted. Please consider doing so |
| Dec 26, 2013 5:59:52 PM org.uddi.JAXBContextUtil getContext |
| INFO: Creating JAXB Context for org.uddi.api_v3 |
| Dec 26, 2013 5:59:52 PM org.apache.juddi.v3.client.config.UDDIClerk checkForErrorInDispositionReport |
| INFO: entityKey uddi:uddi.joepublisher.com:service_uddiclientsubscriptionlistenerservice was not found in the registry |
| Dec 26, 2013 5:59:52 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering tModel with key uddi:uddi.joepublisher.com:UDDI_SubscriptionListener_PortType |
| Dec 26, 2013 5:59:52 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering tModel with key uddi:uddi.joepublisher.com:UDDI_SubscriptionListener_PortTypeBinding |
| Dec 26, 2013 5:59:52 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering service UDDIClientSubscriptionListenerService with key uddi:uddi.joepublisher.com:service_uddiclientsubscriptionlistenerservice |
| Dec 26, 2013 5:59:52 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering bindingTemplate with key uddi:uddi.joepublisher.com:binding_localhost_uddiclientsubscriptionlistenerservice_uddiclientsubscriptionlistenerimplport_18079 |
| Dec 26, 2013 5:59:52 PM org.apache.juddi.v3.client.mapping.UDDIServiceCache publishAndRegisterHttpCallbackEndpoint |
| INFO: Bringing up a UDDIClientSubscriptionListenerImpl on Endpoint http://localhost:18079/subscriptionlistener_uddi_client |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.mapping.UDDIServiceCache publishAndRegisterHttpCallbackEndpoint |
| INFO: Registering a CallbackSubscription to this endpoint using bindingKey uddi:uddi.joepublisher.com:binding_localhost_uddiclientsubscriptionlistenerservice_uddiclientsubscriptionlistenerimplport_18079 |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.config.UDDIClerk register |
| INFO: Registering subscription with key uddi:uddi.joepublisher.com:service_cache_localhost |
| Add Listener to Cache in 1847 [milliseconds] |
| 1. UDDI Lookup - Elapsed time: 18[milliseconds] Endpoint=http://localhost:18080/services/helloworld |
| 2. Cache Lookup - Elapsed time: 0[milliseconds] Endpoint=http://localhost:18080/services/helloworld |
| *************** Service reply: Hello Judy |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.config.UDDIClerk unRegisterSubscription |
| INFO: UnRegistering subscription with key uddi:uddi.joepublisher.com:service_cache_localhost |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.config.UDDIClerk unRegisterBinding |
| INFO: UnRegistering binding key uddi:uddi.joepublisher.com:binding_localhost_uddiclientsubscriptionlistenerservice_uddiclientsubscriptionlistenerimplport_18079 |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.config.UDDIClerk unRegisterService |
| INFO: UnRegistering the service uddi:uddi.joepublisher.com:service_uddiclientsubscriptionlistenerservice |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.config.UDDIClerk unRegisterTModel |
| INFO: UnRegistering tModel key uddi:uddi.joepublisher.com:uddi_subscriptionlistener_porttypebinding |
| Dec 26, 2013 5:59:53 PM org.apache.juddi.v3.client.config.UDDIClerk unRegisterTModel |
| INFO: UnRegistering tModel key uddi:uddi.joepublisher.com:uddi_subscriptionlistener_porttype |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| |
| This shows that the UDDI lookup took 18 milliseconds; while Cache lookup was much faster. Note that while |
| it is check to obtain a regular Cache it is more expensive to obtain a LiveCache. A LiveCache brings up |
| a WS Endpoint, and registers this Endpoint with the UDDI Server. If there is an change to any of the UDDI |
| services it calls back into this Endpoint which invalidates the cache. |
| |
| 5. Finally to remove all data structures call |
| |
| mvn -Pdelete test |
| |
| This cleans up the business and the wsdl2uddi data structures. |
| |
| 6. You can now <cntr>-c out of the mvn -Ppublish test, to take down the HelloWorld Service. |
| |