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());//获得描述信息
}
}
}