1 /* 2 * Copyright 2001-2010 The Apache Software Foundation. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17 package org.apache.juddi.example.publish; 18 19 import org.uddi.api_v3.*; 20 import org.apache.juddi.api_v3.*; 21 import org.apache.juddi.v3.client.config.UDDIClient; 22 import org.apache.juddi.v3.client.transport.Transport; 23 import org.uddi.v3_service.UDDISecurityPortType; 24 import org.uddi.v3_service.UDDIPublicationPortType; 25 26 /** 27 * This shows you to interact with a UDDI server by publishing a Business, 28 * Service and Binding Template. It uses some fairly generic code that should be 29 * mostly portable to any other UDDI client library and is therefore consider 30 * "portable". URLs are set in uddi.xml 31 * 32 */ 33 public class SimplePublishPortable { 34 35 private static UDDISecurityPortType security = null; 36 private static UDDIPublicationPortType publish = null; 37 38 public SimplePublishPortable() { 39 try { 40 // create a client and read the config in the archive; 41 // you can use your config file name 42 UDDIClient uddiClient = new UDDIClient("META-INF/uddi.xml"); 43 // a UddiClient can be a client to multiple UDDI nodes, so 44 // supply the nodeName (defined in your uddi.xml. 45 // The transport can be WS, inVM etc which is defined in the uddi.xml 46 Transport transport = uddiClient.getTransport("default"); 47 // Now you create a reference to the UDDI API 48 security = transport.getUDDISecurityService(); 49 publish = transport.getUDDIPublishService(); 50 } catch (Exception e) { 51 e.printStackTrace(); 52 } 53 } 54 55 /** 56 * This function shows you how to publish to UDDI using a fairly generic 57 * mechanism that should be portable (meaning use any UDDI v3 library 58 * with this code) 59 */ 60 public void publish() { 61 try { 62 63 // Login aka retrieve its authentication token 64 GetAuthToken getAuthTokenMyPub = new GetAuthToken(); 65 getAuthTokenMyPub.setUserID("bob"); //your username 66 getAuthTokenMyPub.setCred("bob"); //your password 67 AuthToken myPubAuthToken = security.getAuthToken(getAuthTokenMyPub); 68 System.out.println(getAuthTokenMyPub.getUserID() + "'s AUTHTOKEN = " + "******* never log auth tokens!"); 69 70 // Creating the parent business entity that will contain our service. 71 BusinessEntity myBusEntity = new BusinessEntity(); 72 Name myBusName = new Name(); 73 myBusName.setValue("My Business"); 74 myBusEntity.getName().add(myBusName); 75 76 // Adding the business entity to the "save" structure, using our publisher's authentication info and saving away. 77 SaveBusiness sb = new SaveBusiness(); 78 sb.getBusinessEntity().add(myBusEntity); 79 sb.setAuthInfo(myPubAuthToken.getAuthInfo()); 80 BusinessDetail bd = publish.saveBusiness(sb); 81 String myBusKey = bd.getBusinessEntity().get(0).getBusinessKey(); 82 System.out.println("myBusiness key: " + myBusKey); 83 84 // Creating a service to save. Only adding the minimum data: the parent business key retrieved from saving the business 85 // above and a single name. 86 BusinessService myService = new BusinessService(); 87 myService.setBusinessKey(myBusKey); 88 Name myServName = new Name(); 89 myServName.setValue("My Service"); 90 myService.getName().add(myServName); 91 92 // Add binding templates, etc... 93 BindingTemplate myBindingTemplate = new BindingTemplate(); 94 AccessPoint accessPoint = new AccessPoint(); 95 accessPoint.setUseType(AccessPointType.WSDL_DEPLOYMENT.toString()); 96 accessPoint.setValue("http://example.org/services/myservice?wsdl"); 97 myBindingTemplate.setAccessPoint(accessPoint); 98 BindingTemplates myBindingTemplates = new BindingTemplates(); 99 //optional but recommended step, this annotations our binding with all the standard SOAP tModel instance infos 100 myBindingTemplate = UDDIClient.addSOAPtModels(myBindingTemplate); 101 myBindingTemplates.getBindingTemplate().add(myBindingTemplate); 102 103 myService.setBindingTemplates(myBindingTemplates); 104 105 // Adding the service to the "save" structure, using our publisher's authentication info and saving away. 106 SaveService ss = new SaveService(); 107 ss.getBusinessService().add(myService); 108 ss.setAuthInfo(myPubAuthToken.getAuthInfo()); 109 ServiceDetail sd = publish.saveService(ss); 110 String myServKey = sd.getBusinessService().get(0).getServiceKey(); 111 System.out.println("myService key: " + myServKey); 112 113 security.discardAuthToken(new DiscardAuthToken(myPubAuthToken.getAuthInfo())); 114 // Now you have published a business and service via 115 // the jUDDI API! 116 System.out.println("Success!"); 117 118 } catch (Exception e) { 119 e.printStackTrace(); 120 } 121 } 122 123 public static void main(String args[]) { 124 SimplePublishPortable sp = new SimplePublishPortable(); 125 sp.publish(); 126 } 127 }