Note
This documentation is for OMERO 5.2. This version is now in maintenance mode and will only be updated in the event of critical bugs or security concerns. OMERO 5.3 is expected before the end of 2016.
Overview
These instructions are for core developers only and may be slightly out of date. They will eventually be revised, but if you are looking for general instructions on extending OMERO with a service, see Extending OMERO.server. If you would indeed like to create a core service, please contact the ome-devel mailing list
To fulfill #306, r905 provides all the classes and modifications needed to create a new stateless service (where this varies from stateful services is also detailed). In brief, a service provider must create an interface, an implementation of that interface, a Spring configuration file, as well as modify the server configuration and the central service factory (These last two points stand to change with #314).
Note
With the creation of OMERO.blitz, there are several other locations which need to be modified. These are also listed below.
components/server/resources/beanRefContext.xml
tests only the implementation without a container.
blitz: Currently, testing blitz is outside the scope of this document.
Several services implement a server-side subclass of the ome.api interface rather than the interface itself. These interfaces are typically in ome.api.local. Such local interfaces can provide methods that should not be made available to clients, but which are needed within the server. Though not currently used, the @Local() annotation on the implementation can list the local interface for future use. See UpdateImpl for an example.
Currently all stateful services are in their own component (components/rendering and components/romio) but their interface will still need to be under components/common for them to be accessible to clients. To be done.