服务查询的API(Weblogic)编写的client实例

本文档展示了如何使用WebLogic的UDDI客户端API进行服务查询。通过创建Inquiry和Publish对象,设置查询和发布地址,然后调用相关方法如findBusiness和getBusinessDetail,获取企业及服务的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import weblogic.uddi.client.service.Inquiry;
import weblogic.uddi.client.service.Publish;

import weblogic.uddi.client.structures.exception.UDDIException;
import weblogic.uddi.client.structures.exception.XML_SoapException;

import weblogic.uddi.client.structures.datatypes.AccessPoint;
import weblogic.uddi.client.structures.datatypes.Address;
import weblogic.uddi.client.structures.datatypes.AddressLine;
import weblogic.uddi.client.structures.datatypes.AuthInfo;
import weblogic.uddi.client.structures.datatypes.BindingKey;
import weblogic.uddi.client.structures.datatypes.BindingTemplate;
import weblogic.uddi.client.structures.datatypes.BindingTemplates;
import weblogic.uddi.client.structures.datatypes.BusinessEntity;
import weblogic.uddi.client.structures.datatypes.BusinessKey;
import weblogic.uddi.client.structures.datatypes.BusinessService;
import weblogic.uddi.client.structures.datatypes.BusinessServices;
import weblogic.uddi.client.structures.datatypes.CategoryBag;
import weblogic.uddi.client.structures.datatypes.Contact;
import weblogic.uddi.client.structures.datatypes.Contacts;
import weblogic.uddi.client.structures.datatypes.Description;
import weblogic.uddi.client.structures.datatypes.DiscoveryURL;
import weblogic.uddi.client.structures.datatypes.DiscoveryURLs;
import weblogic.uddi.client.structures.datatypes.Email;
import weblogic.uddi.client.structures.datatypes.FindQualifier;
import weblogic.uddi.client.structures.datatypes.FindQualifiers;
import weblogic.uddi.client.structures.datatypes.HostingRedirector;
import weblogic.uddi.client.structures.datatypes.IdentifierBag;
import weblogic.uddi.client.structures.datatypes.InstanceDetails;
import weblogic.uddi.client.structures.datatypes.InstanceParms;
import weblogic.uddi.client.structures.datatypes.KeyValue;
import weblogic.uddi.client.structures.datatypes.KeyedReference;
import weblogic.uddi.client.structures.datatypes.Name;
import weblogic.uddi.client.structures.datatypes.OverviewDoc;
import weblogic.uddi.client.structures.datatypes.OverviewURL;
import weblogic.uddi.client.structures.datatypes.Phone;
import weblogic.uddi.client.structures.datatypes.ServiceKey;
import weblogic.uddi.client.structures.datatypes.TModel;
import weblogic.uddi.client.structures.datatypes.TModelBag;
import weblogic.uddi.client.structures.datatypes.TModelInstanceDetails;
import weblogic.uddi.client.structures.datatypes.TModelInstanceInfo;
import weblogic.uddi.client.structures.datatypes.TModelKey;
import weblogic.uddi.client.structures.datatypes.UploadRegister;
import weblogic.uddi.client.structures.datatypes.BusinessInfo;
import weblogic.uddi.client.structures.datatypes.BusinessInfos;
import weblogic.uddi.client.structures.datatypes.ErrInfo;
import weblogic.uddi.client.structures.datatypes.Result;
import weblogic.uddi.client.structures.datatypes.ServiceInfo;
import weblogic.uddi.client.structures.datatypes.ServiceInfos;
import weblogic.uddi.client.structures.datatypes.TModelInfo;
import weblogic.uddi.client.structures.datatypes.TModelInfos;

