AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JAVA编程

WebLogic UDDI Client API实例学习(一)

51自学网 2015-09-03 http://www.51zixue.net

 

  BusinessService和BindingTemplate的查询

  虽然在Inquiry类中定义了findService方法,但是一般情况下可以根据查询到的BusinessInfo对象来进一步查询此BusinessEntity下属的BusinessService。注意到在BusinessInfo类中有一个方法getServiceInfos,它可以帮助我们得到此商业实体所提供的商业服务。


  从BusinessInfo对象可以获取此商业实体下所有的ServiceInfo对象的集合。ServiceInfo对象定义了商业服务的基本信息,比较重要的有Name和ServiceKey。

  类似地,用Inquiry类提供的getServiceDetail方法可以得到商业服务的详细信息,即BusinessService类。它包括商业服务的多种有用信息,如:Description,Category等。

  进一步,根据BusinessService类定义的getBindingTemplates方法,又可以取得此服务下的所有绑定模板信息。


  在BindingTemplate对象中定义了绑定模板的一些重要属性,如:AccessPoint等。

  再进一步,可以从BindingTemplate中提供的方法getTModelInstanceDetails中获取tModel Instance的详细信息,即InstanceDetails对象。包括有OverviewDoc。


  从OverviewDoc可以得到OverviewURL,这就是我们在发布WebService时的WSDL的URL地址。


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

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值。

  查询TModel

  TModel的查询有两条路,一条是上面的从BusinessInfo开始的层级查询,最终得到TModel的InstaceDetail对象。另一条路则也是从Inquiry开始的,用find方法查询全部的tModel数据模型。


  先从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();

 }

}

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 

上一篇:WebLogic UDDI Client API 实例学习(二)  下一篇:Vector在Java编程中的应用