Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ecf-dev] Problem with Service Endpoint matching when using different network names

Hi,

I need to bring up a issue that was already discussed earlier, eg.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=419744

and here

http://dev.eclipse.org/mhonarc/lists/ecf-dev/msg08047.html

The issue is, that in our setup, the service matching is not working when accessing the remote server using a different hostname than the machine uses itself (a little hard to express as non native speaker ;) see ENDPOINT definition below)


Scott's last comment on the problem was to get more information about our use case and environment so I'll try to provide the required information

* we have a lot of clients using remote services from one application server

* we use the ecf generic provider.

* the remote service "discovery" is done by generating an EndpointDescription on client side, as all clients know by configuration which server to speak to. We use something like this to define the service endpoint:

props.put(ENDPOINT_ID, "ecftcp://" + host + ":8889/server");

where host is the hostname or IP address under which the client can access the remote server - which is not necessarily the hostname or IP which is configured at the server itself (which is exactly the issue). So eg. the server is exporting the service under endpoint

ecftcp://myhostname.company.local:8889/server

whereas the client needs to access the server eg. by using

ecftcp://otherhostname.public.net:8889/server or by ecftcp://192.168.0.100:8889/server

as endpoint id.

and even case sensitivity does matter: Some Windows machines (for whatever reason) have hostnames like MYHOSTNAME.company.local. Clients then are required to use the exact hostname with the correct upper/lowercase to access the server.

* the remote services are imported on client side via

remoteServiceAdmin.importService(endpointDescription);

* the remote services are exported on server side using DS with additional properties, like:

@Component(immediate = true, property = {
        "service.exported.interfaces=*",
        "service.exported.configs=ecf.generic.server",
        "ecf.generic.server.port=8889" })
public class MyserviceService implements IMyService {

* on server side we have a custom implementation of IHostContainerSelector which allows us to override

protected IRemoteServiceContainer createRSContainer

to add a custom RegistrySharedObject which customizes error handling ("exception to String serialization")


That's it i think.

So getting rid of the hostname part in the endpoint description and/or  when matching would probably solve the problem...


Thanks for any hints on this issue!

Best regards,

Peter


BTW: the search function of the ecf-dev archive does not seem to work:

http://dev.eclipse.org/mhonarc/lists/ecf-dev/

click on search results in a 404


Back to the top