##### General Information

- Overview
- Features
- Specification
- Getting Started
- Howto Build Turbine
- Changes

##### Documentation

- Services
  - Assembler Broker Service
  - Avalon Component Service
  - Crypto Service
  - Cache Service
  - Factory Service
  - Intake Service
  - JSON-RPC Service
  - JSP Service
  - Localization Service
  - MimeType Service
  - Naming Service
  - Parser Service
  - Pool Service
  - Pull Service
  - RunData Service
  - Scheduler Service
  - Security Service
  - Servlet Service
  - Session Service
  - Template Service
  - UI Service
  - Unique ID Service
  - Upload Service
  - Velocity Service
  - XML-RPC Service
  - XSLT Service
- Howtos
- Wiki
- JavaDocs

##### Development

- Proposals
- How To Help
- Todo

##### Project Documentation

- Project Information
- Project Reports

##### Apache

- Apache Website
- License
- How the ASF works
- Sponsorship
- Thanks
- Security

## Turbine Services

Services are singletons within the Turbine Framework which have pluggable implementation, and are capable of participating in the Turbine startup and shutdown. As Services are Singletons, there is only one instance of each service in the system. Memory or connections are allocated once only and the internal state is common to all requesting clients. Services can access ServletConfig at system startup time to process relative paths and similar functionality, they can also access RunData on the first Turbine doGet execution to get the environment Turbine is operating under and with. Services can also initialize themselves before they are requested by the client for the first time. A Service that is never used will not allocate resources to itself. A Service can also execute actions upon the system being shutdown, such as closing open connections. The Singleton pattern also allows for the Services to be accessed from anywhere within your code.

The Life Cycle of a Service begins with the Services constructor. A Service does not do much in it's constructor. Especially it should not allocate any costly resources like large memory structure, DB or Network connections, etc. The Service may be in the properties file, but unless a client using the application needs the Service in question, there is no point starting the Service.

The services available with Turbine can be found in the org.apache.turbine.services package.

- Assembler Broker Service
  Is the Service which allows assemblers such as Screens, Actions, Layout and Scheduled Jobs to be loaded.
- Avalon Component Service
  Initializes external components which implement the Avalon lifecycle interface, e.g. Torque or other Avalon Services.
- JSON-RPC Service
  The JSON-RPC Service supports JavaScript to Java AJAX communications using JSON-RPC-Java.
- JSP Service
  The JSP Service is the set of classes that process JSP files inside the Turbine Layout/Navigations and Screen structure.
- Naming Service
  Provides JNDI naming contexts.
- Pull Service
  Manages the creation of application tools that are available to all templates in a Turbine application. The tools can have global scope, request scope, session scope or persistant scope within your application.
- RunData Service
  Is the Service which manages the higher level operations surrounding requests and responses.
- Scheduler Service
  This service manages the schedule queue giving Cron like functionality. The ScheduledJob can be stored in a database or a properties file.
- Security Service
  A service for the management of Users, Groups, Roles and Permissions in the system, allowing for those Objects to interact with either Database or LDAP backends. The service also allows for the security to be managed without a backend.
- Servlet Service
  Encapsulates the information provided by the ServletContext API, and makes it available from anywhere in the code.
- Session Service
  Provides access to Session information for the current web context.
- Template Service
  The Service for the mapping of templates to their screens and actions.
- UI Service
  The UI (User Interface) Service provides for application skinning.
- Unique ID Service
  Allows for the creation of Context unique and pseudo random identifiers.
- Velocity Service
  The Velocity Service supports the rendering of Velocity templates.

For more information on the Services Package, view the package.html Package Documentation in the Javadocs or in Turbine CVS.

## Avalon Services

Turbine supports different types of component models. Turbine Services can implement TurbineServiceProvider to add component managers to the service repository. By default, Turbine comes with an Avalon component manager for these purposes.

- Crypto Service
  Provides encryption algorithms like MD5 and SHA message digests as well as old-fashioned Unix crypt.
- Cache Service
  Provides different cache implementations for non-persistent Object Storage within your application.
- Factory Service
  A Service for the instantiation of objects with either the specified loaders or default class loaders.
- Intake Service
  A service that provides input validation along with a standard parameter naming framework.
- Localization Service
  The single point of access to all localization resources.
- MimeType Service
  The service maintains the mappings between MIME types and corresponding file name extensions as well as between locales and character encoding.
- Parser Service
  A service for the management of various parser objects such as ParameterParsers, CookieParsers, CSVParsers and their common settings.
- Pool Service
  A service for the pooling of instantiated Objects, allowing for the recycling and disposal of Objects in the pool.
- Upload Service
  This service manages multipart/form-data POST requests, storing them temporarily in memory or locally. The resultant Objects can be manipulated through a FileItem Object.
- XML-RPC Service
  This service manages xml-rpc calls to a remote Server.
- XSLT Service
  The service which is used to transform XML with an XSLT stylesheet.