Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.xmlrpc.server
Interface RequestProcessorFactoryFactory

All Known Implementing Classes:
  RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory, RequestProcessorFactoryFactory.StatelessProcessorFactoryFactory

    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 `RequestProcessorFactoryFactory.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 `RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory`. It creates a new processor instance for any request. In other words, it allows the 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 `RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest)`.

An alternative implementation is the `RequestProcessorFactoryFactory.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 `getRequestProcessorFactory(Class pClass)` contains an initialized singleton, which is returned by `RequestProcessorFactoryFactory.RequestProcessorFactory.getRequestProcessor(XmlRpcRequest)`.

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

Nested Class Summary
`static interface` | `RequestProcessorFactoryFactory.RequestProcessorFactory` This is the factory for request processors.
`static class` | `RequestProcessorFactoryFactory.RequestSpecificProcessorFactoryFactory` This is the default implementation of `RequestProcessorFactoryFactory`.
`static class` | `RequestProcessorFactoryFactory.StatelessProcessorFactoryFactory` This is an alternative implementation of `RequestProcessorFactoryFactory`.

Method Summary
`RequestProcessorFactoryFactory.RequestProcessorFactory` | `getRequestProcessorFactory(java.lang.Class pClass)` This method is invoked at startup.

Method Detail

### getRequestProcessorFactory

    RequestProcessorFactoryFactory.RequestProcessorFactory getRequestProcessorFactory(java.lang.Class pClass)
                                                                                      throws XmlRpcException

  This method is invoked at startup. It creates a factory for instances of `pClass`.

  Throws:
    `XmlRpcException`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2010 The Apache Software Foundation. All Rights Reserved.