import weblogic.uddi.client.structures.request.DeleteBinding;
import weblogic.uddi.client.structures.request.DeleteBusiness;
import weblogic.uddi.client.structures.request.DeleteService;
import weblogic.uddi.client.structures.request.DeleteTModel;
import weblogic.uddi.client.structures.request.DiscardAuthToken;
import weblogic.uddi.client.structures.request.FindBinding;
import weblogic.uddi.client.structures.request.FindBusiness;
import weblogic.uddi.client.structures.request.FindService;
import weblogic.uddi.client.structures.request.FindTModel;
import weblogic.uddi.client.structures.request.GetAuthToken;
import weblogic.uddi.client.structures.request.GetBindingDetail;
import weblogic.uddi.client.structures.request.GetBusinessDetail;
import weblogic.uddi.client.structures.request.GetBusinessDetailExt;
import weblogic.uddi.client.structures.request.GetRegisteredInfo;
import weblogic.uddi.client.structures.request.GetServiceDetail;
import weblogic.uddi.client.structures.request.GetTModelDetail;
import weblogic.uddi.client.structures.request.SaveBinding;
import weblogic.uddi.client.structures.request.SaveBusiness;
import weblogic.uddi.client.structures.request.SaveService;
import weblogic.uddi.client.structures.request.SaveTModel;
import weblogic.uddi.client.structures.request.ValidateCategorization;

import weblogic.uddi.client.structures.response.AuthToken;
import weblogic.uddi.client.structures.response.BindingDetail;
import weblogic.uddi.client.structures.response.BusinessDetail;
import weblogic.uddi.client.structures.response.BusinessDetailExt;
import weblogic.uddi.client.structures.response.BusinessList;
import weblogic.uddi.client.structures.response.DispositionReport;
import weblogic.uddi.client.structures.response.RegisteredInfo;
import weblogic.uddi.client.structures.response.ServiceDetail;
import weblogic.uddi.client.structures.response.ServiceList;
import weblogic.uddi.client.structures.response.TModelDetail;
import weblogic.uddi.client.structures.response.TModelList;

import java.util.Vector;
public class TestClientWebInq{
  private static Inquiry inq;//创建查询对象
  private static Publish pub;//创建发布对象

    public TestClientWebInq()
    {
       inq = new Inquiry();
       pub = new Publish();
       }
 public static void main(String arg[]){
        System.out.println("/nTesting clientW......./n");

        TestClientWebInq t = new TestClientWebInq();

        System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
        java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
              inq.setURL("http://localhost:7001/uddi/uddilistener");//设置查询地址:weblogic提供的UDDI注册中心
              pub.setURL("http://localhost:7001/uddi/uddilistener");//设置发布地址
              t.testFindBusinessByName();//从FindBussiness对象开始查询服务
              t.testGetBusinessDetail();//通过给定的BusinessKey获得企业和商业实体的相关信息
    }
 /*给定的Name获得相关的企业实体信息和服务的相关信息
思路:
 根据企业实体Name,使用FindBussiness对象定位到指定的企业的商业实体列表

 BussinessList对象,通过BussinessInfos对象从它获得企业实体信息。再在一个

 BussinessInfo对象中获得servicInfos,然后在一个ServiceInfo对象中获得服务名,服务

    key,商业实体key.
运行结果:
*********BUSINESS INFO********
Attribute BusinessKey: 302d8510-da85-481a-a9c6-cc0762774db1
Name : JavaLab
*********Service Info********
Service Info Name: HelloWorldG
ServiceKey : 7271dc73-d738-4ef2-8e57-e7fcc4f5b0a2
BusinessKey : 302d8510-da85-481a-a9c6-cc0762774db1
*********Service Info********
*********BUSINESS INFO********
          */
    public void testFindBusinessByName()
      {
          System.out.println("TEST FindBusiness By Name");

        try{
   Name name= new Name("JavaLab");//注册的公司单位/部门名称
   FindBusiness fb = new FindBusiness();//声明FindBussiness对象,并设置相关的查询信息属性
   fb.setName(name);
   BusinessList rBusinessList = inq.findBusiness(fb);//从企业实体中提取,用Bussinsesslist获得商业服务列表
   printBusinessList(rBusinessList);//打印服务列表
  }catch(UDDIException ue){//UDDI异常
              System.out.println("UDDIEXception");
              System.out.println(ue.getFaultActor());
              System.out.println(ue.getFaultCode());
              DispositionReport dr = ue.getDispositionReport();
              Vector res = dr.getResultVector();
              Result r = (Result)res.elementAt(0);
              ErrInfo ei =  r.getErrInfo();
              System.out.println("ErrInfo : "+ ei.getValue());
          }
          catch (XML_SoapException exp){//soap解析异常
              System.out.println("XML_SoapException");
              System.out.println(exp.getMessage());
              exp.printStackTrace();
          }
          catch(Exception e){
              System.out.println("Exception");
              e.printStackTrace();
        }
 }
    private void printBusinessList(BusinessList rBusinessList)
       {
               BusinessInfos rBusinessInfos = rBusinessList.getBusinessInfos();//获得商业服务信息
               Vector rBusinessInfoVector = rBusinessInfos.getBusinessInfoVector();//获得商业服务信息向量列表
               System.out.println("BusinessList size: "+rBusinessInfoVector.size());
               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();

                      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());
                          System.out.println("*********Service Info********");

                                }
                                 System.out.println("*********BUSINESS INFO********");

 

            }
 }
