2012-09-01 2 views
0

이미 게시 된 서비스에서 JUDDI를 사용하여 액세스 포인트를 얻는 방법을 찾고 싶거나 문의해야합니다. 나는 Apache jUDDI: Finding Templates에 나와있는 절차를 따랐다. 그러나 그것은 작동하지 않았고 난 Tomcat 서버에서 다음과 같은 오류가 발생합니다 :액세스 포인트에 대한 JUDDI 문의 (찾기)

Sep 01, 2012 11:29:58 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging 
INFO: Application {urn:uddi-org:v3_service}UDDIInquiryService#{urn:uddi-org:v3_service}find_service has thrown exception, unwinding now: org.apache.juddi.v3.error.FatalErrorException: At least one name, categoryBag, find_tModel or tModelBag or name must be supplied 

과 같은 오류로 넷빈즈 IDE에 표시됩니다 :

다음과
javax.xml.ws.soap.SOAPFaultException: At least one name, categoryBag, find_tModel or tModelBag or name must be supplied 

내 코드가 될 때 :

 FindService fs = new FindService(); 
     fs.setAuthInfo(rootAuthToken.getAuthInfo()); 
     fs.setBusinessKey("uddi:juddi.apache.org:e7180bfb-3c36-451e-86aa-f7605a96587c"); 
     ServiceList sl = inquiry.findService(fs); 
     ServiceInfos si = sl.getServiceInfos(); 
     GetServiceDetail gsd = new GetServiceDetail(); 
     ServiceDetail sd = inquiry.getServiceDetail(gsd); 
     BusinessService bs = (BusinessService) sd.getBusinessService(); 
     BindingTemplates bts = bs.getBindingTemplates(); 
     BindingTemplate bt = (BindingTemplate) bts.getBindingTemplate(); 
     AccessPoint ap = bt.getAccessPoint(); 
     wsdlTA.setText(ap.getValue()); 

답변

0

나는 아파치 JUDDI의 프로젝트 메일 링리스트를 통해 문제를 해결했다. 도움을 주신 秦玉珠에게 감사드립니다. 코드는 다음과 같습니다 :

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); 
} 
관련 문제