查询服务程序的实现过程:创建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();
}
}
闽公网安备 35060202000074号