/*通过给定的BusinessKey获得企业实体和商业服务的信息,以及服务的提供与定位到wsdl
思路:
根据给定的Bussinesskey,用inqury对象得到BussinessDetail,然后用他们得到一个

BussinessEntity的vector,然后通过BussinessEnity得到BusinessServices,剩下的流程:

BusinessServices-->BusinessService->BindingTemplates->BindingTemplate-->AccessPoint
运行结果:
DISCOVERY URL text: http://localhost:7001/uddi/uddilistener?businessKey=302d8510
-da85-481a-a9c6-cc0762774db1
DISCOVERY URL useType: businessEntity
Business Entity Name: JavaLab
*****************BUSINESS SERVICE***************
Description  : TestUDDI
***********BINDING TEMPLATE*************
Access Point ==> Text : http://localhost:7001/axis/services/HelloWorldG?wsdl
Access Point ==> URLType : http
GH1
GH2
GH3
GH4
OVERVIEWURL : http://localhost:7001/axis/services/HelloWorldG?wsdl
GH5
GH6
TModelInstanceInfo TModelKey attribute : uuid:58ced676-8c97-40b1-8ee3-7cdb8c25db
09
bindingTemplate attr Binding Key : f518192f-3c48-400f-bbbb-093522ba2ae6
bindingTemplate attr serviceKey : 7271dc73-d738-4ef2-8e57-e7fcc4f5b0a2
***********BINDING TEMPLATE*************
BusinessService serviceKey: 7271dc73-d738-4ef2-8e57-e7fcc4f5b0a2
BusinessService businessKey: 302d8510-da85-481a-a9c6-cc0762774db1
*****************BUSINESS SERVICE***************
BUSINESS ENTITY BusinessKey: 302d8510-da85-481a-a9c6-cc0762774db1
BUSINESS ENTITY authorizedName: gaolong1
*/
public void testGetBusinessDetail()
    {
        try{
            Vector businessKeyVector = new Vector();
            BusinessKey businessKey = new BusinessKey("2c646249-2277-433d-8f87-9c95e41d4a7f");//商业标示
            businessKeyVector.add(businessKey);

            GetBusinessDetail gbd = new GetBusinessDetail();//获得商业描述的对象
            gbd.setBusinessKeyVector(businessKeyVector);
   BusinessDetail rBusinessDetail = inq.getBusinessDetail(gbd);//从查询对象中获得商业实体的描述

   Vector rBusinessEntityVector = rBusinessDetail.getBusinessEntityVector();//得到商业实体列表
            BusinessEntity rBE;
             for (int a = 0; a<rBusinessEntityVector.size();a++)
               {
                       rBE = (BusinessEntity)rBusinessEntityVector.elementAt(a);//取其中的商业实体
                       DiscoveryURLs rDisURLs = rBE.getDiscoveryURLs(); //指向基于可代替文件的服务发现机制的URL
                       Vector rDisURLVector = rDisURLs.getDiscoveryURLVector();
                       DiscoveryURL rDisURL;
                       for (int b=0;b<rDisURLVector.size();b++)
                       {
                           rDisURL=(DiscoveryURL)rDisURLVector.elementAt(b);
                           System.out.println("DISCOVERY URL text: "+rDisURL.getValue());//请求路径
                           System.out.println("DISCOVERY URL useType: "+rDisURL.getUseType());//请求参数
                       }
                       System.out.println("Business Entity Name: "+rBE.getName().getValue());//企业实体名称

                      Vector rDesVector = rBE.getDescriptionVector();
                      printDescriptionVector(rDesVector); //获取描述信息

                      BusinessServices rBSs = rBE.getBusinessServices();//获得商业服务
          if (rBSs!=null)
               {
              Vector rBusinessServiceVector = rBSs.getBusinessServiceVector();
              if (rBusinessServiceVector!=null)
              {
                   printBusinessServiceVector(rBusinessServiceVector);//输出描述信息
               }
                                  }
                                System.out.println("BUSINESS ENTITY BusinessKey: "+rBE.getBusinessKey());
           System.out.println("BUSINESS ENTITY authorizedName: "+rBE.getAuthorizedName());//获得发布消息的用户名

 

                          }
        }catch(UDDIException ue){
            System.out.println("UDDIEXception");
            System.out.println(ue.getFaultActor());
            System.out.println(ue.getFaultCode());
            DispositionReport dr = ue.getDispositionReport();
            Vector res = dr.getResultVector();
            Result r = (Result)res.elementAt(0);
            ErrInfo ei =  r.getErrInfo();
            System.out.println("ErrInfo : "+ ei.getValue());

        }
        catch (XML_SoapException exp)
        {
           System.out.println("XML_SoapException");
           System.out.println(exp.getMessage());
           exp.printStackTrace();
        }
        catch(Exception e){
            System.out.println("Exception");
            e.printStackTrace();
        }
    }
