Uddi(universal description,Discovery and Integration) 是下一代基于WWW的企业实现。它允许在Web站点上放置可编程的元素,使得能进行基于Web的分布式计算和处理。UDDI商业注册中心的创建目的就是为促进企业的Web服务的发展及为企业发现适当的服务。这些服务又称为Web services,它是指由企业发布的完成其特别商务需求的在线应用服务,其它公司或应用软件能够通过Internet来访问并使用这项在线服务。
如一个公司有一套计算汇率的服务,那么它可以在任一UDDI注册中心注册,然后指出这项服务的具体内容,服务的收费,服务的限制等。其它的公司就可以在UDDI注册中心查到,并与之联系.而Internet是如此的广阔,客户也会如潮水一般。当然,安全,可靠性也是要值的考虑的。
目前UDDI注册中心有IBM、Microsoft等UDDI商业注册,它使用一个XML文档来描述企业及其提供的Web服务。从概念上来说,UDDI商业注册所提供的信息包含三个部分:“白页(White Page)” 包括了地址,联系方法,和已知的企业标识;“黄页(Yellow page)”包括了基于标准分类法的行业类别;“绿页(Green Page)”则包括了关于该企业所提供的Web服务的技术信息,其形式可能是一些指向文件或是URL的指针,而这些文件或URL是为服务发现机制服务的。所有的UDDI商业注册信息存储在UDDI商业注册中心中。
UDDI的设计目的是作为对现有的在线交易市场和搜索引擎的补充,为电子商务和服务发现机制提供标准的格式。UDDI 规范中没有直接涉及到具体的商业发现流程,例如找出一个以某一个给定的价格或在某一特定区域内的提供某种特定的产品或服务的企业。高级的发现特性需要买方和卖方更进一步的合作与设计。UDDI只是为定义这些上层应用提供了基础。
UDDI注册中心是利用了一套标准的API来实现客户的注册,查找等。以IBM为例,它提供了一个package(UDDI4j.jar)来用java实现这一点。任何公司如果也想自己成立一个注册中心(以java为基础)。就可以利用IBM的工具。
如search一个Web service,可以进行如下操作:
UDDIProxy proxy = new UDDIProxy();
proxy.setInquiryURL("http://localhost/services/uddi/inquiryapi");//设置的注册中心,也可为任何的UDDI注册中心。
BusinessList bl = proxy.find_business("b", null, 0); //查找service name=”b”
Vector businessInfoVector = bl.getBusinessInfos().getBusinessInfoVector();//如查到,则取得service 信息。
for (int i = 0; i businessInfoVector.size(); i++) {
BusinessInfo businessInfo = (BusinessInfo)businessInfoVector.elementAt(i);
// Print name for each business
System.out.println(businessInfo.getNameString());
}
如要注册一个Web Service,则可如下:
UDDIProxy proxy = new UDDIProxy();
proxy.setInquiryURL("http://www-3.ibm.com/services/uddi/inquiryapi");
proxy.setPublishURL("https://www-3.ibm.com/services/uddi/protect/publishapi");
AuthToken token = proxy.get_authToken("UserId",
"password" ); // 输入注册密码。
Vector entities = new Vector();
BusinessEntity be = new BusinessEntity("", "new Service");// 产生一个新的web service,name 是“new Service”
entities.addElement(be);
BusinessDetail bd = proxy.save_business(token.getAuthInfoString(),entities); // 保存web service。
如果注册成功,则也可以查找到。
总之,UDDI将会是下一代B2B基础,互联网将又会达到一高峰。