从UDDI注册中心查询服务

        查询服务程序的实现过程:创建Inquiry对象,并设置查询地址;声明FindBusiness对象,并设置查询服务名和相关属性;获得BusinessList对象,然后层层向下查询:BusinessList->BusinessInfo->ServiceInfo->BusinessService->BindingTemplate,最后得到AccessPoint对象,调用getText()方法,就可获得该服务的入口地。得到服务的WSDL之后,可利用WSIF调用这个服务的方法。见如下程序的方法:
public void getServicesURL(){
try{
            Inquiry inq=new Inquiry();
            inq.setURL(" http://huijddn.com/services/uddi/inquiryapi");
            FindQualifiers fqs = new FindQualifiers();
            FindBusiness fb = new FindBusiness();
            fb.setFindQualifiers(fqs);
            fb.setName(new Name("MagazineServices"));//查找服务名MagazineServices的服务
            BusinessList rBusinessList = inq.findBusiness(fb);           
            BusinessInfos rBusinessInfos = rBusinessList.getBusinessInfos();
            Vector rBusinessInfoVector = rBusinessInfos.getBusinessInfoVector();
            BusinessInfo rBusinessInfo;
            for (int y =0; y < rBusinessInfoVector.size(); y++)
            {
                rBusinessInfo = (BusinessInfo)rBusinessInfoVector.elementAt(y);
                System.out.println("*********BUSINESS INFO********");
                System.out.println("Attribute BusinessKey: "+rBusinessInfo.getBusinessKey());
                Name rName = rBusinessInfo.getName();
                System.out.println("Name : "+rName.getValue());
                Vector rDesVector = rBusinessInfo.getDescriptionVector();
                Description rDes=null;
                printDescriptionVector(rDesVector);
                ServiceInfos rSerInfos = rBusinessInfo.getServiceInfos();
                Vector rServiceInfoVector = rSerInfos.getServiceInfoVector();
                ServiceInfo rServiceInfo;
                for (int x =0; x<rServiceInfoVector.size();x++)
                {
                    System.out.println("*********Service Info********");
                    rServiceInfo = (ServiceInfo)rServiceInfoVector.elementAt(x);
                    System.out.println("Service Info Name: "+rServiceInfo.getName().getValue());
                    System.out.println("ServiceKey : "+rServiceInfo.getServiceKey());
                    System.out.println("BusinessKey : "+rServiceInfo.getBusinessKey());
                    String magazineServer=rServiceInfo.getServiceKey();
                    ServiceDetail rServiceDetail = inq.getServiceDetail(gsd);
                    Vector rBusinessServiceVector = rServiceDetail.getBusinessServiceVector();
                    BusinessService rBS;
                    for (int a=0;a<rBusinessServiceVector.size();a++)
                    {
                       System.out.println("*****************BUSINESS SERVICE***************");
                       rBS = (BusinessService)rBusinessServiceVector.elementAt(a);
                       Vector rDesVector = rBS.getDescriptionVector();
                       BindingTemplates rBTs = rBS.getBindingTemplates();
                       if (rBTs !=null)
                       {
                            Vector rBTVector = rBTs.getBindingTemplateVector();
                            BindingTemplate returnBindingTemplate;
                            for (int i = 0; i < returnBindingTemplateVector.size(); i++)
                            {
                               System.out.println("***********BINDING TEMPLATE*************");
                               returnBindingTemplate =(BindingTemplate)returnBindingTemplateVector.elementAt(i);
                               Vector rDesVector = returnBindingTemplate.getDescriptionVector();                                   AccessPoint rAP = returnBindingTemplate.getAccessPoint();
                               java.net.URL url=new URL(rAP.getText());//找到服务的URL地址
                             }
                         }
                      }
                   }
            }
}catch(Exception e){
  e.printStackTrace();
}
}
               
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值