private void printBusinessServiceVector(Vector rBusinessServiceVector)
    {
            BusinessService rBS;
            for (int a=0;a<rBusinessServiceVector.size();a++)
            {
                System.out.println("*****************BUSINESS SERVICE***************");
                rBS = (BusinessService)rBusinessServiceVector.elementAt(a);//得到商业服务对象
                Vector rDesVector = rBS.getDescriptionVector();
                printDescriptionVector(rDesVector);//给出描述信息
                BindingTemplates rBTs = rBS.getBindingTemplates();//提供详细技术信息,包含服务存取点的信息。由serviceKey属性来识别bussinessService.
                if (rBTs !=null)//如果该模板不是服务的人口点,他会给出远程宿主的服务的信息,称为绿页,它维护tModels结构列表
                {
                    Vector rBTVector = rBTs.getBindingTemplateVector();
                    printBindingTemplate(rBTVector);
                }
                CategoryBag rCategoryBag = rBS.getCategoryBag();//Category结构中使用tModelKey,用于定义组织标识和多种分类

                if (rCategoryBag!=null)
                {
                    Vector rCatKRVector = rCategoryBag.getKeyedReferenceVector();
                    KeyedReference rCatKR;
                    for (int b=0;b<rCatKRVector.size();b++)
                    {
                        rCatKR = (KeyedReference)rCatKRVector.elementAt(b);
                        System.out.println("CatBag KeyedReference tModelKey: "+rCatKR.getTModelKey());
                        System.out.println("CatBag KeyedReference KeyName: "+rCatKR.getKeyName());
                        System.out.println("CatBag KeyedReference keyValue: "+rCatKR.getKeyValue());

                    }
                }

                System.out.println("BusinessService serviceKey: "+rBS.getServiceKey());
                System.out.println("BusinessService businessKey: "+rBS.getBusinessKey());
                System.out.println("*****************BUSINESS SERVICE***************");


            }
    }
    private void printBindingTemplate(Vector returnBindingTemplateVector)
    {
            BindingTemplate returnBindingTemplate;
            for (int i = 0; i < returnBindingTemplateVector.size(); i++)
            {
                System.out.println("***********BINDING TEMPLATE*************");
                returnBindingTemplate = (BindingTemplate)returnBindingTemplateVector.elementAt(i);
                Vector rDesVector = returnBindingTemplate.getDescriptionVector();

                printDescriptionVector(rDesVector);//得到描述信息

                AccessPoint rAP = returnBindingTemplate.getAccessPoint();//获得适合调用webservices的入口点地址
                if (rAP != null)
                {
                    System.out.println("Access Point ==> Text : "+rAP.getValue());//入口wsdl路径
                    System.out.println("Access Point ==> URLType : " + rAP.getURLType());//该路经的通信协议
                }

                HostingRedirector rHR = returnBindingTemplate.getHostingRedirector();//没有指定accessPoint时,指定对不同bindingTemplate的引用
                if (rHR != null)
                {
                    System.out.println("Hosting Redirector ==> BindingKey : " + rHR.getBindingKey());
                }


                TModelInstanceDetails rTMIDs = returnBindingTemplate.getTModelInstanceDetails();//tModelInstaceInfo元素列表,提供标示符,识别兼容的服务
                if (rTMIDs!=null)
                {
                    Vector rTMIIVector = rTMIDs.getTModelInstanceInfoVector();
                    TModelInstanceInfo rTMII;
                    for (int y = 0 ; y < rTMIIVector.size(); y++)
                    {
                        rTMII = (TModelInstanceInfo)rTMIIVector.elementAt(y);
                        Vector rTMIIrDesVector = rTMII.getDescriptionVector();
                        printDescriptionVector(rTMIIrDesVector);

                        InstanceDetails rIDs = rTMII.getInstanceDetails();
                        if (rIDs != null)
                        {
                            System.out.println("GH1");
                            Vector newDes = rIDs.getDescriptionVector();//获得描述信息
                            printDescriptionVector(newDes);
                               System.out.println("GH2");
                            OverviewDoc rOD = rIDs.getOverviewDoc();//指定对远程指令和该结构相关信息的引用
                            System.out.println("GH3");
                            if (rOD != null)
                            {
                                printDescriptionVector(rOD.getDescriptionVector());
                                System.out.println("GH4");
                                if (rOD.getOverviewURL() != null)
                                {
                                    System.out.println("OVERVIEWURL : " + rOD.getOverviewURL().getValue());//获得远程信息的URL
                                }
                                System.out.println("GH5");
                            }
                            InstanceParms rIP = rIDs.getInstanceParms();
                            System.out.println("GH6");
                            if (rIP != null)
                            {
                                System.out.println("IntsanceParams : "+ rIP.getValue());
                            }
                        }
                        System.out.println("TModelInstanceInfo TModelKey attribute : "+rTMII.getTModelKey());//获得指定tModel结构的唯一键


                    }
                }
                System.out.println("bindingTemplate attr Binding Key : "+returnBindingTemplate.getBindingKey());//获得该结构的UUID
                System.out.println("bindingTemplate attr serviceKey : "+returnBindingTemplate.getServiceKey());//获得BusinessService/


                System.out.println("***********BINDING TEMPLATE*************");
            }
    }
    static public void printDescriptionVector(Vector des)
     {

         if (des

         ==null)
          return;
         //Find the class in the Vector
         Description ct;

         for (int i =0 ; i<des.size();i++)
         {
             ct = (Description)des.elementAt(i);
             System.out.println("Description  : " + ct.getValue());//获得描述信息
         }
     }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值