org.apache.xmlrpc.server

Interface RequestProcessorFactoryFactory

public interface RequestProcessorFactoryFactory

The request processor is the object, which is actually performing the request. There is nothing magic about the request processor: It may very well be a POJO. The RequestProcessorFactoryFactory is passed to the AbstractReflectiveHandlerMapping at startup. The mapping uses this factory to create instances of RequestProcessorFactory, which are used to initialize the ReflectiveXmlRpcHandler. The handler in turn uses its factory to create the actual request processor when a request comes in.

However, the question arises, when and how the request processor is created and whether it needs request specific initialization. The RequestProcessorFactoryFactory is an object, which makes that logic pluggable. Unfortunately, we aren't done with a single factory: We even need a factory for factories. The rationale is best explained by looking at the different use cases and how to implement them.

The default RequestProcessorFactoryFactory is the RequestSpecificProcessorFactoryFactory. It creates a new processor instance for any request. In other words, it allows to request processor to have some state. This is fine, if the request processor is a lightweight object or needs request specific initialization. In this case, the actual request processor is created and invoked when calling getRequestProcessor.

An alternative implementation is the StatelessProcessorFactoryFactory, which may be used to create stateless request processors. Stateless request processors are typically heavyweight objects, which have an expensive initialization phase. The processor factory, which is created by RequestProcessorFactoryFactory contains an initialized singleton, which is returned by getRequestProcessor.

Other alternatives might be a RequestProcessorFactoryFactory, which maintains a pool of RequestProcessorFactory instances. The instances are configured by calling getRequestProcessor.

Nested Class Summary
static interfaceRequestProcessorFactoryFactory.RequestProcessorFactory
This is the factory for request processors.
static classRequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory
This is the default implementation of RequestProcessorFactoryFactory.
static classRequestProcessorFactoryFactory.StatelessProcessorFactoryFactory
This is an alternative implementation of RequestProcessorFactoryFactory.
Method Summary
RequestProcessorFactoryFactory.RequestProcessorFactorygetRequestProcessorFactory(Class pClass)
This method is invoked at startup.

Method Detail

getRequestProcessorFactory

public RequestProcessorFactoryFactory.RequestProcessorFactory getRequestProcessorFactory(Class pClass)
This method is invoked at startup. It creates a factory for instances of pClass.
Copyright © 2001-2007 Apache Software Foundation. All Rights Reserved.