How To

How to write my own service?

  • Write your service interface and implementation using the Avalon Lifecycle interfaces.
  • Add an entry to the role configuration file. This entry contains the information how YAAFI can instantiate and access the service
  • Add an entry to the component configurating file if you need to configure your service.

How can I embed YAAFI in an application?

The embedding is done by creating a YAAFI instance using the ServiceContainerFactory.create() method. Technically there are two ways to create a YAAFI container

  • Provide all paramters by the caller
  • Use a containerConfiguration.xml

The following example creates a fully initialized and running YAAFI container with the given configuration parameters using a LOG4J logger.

Logger logger = new Log4JLogger( org.apache.log4j.Logger.getLogger("YAAFI");
ServiceContainer container = null;
ServiceContainerConfiguration config = new ServiceContainerConfiguration();
config.setLogger( logger );
config.setComponentRolesLocation( "./src/test/TestRoleConfig.xml" );
config.setComponentConfigurationLocation( "./src/test/TestComponentConfig.xml" );
config.setParametersLocation( "./src/test/TestParameters.properties" );
container = ServiceContainerFactory.create( config );
        

The following example uses a XML file to initialize the YAAFI container

ServiceContainer container = null;
ServiceContainerConfiguration config = new ServiceContainerConfiguration();
config.setContainerConfiguration( "./src/test/TestContainerConfig.xml", false );
container = ServiceContainerFactory.create( config );
        

At the end of day you have to terminate YAAFI

ServiceContainerFactory.dispose(container);
        

How can I embed YAAFI into Turbine?

In the 'contrib' directory there is a ready-to-use Turbine service which needs the following configuration (for Turbine 2.2)

services.YaafiComponentService.classname=org.apache.turbine.services.yafficomponent.TurbineYaafiComponentService
services.YaafiComponentService.componentRoles=./conf/componentRoles.xml
services.YaafiComponentService.componentConfiguration=./conf/componentConfiguration.xml
services.YaafiComponentService.parameters=