{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.