public class ServiceLocatorImpl extends Object implements ServiceLocator, ExpiredEndpointCollector
connect to the
Service Locator to get a session assigned. Once the connection is established
the client will periodically send heart beats to the server to keep the
session alive.
The Service Locator provides the following operations.
ServiceLocator.PostConnectAction| Constructor and Description |
|---|
ServiceLocatorImpl() |
| Modifier and Type | Method and Description |
|---|---|
void |
addPostConnectAction(ServiceLocator.PostConnectAction postConnectAction)
Specify the action to be be executed after the Service Locator has
connected to the server.
|
void |
connect()
Establish a connection to the Service Locator.
|
protected org.apache.zookeeper.ZooKeeper |
createZooKeeper(CountDownLatch connectionLatch) |
void |
disconnect()
Disconnects from a Service Locator server.
|
SLEndpoint |
getEndpoint(QName serviceName,
String endpoint)
Return the complete endpoint information for the given endpoint
registered for the given service.
|
List<String> |
getEndpointNames(QName serviceName)
For the given service return all endpoints that currently registered at
the Service Locator Service.
|
List<SLEndpoint> |
getEndpoints(QName serviceName)
Return the complete endpoint informations for all endpoints registered
for the given service.
|
List<QName> |
getServices()
Return all services for which endpoints are registered at the Service
Locator Service.
|
List<String> |
lookup(QName serviceName)
For the given service return all endpoints that are currently registered
at the Service Locator.
|
List<String> |
lookup(QName serviceName,
SLPropertiesMatcher matcher)
For the given service return all endpoints that are currently registered
at the Service Locator and where the custom properties match the given
matcher.
|
void |
performCollection() |
void |
register(Endpoint epProvider)
For a given service register the endpoint as defined in the given
EndpointProvider. |
void |
register(Endpoint epProvider,
boolean persistent)
For a given service register the endpoint as defined in the given
EndpointProvider. |
void |
register(QName serviceName,
String endpoint)
For a given service register the endpoint of a concrete provider of this
service.
|
void |
register(QName serviceName,
String endpoint,
boolean persistent) |
void |
register(QName serviceName,
String endpoint,
SLProperties properties)
For a given service register the endpoint of a concrete provider of this
service.
|
void |
register(QName serviceName,
String endpoint,
SLProperties properties,
boolean persistent) |
void |
removeEndpoint(QName serviceName,
String endpoint)
Remove the given endpoint from the list of endpoints of the given
service.
|
void |
removePostConnectAction(ServiceLocator.PostConnectAction postConnectAction)
Remove the action to be be executed after the Service Locator has
connected to the server.
|
void |
setBackend(ServiceLocatorBackend backend) |
void |
setConnectionTimeout(int timeout)
Specify the time this client waits
for a connection to
get established. |
void |
setEndpointCollectionEnable(Boolean endpointCollectionDisable) |
void |
setEndpointCollectionInterval(Integer endpointCollectionInterval) |
void |
setEndpointTransformer(EndpointTransformer endpointTransformer) |
void |
setLocatorEndpoints(String endpoints)
Specify the endpoints of all the instances belonging to the service
locator ensemble this object might potentially be talking to when
connecting. |
void |
setName(String name) |
void |
setPassword(String passWord) |
void |
setSessionTimeout(int timeout)
Specify the time out of the session established at the server.
|
void |
startScheduledCollection() |
void |
stopScheduledCollection() |
void |
unregister(Endpoint epProvider)
For a given service unregister a previously registered endpoint.
|
void |
unregister(QName serviceName,
String endpoint)
For a given service unregister a previously registered endpoint.
|
void |
updateTimetolive(QName serviceName,
String endpoint,
int timetolive)
Updates the time-to-live (ttl) for specified endpoint.
|
public void connect()
throws InterruptedException,
ServiceLocatorException
ServiceLocator.PostConnectAction is run. If the session
to the server expires because the server could not be reached within the
specified time, a reconnect is
automatically executed as soon as the server can be reached again.
Because after a session time out all registered endpoints are removed it
is important to specify a ServiceLocator.PostConnectAction that re-registers all
endpoints.connect in interface ServiceLocatorInterruptedException - the current Thread was interrupted when waiting
for a successful connection to the ServiceLocatorServiceLocatorException - the connect operation failedpublic void disconnect()
throws InterruptedException,
ServiceLocatorException
connect again.disconnect in interface ServiceLocatorInterruptedException - the current Thread was interrupted when waiting
for the disconnect to happenServiceLocatorExceptionpublic void register(QName serviceName, String endpoint) throws ServiceLocatorException, InterruptedException
The endpoint is categorized as being a SOAP / HTTP endpoint.
register in interface ServiceLocatorserviceName - the name of the service the endpoint is registered for, must
not be nullendpoint - the endpoint to register, must not be nullServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic void register(QName serviceName, String endpoint, boolean persistent) throws ServiceLocatorException, InterruptedException
register in interface ServiceLocatorServiceLocatorExceptionInterruptedExceptionpublic void register(QName serviceName, String endpoint, SLProperties properties) throws ServiceLocatorException, InterruptedException
register in interface ServiceLocatorserviceName - the name of the service the endpoint is registered for, must
not be nullendpoint - the endpoint to register, must not be nullproperties - custom properties of the endpoint that can be used as
additional selection criteria when doing a lookup.ServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic void register(QName serviceName, String endpoint, SLProperties properties, boolean persistent) throws ServiceLocatorException, InterruptedException
register in interface ServiceLocatorServiceLocatorExceptionInterruptedExceptionpublic void register(Endpoint epProvider) throws ServiceLocatorException, InterruptedException
EndpointProvider. The endpoint is marked as live as long as this client is connected and the
session on the server is valid.register in interface ServiceLocatorepProvider - provides all the necessary information to register an endpoint like name of the service
for which to register the endpoint, the endpoint URL, must not be null.ServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting for a response of the
ServiceLocatorpublic void register(Endpoint epProvider, boolean persistent) throws ServiceLocatorException, InterruptedException
ServiceLocatorEndpointProvider. If the given persistent flag is not set the endpoint is marked as live as long
as this client is connected and the session on the server is valid. Otherwise it is marked live
independent of the sesion state.register in interface ServiceLocatorepProvider - provides all the necessary information to register an endpoint like name of the service
for which to register the endpoint, the endpoint URL, must not be null.persistent - iff true the endpoint is marked live until it is explicitly unregistered.ServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting for a response of the
ServiceLocatorpublic void unregister(Endpoint epProvider) throws ServiceLocatorException, InterruptedException
ServiceLocatorunregister in interface ServiceLocatorServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting for a response of the
ServiceLocatorpublic void unregister(QName serviceName, String endpoint) throws ServiceLocatorException, InterruptedException
unregister in interface ServiceLocatorserviceName - the name of the service the endpoint is unregistered for, must
not be nullendpoint - the endpoint to unregister, must not be nullServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic void updateTimetolive(QName serviceName, String endpoint, int timetolive) throws ServiceLocatorException, InterruptedException
ServiceLocatorupdateTimetolive in interface ServiceLocatorserviceName - name of the service the endpoint belongs toendpoint - name of the endpointtimetolive - period of time (in seconds) when this endpoint is considered "alive"ServiceLocatorException - thrown if a problem happened. For example if the endpoint does not exist,
if given time-to-live is negative or zero, etc.InterruptedException - the current Thread was interrupted when waiting for a response of the
ServiceLocatorpublic void removeEndpoint(QName serviceName, String endpoint) throws ServiceLocatorException, InterruptedException
getEndpoint(serviceName) the given endpoint will not be contained in the returned
list. In case no service with the given name exists or the given endpoint is not registered
with the service the state of the Service Locator remians unchanged.removeEndpoint in interface ServiceLocatorserviceName - the name of the service the endpoint is removed from, must not
be nullendpoint - the endpoint to remove, must not be nullServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic List<QName> getServices() throws InterruptedException, ServiceLocatorException
getServices in interface ServiceLocatorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorServiceLocatorException - the server returned an errorpublic List<SLEndpoint> getEndpoints(QName serviceName) throws ServiceLocatorException, InterruptedException
getEndpoints in interface ServiceLocatorserviceName - the name of the service for which the endpoints ares
registered, must not be nullServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic SLEndpoint getEndpoint(QName serviceName, String endpoint) throws ServiceLocatorException, InterruptedException
getEndpoint in interface ServiceLocatorserviceName - the name of the service for which the endpoint is registered,
must not be nullendpoint - the endpoint for which to return the information, must not be
nullnull if the
endpoint was not registered beforeServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic List<String> getEndpointNames(QName serviceName) throws ServiceLocatorException, InterruptedException
getEndpointNames in interface ServiceLocatorserviceName - the name of the service for which to get the endpoints, must
not be nullServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic List<String> lookup(QName serviceName) throws ServiceLocatorException, InterruptedException
lookup in interface ServiceLocatorserviceName - the name of the service for which to get the endpoints, must
not be nullServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic List<String> lookup(QName serviceName, SLPropertiesMatcher matcher) throws ServiceLocatorException, InterruptedException
lookup in interface ServiceLocatorserviceName - the name of the service for which to get the endpoints, must
not be nullmatcher - custom properties of the endpoints returned match the
criterias specified by this matcherServiceLocatorException - the server returned an errorInterruptedException - the current Thread was interrupted when waiting
for a response of the ServiceLocatorpublic void setLocatorEndpoints(String endpoints)
connecting. The object will one by one pick an
endpoint (the order is non-deterministic) to connect to the service
locator until a connection is established.endpoints - comma separated list of endpoints,each corresponding to a
service locator instance. Each endpoint is specified as a
host:port pair. At least one endpoint must be specified. Valid
exmaples are: "127.0.0.1:2181" or
"sl1.example.com:3210, sl2.example.com:3210, sl3.example.com:3210"public void setSessionTimeout(int timeout)
timeout - timeout in milliseconds, must be greater than zero and less
than 60000.public void setConnectionTimeout(int timeout)
for a connection to
get established.timeout - timeout in milliseconds, must be greater than zeropublic void setName(String name)
public void setPassword(String passWord)
public void setEndpointTransformer(EndpointTransformer endpointTransformer)
public void setEndpointCollectionEnable(Boolean endpointCollectionDisable)
public void setEndpointCollectionInterval(Integer endpointCollectionInterval)
public void addPostConnectAction(ServiceLocator.PostConnectAction postConnectAction)
addPostConnectAction in interface ServiceLocatorpostConnectAction - the action to be executed, must not be null.public void removePostConnectAction(ServiceLocator.PostConnectAction postConnectAction)
removePostConnectAction in interface ServiceLocatorpostConnectAction - the action to be executed, must not be null.public void setBackend(ServiceLocatorBackend backend)
protected org.apache.zookeeper.ZooKeeper createZooKeeper(CountDownLatch connectionLatch) throws ServiceLocatorException
ServiceLocatorExceptionpublic void startScheduledCollection()
startScheduledCollection in interface ExpiredEndpointCollectorpublic void stopScheduledCollection()
stopScheduledCollection in interface ExpiredEndpointCollectorpublic void performCollection()
performCollection in interface ExpiredEndpointCollectorCopyright © 2011–2016 Talend Inc.. All rights reserved.