

import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.services.Service;
import org.apache.ignite.services.ServiceConfiguration;
import org.apache.ignite.services.ServiceContext;

public class Main {

    public static void main(String[] args) {

        IgniteConfiguration cfg = new IgniteConfiguration();

        ServiceConfiguration svcCfg = new ServiceConfiguration();
        svcCfg.setName("my-service");
        svcCfg.setTotalCount(0);
        svcCfg.setMaxPerNodeCount(1);
        svcCfg.setService(new MyServiceImpl());
        cfg.setServiceConfiguration(svcCfg);

        try (Ignite ignite = Ignition.start(cfg)) {

            ignite.createCache("foo");
            System.out.println("created cache foo");

            ignite.destroyCache("foo");
            System.out.println("destroyed cache foo");
        }

    }

    public static interface MyService extends Service {

        public void foo();

    }

    public static class MyServiceImpl implements MyService {

        private static final long serialVersionUID = 1L;

        @Override
        public void foo() {

        }

        @Override
        public void init(ServiceContext ctx) throws Exception {
            System.out.printf("initialized %s%n", MyServiceImpl.class.getSimpleName());
        }

        @Override
        public void execute(ServiceContext ctx) throws Exception {
            System.out.printf("started %s%n", MyServiceImpl.class.getSimpleName());
        }

        @Override
        public void cancel(ServiceContext ctx) {
            System.out.printf("stopped %s%n", MyServiceImpl.class.getSimpleName());
        }
    }

}
