Vyacheslav, this is exactly what I found. I'm doing [1] (metrics for services) and realized I have to wrap local calls by a proxy. Is it a change of public API and should come with major release only? Or we can declare usage of services without interfaces incorrect? [1] https://issues.apache.org/jira/browse/IGNITE-12464
вт, 25 февр. 2020 г. в 16:17, Vyacheslav Daradur <daradu...@gmail.com>: > {IgniteServices#service(String name)} returns direct reference in the > current implementation. > > So, class casting should work for your example: > ((MyServiceImpl)ignite.services().service(“myService”)).bar(); > > It is safer to use an interface instead of an implementation, there is no > guarantee that in future releases direct link will be returned, a service > instance might be wrapped for monitoring for example. > > > On Tue, Feb 25, 2020 at 4:09 PM Vladimir Steshin <vlads...@gmail.com> > wrote: > >> Vyacheslav, Hi. >> >> I see. But can we consider 'locally deployed service' is a proxy too, not >> direct reference? What if I need to wrap it? This would be local service >> working via proxy or null. >> >> вт, 25 февр. 2020 г. в 16:03, Vyacheslav Daradur <daradu...@gmail.com>: >> >>> Hi, Vladimir >>> >>> The answer is in API docs: "Gets *locally deployed service* with >>> specified name." [1] >>> >>> That means {IgniteServices#service(String name)} returns only locally >>> deployed instance or null. >>> >>> {IgniteServices#serviceProxy(…)} returns proxy to call instances across >>> the cluster. Might be used for load-balancing. >>> >>> [1] >>> https://github.com/apache/ignite/blob/56975c266e7019f307bb9da42333a6db4e47365e/modules/core/src/main/java/org/apache/ignite/IgniteServices.java#L569 >>> >>> On Tue, Feb 25, 2020 at 3:51 PM Vladimir Steshin <vlads...@gmail.com> >>> wrote: >>> >>>> Hello, Igniters. >>>> >>>> Previous e-mail was with wrong topic 'daradu...@gmail.com' :) >>>> >>>> I got a question what exactly IgniteServices#service(String name) is >>>> supposed to return: reference to the object or a proxy for some reason like >>>> IgniteServices#serviceProxy(…)? Vyacheslav D., can you tell me your >>>> opinion? >>>> >>>> public interface MyService { >>>> >>>> public void foo(); >>>> >>>> } >>>> >>>> public class MyServiceImpl implements Service, MyService { >>>> >>>> @Override public void foo(){ … } >>>> >>>> public void bar(){ … }; >>>> >>>> } >>>> >>>> >>>> // Is it required to support >>>> >>>> MyServiceImpl srvc = ignite.services().service(“myService”); >>>> >>>> srvc.foo(); >>>> >>>> srvc.bar(); >>>> >>>> >>>> >>>> // Or is the only correct way: >>>> >>>> MyService srvc = ignite.services().service(“myService”); >>>> >>>> srvc.foo(); >>>> >>>> >>> >>> -- >>> Best Regards, Vyacheslav D. >>> >> > > -- > Best Regards, Vyacheslav D. >