WebLogic UDDI Client API实例进修(一)
当前位置:以往代写 > JAVA 教程 >WebLogic UDDI Client API实例进修(一)
2019-06-14

WebLogic UDDI Client API实例进修(一)

WebLogic UDDI Client API实例进修(一)

副标题#e#

在开拓UDDI的客户端措施时,我们一般思量的都是IBM提供的UDDI4J,但不知道各人留意到没有,在BEA的WebLogic中也提供了一个很是利便的UDDI Client API。只是它被包括在weblogic.jar文件中而没有单独宣布。WebLogic UDDI Client API的布局完全遵循了UDDI的体系布局,所以,通过对这套API类库的进修和实践,相信也有助于我们更好地领略UDDI的体系架构。

Inquiry和Publish的基本

对UDDI注册中心的操纵不过乎两大类:查询和宣布(删除)。所以WebLogic界说了二个类,别离对应查询与宣布的操纵:Inquiry类用于查询,Publish类用于宣布。这两个类位于weblogic.uddi.client.service包里,它们都担任于UDDIService类。在UDDIService类里界说了一个URL属性,生存着查询或宣布的URL地点。

Inquiry和Publish类通过父类UDDIService的setURL要领来配置它们的查询或宣布地点。

WebLogic UDDI Client API实例学习(一)

查询 Inquiry

向UDDI注册中心查询的方针有四类:贸易实体(BusinessEntity)、贸易处事(BusinessService)、绑定模板信息(BindingTemplate)和tModel。我们来看Inquiry类里的要领,不难发明,这四种方针的查询,正对应Inquiry类里的四个find要领:

WebLogic UDDI Client API实例学习(一)

它包罗两类要领find和get,个中find类要领用于查找与发明,而get类要领用于获取具体信息。

四个find要领对应四种查询,五个get要领对应UDDI界说的四个数据模子(贸易实体对应两个要领)。

一般查询的步调是先通过find要领获得数据模子的根基信息,以及它的一个独一标识Key。然后就可以按照这个Key挪用get要领获取这个模子的具体信息。

贸易实体(BusinessEntity)查询

通过Inquiry类界说的findBusiness要领团结getBusinessDetail要领可以在UDDI注册中心数据库中查询贸易实体的各类信息。

WebLogic UDDI Client API实例学习(一)


#p#副标题#e#

findBusiness要领要求一个FindBusiness工具作为参数,用来界说查询的条件。

