| Hi 
 
 Am 05.10.2015 um 14:46 schrieb Marin
      Orlić:
 
      
      I had a similar issue (my remote server can be selected by user at
    login time - so it's not know in advance) and was able to solve it
    by creating an endpoint description programmatically (look at the
    ECF Wiki there is some documentation on it). It should look like
    something like this:Hi,
        
 what would be the
            preferred method of dynamically changing the endpoint URL
            registered for a remote REST service?  
 I can register
            the service with an EDEF initially, but the requirement is
            that the endpoint must be changeable via workspace
            preferences. My guess is that a listener on preference
            change could trigger service registration using dynamically
            generated EDEF properties? How to start with that and what
            properties need to be changed along with endpoint URI (endpoint.service.id?). 
 private EndpointDescription getEndpointDescription(final
    Class<?> service) {
 final Map<String, Object> props = new
    HashMap<String, Object>();
 String host = appServerService.getHost();              
props.put(org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
 StringID.class.getName());
 props.put(ENDPOINT_ID, "ecftcp://" + host + ":8889/server");
 final Package package1 = service.getPackage();
 props.put(ENDPOINT_PACKAGE_VERSION_ + package1.getName(),
    getPackageVersion(package1));
 props.put("objectClass", new String[] { service.getName()
    });
 props.put(REMOTE_CONFIGS_SUPPORTED, new String[] {
    "ecf.generic.server" });
 props.put(REMOTE_INTENTS_SUPPORTED, new String[] {
    "passByValue", "exactlyOnce", "ordered" });
 props.put(SERVICE_IMPORTED, "true");
 props.put(SERVICE_IMPORTED_CONFIGS, new String[] {
    "ecf.generic.server" });
 
 return new EndpointDescription(props);
 }
 
 And then register that endpoint desciption using
 
 remoteServiceAdmin.importService(endpointDescription);
 
 The remoteServiceAdmin Service is an
    org.osgi.service.remoteserviceadmin.RemoteServiceAdmin and in my
    case is injected/bound via a DS declaration.
 
 Hope that helps you.
 
 Peter
 
 
 |