質問
UDDIサーバー(JUDDI-PORTAL-BUNDLE-3.0.4)にJUDDI v3.0.4クライアントを使用しています。私の興味は、アクセスポイントWSDLが後でWebServiceを照会できるようにするために、そのバインディングテンプレートを照会するサービス(私が成功した)と照会を見つけることです。
BindingTemplateキーを知っていれば、アクセスポイントを取得することができます。
絞り込みオブジェクトを使用して、サービスのBindingTemplatesを照会しようとすると、 "javax.xml.ws.soap.soapFaultException:少なくとも1つのカテゴリバッグ、find_tmodel、またはtmodelbagが指定されている必要があります"#:.しかし、FindBindingオブジェクトのいずれかを記入することはできません。
私は何かがありませんか?、サービステンプレートとそのWSDLが後で入手する正しい方法ではありませんか?
ありがとう。
オスカー
解決
私は解決策を見つけました。 このキーは、ビジネスサービスオブジェクトを介してバインディングテンプレートを探すことです。これはBindingTemplateオブジェクトを扱います。
so、
- uddiinquiryportTypeによって提供されるfindService(findService FS)APIを介したサービスキーのクエリ。
- 返されるServiceListの場合は、サービスキーを含むServiceInfoオブジェクトを取得します。
- あなたが探しているサービスキーを与えられている(FindServiceは名前オブジェクトを介してスコープされることがあります)、getServicedEtailオブジェクトがサービスキーで入力されているuddiinquireportTypeによって提供されるgetServicedetail(getServicedetail SD)APIを介してサービスの詳細を取得します。。
- 前のクエリによって返されたServicedEtailオブジェクトのリストは、Webサービス定義(WSDL)を含むBindingTemplatesを導きます。
それが役立つことを願っています。
他のヒント
助けのために秦玉珠のおかげで。コードは次のとおりです。
ServiceList list1=inquiryService.findService(findservice);
GetServiceDetail gsd=new GetServiceDetail();
for(ServiceInfo serviceInfo :list1.getServiceInfos().getServiceInfo()){
gsd.getServiceKey().add(serviceInfo.getServiceKey());
System.out.println(serviceInfo.getServiceKey());
String servicekey=serviceInfo.getServiceKey();
GetServiceDetail getServiceDetail=new GetServiceDetail();
getServiceDetail.setAuthInfo(authinfo);
getServiceDetail.getServiceKey().add(servicekey);
ServiceDetail serviceDetail=inquiryService.getServiceDetail(getServiceDetail);
BusinessService businessservice=serviceDetail.getBusinessService().get(0);
System.out.println("fetched service name:"+businessservice.getName().get(0).getValue());
String bindingkey = businessservice.getBindingTemplates().getBindingTemplate().get(0).getBindingKey();
System.out.println(bindingkey);
GetBindingDetail gbd = new GetBindingDetail();
gbd.setAuthInfo(authinfo);
gbd.getBindingKey().add(bindingkey);
BindingDetail bindingdetail=inquiryService.getBindingDetail(gbd);
BindingTemplate bindingtemplate=bindingdetail.getBindingTemplate().get(0);
String accesspoint=bindingtemplate.getAccessPoint().getValue();
System.out.println(accesspoint);
}
. 所属していません StackOverflow