List < W3CEndpointReference > lookupEndpoints ( QName serviceName , MatcherDataType matcherData ) throws ServiceLocatorFault , InterruptedExceptionFault { SLPropertiesMatcher matcher = createMatcher ( matcherData ) ; List < String > names = null ; List < W3CEndpointReference > result = new ArrayList < W3CEndpointReference > ( ) ; String adress ; try { initLocator ( ) ; if ( matcher == null ) { names = locatorClient . lookup ( serviceName ) ; } else { names = locatorClient . lookup ( serviceName , matcher ) ; } } catch ( ServiceLocatorException e ) { ServiceLocatorFaultDetail serviceFaultDetail = new ServiceLocatorFaultDetail ( ) ; serviceFaultDetail . setLocatorFaultDetail ( serviceName . toString ( ) + "throws ServiceLocatorFault" ) ; throw new ServiceLocatorFault ( e . getMessage ( ) , serviceFaultDetail ) ; } catch ( InterruptedException e ) { InterruptionFaultDetail interruptionFaultDetail = new InterruptionFaultDetail ( ) ; interruptionFaultDetail . setInterruptionDetail ( serviceName . toString ( ) + "throws InterruptionFault" ) ; throw new InterruptedExceptionFault ( e . getMessage ( ) , interruptionFaultDetail ) ; } if ( names != null && ! names . isEmpty ( ) ) { for ( int i = 0 ; i < names . size ( ) ; i ++ ) { adress = names . get ( i ) ; result . add ( buildEndpoint ( serviceName , adress ) ) ; } } else { if ( LOG . isLoggable ( Level . WARNING ) ) { LOG . log ( Level . WARNING , "lookup Endpoints for " + serviceName + " failed, service is not known." ) ; } ServiceLocatorFaultDetail serviceFaultDetail = new ServiceLocatorFaultDetail ( ) ; serviceFaultDetail . setLocatorFaultDetail ( "lookup Endpoint for " + serviceName + " failed, service is not known." ) ; throw new ServiceLocatorFault ( "Can not find Endpoint" , serviceFaultDetail ) ; } return result ; }
For the given service name return list of endpoint references currently registered at the service locator server endpoints .