The basic requirement for a service is to implement the marker interface
org.hibernate.service.Service. Hibernate uses this internally for some basic type safety.
Optionally, the service can also implement the
org.hibernate.service.spi.Stoppable interfaces to receive notifications of being started and stopped. Another optional service contract is
org.hibernate.service.spi.Manageable which marks the service as manageable in JMX provided the JMX integration is enabled.