--- title: Plugin Services --- The *IntelliJ Platform* provides the concept of _services_. A _service_ is a plugin component loaded on demand, when your plugin calls the `getService` method of the [ServiceManager](https://upsource.jetbrains.com/idea-community/file/1731d054af4ca27aa827c03929e27eeb0e6a8366/platform/core-api/src/com/intellij/openapi/components/ServiceManager.java) class. The *IntelliJ Platform* ensures that only one instance of a service is loaded even though the service is called several times. A service must have the interface and implementation classes specified in the `plugin.xml` file. The service implementation class is used for service instantiation. The *IntelliJ Platform* offers three types of services: _application level_ services, _project level_ services and _module level_ services. ## How to Declare a Service? To declare a service, you can use the following extension points in the IDEA core: * `applicationService`: designed to declare an application level service. * `projectService`: designed to declare a project level service. * `moduleService`: designed to declare a module level service. **To declare a service:** 1. Add the appropriate child element (``, `` or ``) to the `` section of the plugin.xml file. 2. For the newly added child element, set the following attributes: * `serviceInterface`: specifies the service interface class. * `serviceImplementation`: specifies the service implementation class. Note that the interface and implementation classes can be the same. To clarify the service declaration procedure, consider the following fragment of the `plugin.xml` file: ```xml ``` ## Retrieving a service To instantiate your service, in Java code, use the following syntax: ```java MyServiceImplClass service = ServiceManager.getService(MyServiceImplClass.class); ``` ### Sample Plugin This section allows you to download and install a sample plugin illustrating how to create and use a plugin service. This plugin has a project component implementing a service that counts the number of currently opened projects in *IntelliJ IDEA*. If this number exceeds the maximum allowed number of simultaneously opened projects, the plugin returns an error message and closes the most recently opened project. **To install and run the sample plugin** * Click [here](/attachments/MaxOpenedProjects.zip) to download the .Zip archive that contains the sample plugin project. * Extract all files from the .Zip archive to a separate folder. * Start *IntelliJ IDEA*, on the starting page, click *Open Project*, and then use the *Open Project* dialog box to open the downloaded project *MaxOpenedProjects*. * On the main menu, choose *Run \| Run* or press Shift+F10. * If necessary, change the [Run/Debug Configurations](http://www.jetbrains.com/idea/help/run-debug-configuration-plugin.html).