构建FindBusiness工具并配置它的一些属性,好比setName(new Name(“IBM”),查询以IBM定名的贸易实体。

查询功效可以获得所有满意查询条件的BusinessInfo工具的Vector。

BusinessInfo界说了贸易实体的根基信息,较量重要的是Name和BusinessKey。

getBusinessDetail要领按照BusinessKey的值可以获得BusinessEntity工具的Vector。

在BusinessEntity工具中界说了多个贸易实体的具体信息,包罗Contact、Operator、DiscoveryURL、Description,以及Category和Identifier信息。

下面是一段简化的代码,演示了如何按照参数查询BusinessEntity的信息。

void echoBusiness(String parm){
try {
FindBusiness fb = new FindBusiness();
fb.setName(new Name(parm));
Vector vBusinessInfo =
finder.findBusiness(fb).getBusinessInfos().getBusinessInfoVector();
for(int i=0;i
BusinessInfo bInfo = (BusinessInfo)vBusinessInfo.elementAt(i);
log(bInfo.getName().getValue()+" ["+bInfo.getBusinessKey()+"]");
GetBusinessDetail gbt = new GetBusinessDetail();
gbt.addBusinessKey(bInfo.getBusinessKey());
Vector vBusinessEntity = finder.getBusinessDetail(gbt).getBusinessEntityVector();
for(int j=0;j
BusinessEntity bEntity = (BusinessEntity)vBusinessEntity.elementAt(j);
log( "authorizedname is "+bEntity.getAuthorizedName()
+" operator is "+bEntity.getOperator());
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}

BusinessService和BindingTemplate的查询

固然在Inquiry类中界说了findService要领,可是一般环境下可以按照查询到的BusinessInfo工具来进一步查询此BusinessEntity部属的BusinessService。留意到在BusinessInfo类中有一个要领getServiceInfos,它可以辅佐我们获得此贸易实体所提供的贸易处事。

WebLogic UDDI Client API实例学习(一)

从BusinessInfo工具可以获取此贸易实体下所有的ServiceInfo工具的荟萃。ServiceInfo工具界说了贸易处事的根基信息,较量重要的有Name和ServiceKey。

雷同地,用Inquiry类提供的getServiceDetail要领可以获得贸易处事的具体信息,即BusinessService类。它包罗贸易处事的多种有用信息,如:Description,Category等。

进一步,按照BusinessService类界说的getBindingTemplates要领,又可以取得此处事下的所有绑定模板信息。

WebLogic UDDI Client API实例学习(一)

#p#副标题#e#

在BindingTemplate工具中界说了绑定模板的一些重要属性,如:AccessPoint等。

再进一步,可以从BindingTemplate中提供的要领getTModelInstanceDetails中获取tModel Instance的具体信息,即InstanceDetails工具。包罗有OverviewDoc。

WebLogic UDDI Client API实例学习(一)

从OverviewDoc可以获得OverviewURL,这就是我们在宣布WebService时的WSDL的URL地点。

下面,笔者也给出一段代码演示了这个查询进程:

#p#分页标题#e#

void echoBusiness2(String parm){
  try {
   file://查询BusinessInfo
   FindBusiness fb = new FindBusiness();
   fb.setName(new Name(parm));
   Vector vBusinessInfo =finder.findBusiness(fb).getBusinessInfos().getBusinessInfoVector();
   for(int i=0;i
    BusinessInfo bInfo = (BusinessInfo)vBusinessInfo.elementAt(i);
    log(bInfo.getName().getValue()+" ["+bInfo.getBusinessKey()+"]");
    file://查询ServiceInfo
    Vector vServiceInfo = bInfo.getServiceInfos().getServiceInfoVector();
    for(int j=0;j
     ServiceInfo sInfo = (ServiceInfo)vServiceInfo.elementAt(j);
     log(sInfo.getName().getValue()+"["+sInfo.getServiceKey()+"]");
     file://查询BusinessService
     GetServiceDetail gsd = new GetServiceDetail();
     gsd.addServiceKey(sInfo.getServiceKey());
     Vector vBusinessService = finder.getServiceDetail(gsd).getBusinessServiceVector();
     for(int k=0;k
      BusinessService bService = (BusinessService)vBusinessService.elementAt(k);
      file://查询BindingTemplate
      Vector vBindingTemplate =
        bService.getBindingTemplates().getBindingTemplateVector();
      for(int p=0;p
       BindingTemplate bTemplate =
         (BindingTemplate)vBindingTemplate.elementAt(p);
       log(bTemplate.getAccessPoint().getValue());
       file://查询TModelInstanceInfo
       Vector vTModelInstanceInfo =
        bTemplate.getTModelInstanceDetails().getTModelInstanceInfoVector();
      for(int q=0;q
       TModelInstanceInfo tmInstanceInfo =
       (TModelInstanceInfo)vTModelInstanceInfo.elementAt(q);
       file://直接显示了InstanceDetails的OverviewDoc的信息
     log(tmInstanceInfo.getInstanceDetails().getOverviewDoc().getOverviewURL().getValue());
      }
     }
    }
   }
  }
}
catch (Exception ex) {
ex.printStackTrace();
}
}

这段代码较量长,嵌套许多,可是理清了头绪相信读者照旧可以或许看大白的。无非就是一层层查询:从BusinessInfo -> ServiceInfo -> BusinessService -> BindingTemplate -> TModelInstanceInfo -> InstanceDetail,最后显示它的OverviewDoc的URL值。

#p#副标题#e#

查询TModel

TModel的查询有两条路,一条是上面的从BusinessInfo开始的层级查询,最终获得TModel的InstaceDetail工具。另一条路则也是从Inquiry开始的,用find要领查询全部的tModel数据模子。

WebLogic UDDI Client API实例学习(一)

先从Inquiry工具的findTModel要领查询全部合乎条件的tModel工具,同样要求有输入参数FindTModel工具界说查询条件。

然后,同样用getTModelDetail要领取得tModel工具的具体信息,即TModel类。它包罗了tModel的主要属性,如Category,Identifier,Operator,OverviewDoc等等。

下面这段代码演示了这种查询进程:

void echoTModel(String param){
  try {
   FindTModel ftm = new FindTModel();
   ftm.setName(new Name(param));
   Vector vTModelInfo = finder.findTModel(ftm).getTModelInfos().getTModelInfoVector();
   for(int j=0;j
    TModelInfo tInfo = (TModelInfo)vTModelInfo.elementAt(j);
    log(tInfo.getName().getValue()+"["+tInfo.getTModelKey()+"]");
    GetTModelDetail gtd = new GetTModelDetail();
    gtd.addTModelKey(tInfo.getTModelKey());
    Vector vTModel = finder.getTModelDetail(gtd).getTModelVector();
    for(int i=0;i
     TModel tModel = (TModel)vTModel.elementAt(i);
     log(tModel.getName().getValue()+" "+tModel.getAuthorizedName());
    }
   }
  }
  catch (Exception ex) {
   ex.printStackTrace();
  }
}

    关键字:

在线提交作业