UDDI 註冊中心支援四大核心數據模型的發布與修改:商業實體、商業服務、綁定信息、tModel。WebLogic UDDI Client API 的 Publish 類提供對應的 saveXxx 與 deleteXxx 方法。所有寫操作均需先通過 getAuthToken 獲取 AuthInfo 作為身份憑證。
GetAuthToken gat = new GetAuthToken();
gat.setUserID("yancheng");
gat.setCred("12345678");
AuthInfo authInfo = publisher.getAuthToken(gat).getAuthInfo();
System.out.println("AuthInfo: " + authInfo.getValue());
AuthInfo 後續作為所有發布/修改/刪除操作的必填參數。
使用 SaveBusiness 承載 BusinessEntity,關鍵步驟:
BusinessKey="" 表示新增publisher.saveBusiness(sb)BusinessEntity be = new BusinessEntity();
be.setName(new Name("sharetop.com"));
be.addDescription("sharetop software studio");
be.setAuthorizedName("yancheng");
be.setOperator("yancheng");
be.setBusinessKey("");
Contact c = new Contact();
c.setPersonName("yan cheng");
c.addEmail("webmaster@sharetop.com");
c.addPhone("1012032");
Contacts contacts = new Contacts();
contacts.addContact(c);
be.setContacts(contacts);
SaveBusiness sb = new SaveBusiness();
sb.setAuthInfo(authInfo);
sb.addUploadRegister(new UploadRegister("yancheng"));
sb.addBusinessEntity(be);
publisher.saveBusiness(sb);
tModel 描述技術規範,獨立於 BusinessEntity,同樣需設置 TModelKey="":
TModel tm = new TModel();
tm.setName(new Name("TestXType tModel"));
tm.addDescription("complex datatype tmodel");
tm.setTModelKey("");
OverviewDoc od = new OverviewDoc();
od.setOverviewURL("https://sharetop:7001/TestXType/TestXTypeEJB?WSDL");
tm.setOverviewDoc(od);
SaveTModel st = new SaveTModel();
st.setAuthInfo(authInfo);
st.addUploadRegister(new UploadRegister("yancheng"));
st.addTModel(tm);
publisher.saveTModel(st);
服務需掛載於現有 BusinessEntity 下,必須提供 BindingTemplates(可為空):
// 先查詢已發布的 BusinessKey
GetRegisteredInfo gri = new GetRegisteredInfo();
gri.setAuthInfo(authInfo);
String bKey = publisher.getRegisteredInfo(gri)
.getBusinessInfos().getBusinessInfoVector().firstElement()
.getBusinessKey();
BusinessService bs = new BusinessService();
bs.setBusinessKey(bKey);
bs.setServiceKey("");
bs.setName(new Name("TestXType"));
bs.addDescription("Test Complex DataType");
bs.setBindingTemplates(new BindingTemplates()); // 空綁定模板
SaveService ss = new SaveService();
ss.setAuthInfo(authInfo);
ss.addBusinessService(bs);
publisher.saveService(ss);
為現有服務添加入口點,關聯 tModel 技術規範:
BindingTemplate bt = new BindingTemplate();
bt.setBindingKey("");
bt.setServiceKey(serviceKey);
bt.setAccessPoint(new AccessPoint("https://www.superfeel.net", "http"));
bt.addDescription("add new binding template 3");
TModelInstanceInfo tmInfo = new TModelInstanceInfo();
tmInfo.setTModelKey(tModelKey);
InstanceDetails id = new InstanceDetails();
id.setOverviewDoc(new OverviewDoc("https://sharetop:7001/TestXType/TestXTypeEJB?WSDL"));
tmInfo.setInstanceDetails(id);
TModelInstanceDetails tmDetails = new TModelInstanceDetails();
tmDetails.addTModelInstanceInfo(tmInfo);
bt.setTModelInstanceDetails(tmDetails);
SaveBinding sb = new SaveBinding();
sb.setAuthInfo(authInfo);
sb.addBindingTemplate(bt);
publisher.saveBinding(sb);
AuthInfo掌握此套流程,即可完整掌控 UDDI 註冊中心的服務發布生命週期。